mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-08-27 20:40:13 +03:00
416 lines
3.5 MiB
416 lines
3.5 MiB
import{$ as ql,$a as M5,$b as no,$c as os,$d as Dr,$e as al,A as lo,Aa as Lt,Ab as Xe,Ac as io,Ad as Oi,Ae as _R,Af as Ri,B as ua,Ba as Ql,Bb as Xi,Bc as B5,Bd as rR,Be as Cm,Bf as yi,C as Ma,Ca as wh,Cb as j,Cc as V5,Cd as Ah,Ce as $C,Cf as DR,D as _C,Da as vE,Db as No,Dc as $_,Dd as ol,De as vR,Df as PR,E as Dn,Ea as y5,Eb as v,Ec as z5,Ed as NC,Ee as ME,Ef as Bo,F as Pn,Fa as xd,Fb as MC,Fc as yc,Fd as rs,Fe as HC,Ff as Vo,G as vC,Ga as Zp,Gb as b,Gc as j5,Gd as Fs,Ge as bR,Gf as IR,H as hi,Ha as $a,Hb as En,Hc as Zi,Hd as cr,He as UC,Hf as AR,I as _E,Ia as yC,Ib as Yt,Ic as $5,Id as Oh,Ie as kE,If as OR,J as dm,Ja as S5,Jb as $i,Jc as H5,Jd as RC,Je as Jl,Jf as mo,K as h5,Ka as br,Kb as gn,Kc as pm,Kd as fm,Ke as GC,Kf as ea,L as wi,La as Mh,Lb as gt,Lc as H_,Ld as gm,Le as Qi,Lf as xm,M as f5,Ma as u,Mb as _t,Mc as Jr,Md as aR,Me as CR,Mf as Fi,N as g5,Na as bE,Nb as tn,Nc as U5,Nd as FC,Ne as as,Nf as ym,O as V_,Oa as ar,Ob as nn,Oc as DC,Od as _m,Oe as WC,Of as dr,P as bC,Pa as So,Pb as Re,Pc as Z,Pd as vm,Pe as yr,Pf as ci,Q as Cd,Qa as yd,Qb as yn,Qc as Rs,Qd as rl,Qe as ss,Qf as NR,R as z_,Ra as ii,Rb as je,Rc as yE,Rd as sR,Re as Kt,S as CC,Sa as st,Sb as Mo,Sc as G5,Sd as Zl,Se as Gt,T as As,Ta as SC,Tb as d,Tc as W5,Td as vt,Te as Ai,U as Kp,Ua as co,Ub as U,Uc as PC,Ud as LC,Ue as xR,V as li,Va as w5,Vb as X,Vc as Ph,Vd as be,Ve as an,W as fn,Wa as wC,Wb as Hi,Wc as q5,Wd as lR,We as Lh,X as rt,Xa as L,Xb as kC,Xc as X5,Xd as BC,Xe as ha,Y as vi,Ya as Bt,Yb as Th,Yc as SE,Yd as mt,Ye as lt,Z as vn,Za as ft,Zb as Eh,Zc as Q5,Zd as He,Ze as Ni,_ as _5,_a as Cr,_b as Dh,_c as Y5,_d as VC,_e as qC,a as H,aa as Q,ab as xn,ac as j_,ad as K5,ae as Ci,af as Fo,b as tt,ba as Ft,bb as Ae,bc as hn,bd as um,be as Nh,bf as XC,c as d5,ca as v5,cb as kh,cc as Jt,cd as Z5,ce as re,cf as Bh,d as Is,da as kt,db as k5,dc as ln,dd as lr,de as cR,df as ke,e as On,ea as ge,eb as T5,ec as il,ed as IC,ee as Ue,ef as Me,f as nl,fa as f,fb as E5,fc as TC,fd as hm,fe as xi,ff as kd,g as so,ga as b5,gb as CE,gc as EC,gd as eu,ge as bm,gf as QC,h as m5,ha as Xl,hb as D5,hc as on,hd as Go,he as dR,hf as yR,i as _r,ia as Os,ib as xE,ic as oi,id as AC,ie as mR,if as SR,j as Le,ja as D,jb as P5,jc as $r,jd as OC,je as bt,jf as wR,k as qt,ka as P,kb as It,kc as A5,kd as U_,ke as pt,kf as MR,l as bd,la as Vn,lb as A,lc as Jp,ld as J5,le as Sc,lf as St,m as p5,ma as vr,mb as I5,mc as O5,md as Yl,me as Ro,mf as kR,n as yh,na as Di,nb as O,nc as N5,nd as Ta,ne as pR,nf as TR,o as Zr,oa as Pi,ob as Ii,oc as sr,od as Hr,oe as zC,of as Jo,p as or,pa as mm,pb as Fe,pc as ri,pd as wn,pe as jt,pf as At,q as xt,qa as C5,qb as J,qc as R5,qd as Kl,qe as nt,qf as Mt,r as zi,ra as ve,rb as ee,rc as ka,rd as Ih,re as ct,rf as Lo,s as cm,sa as bi,sb as x,sc as F5,sd as eR,se as xr,sf as wc,t as u5,ta as Sh,tb as s,tc as oe,td as tR,te as jC,tf as Vh,u as yt,ua as xC,ub as l,uc as Ut,ud as nR,ue as Rh,uf as TE,v as rr,va as me,vb as F,vc as L5,vd as wE,ve as Fh,vf as ls,w as Er,wa as Ns,wb as _o,wc as ae,wd,we as uR,wf as Ea,x as L_,xa as un,xb as wo,xc as K,xd as iR,xe as hR,xf as YC,y as B_,ya as fi,yb as jr,yc as Sd,yd as Md,ye as fR,yf as Mc,z as xc,za as x5,zb as qe,zc as dt,zd as oR,ze as gR,zf as ER}from"./chunk-UKWNOQKZ.js";var BV=Is((Frt,US)=>{(function(t,i,e){if(!t)return;for(var n={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},o={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},r={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},a={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},c,m=1;m<20;++m)n[111+m]="f"+m;for(m=0;m<=9;++m)n[m+96]=m.toString();function p(T,R,W){if(T.addEventListener){T.addEventListener(R,W,!1);return}T.attachEvent("on"+R,W)}function h(T){if(T.type=="keypress"){var R=String.fromCharCode(T.which);return T.shiftKey||(R=R.toLowerCase()),R}return n[T.which]?n[T.which]:o[T.which]?o[T.which]:String.fromCharCode(T.which).toLowerCase()}function g(T,R){return T.sort().join(",")===R.sort().join(",")}function M(T){var R=[];return T.shiftKey&&R.push("shift"),T.altKey&&R.push("alt"),T.ctrlKey&&R.push("ctrl"),T.metaKey&&R.push("meta"),R}function C(T){if(T.preventDefault){T.preventDefault();return}T.returnValue=!1}function _(T){if(T.stopPropagation){T.stopPropagation();return}T.cancelBubble=!0}function w(T){return T=="shift"||T=="ctrl"||T=="alt"||T=="meta"}function S(){if(!c){c={};for(var T in n)T>95&&T<112||n.hasOwnProperty(T)&&(c[n[T]]=T)}return c}function y(T,R,W){return W||(W=S()[T]?"keydown":"keypress"),W=="keypress"&&R.length&&(W="keydown"),W}function k(T){return T==="+"?["+"]:(T=T.replace(/\+{2}/g,"+plus"),T.split("+"))}function I(T,R){var W,pe,_e,G=[];for(W=k(T),_e=0;_e<W.length;++_e)pe=W[_e],a[pe]&&(pe=a[pe]),R&&R!="keypress"&&r[pe]&&(pe=r[pe],G.push("shift")),w(pe)&&G.push(pe);return R=y(pe,G,R),{key:pe,modifiers:G,action:R}}function E(T,R){return T===null||T===i?!1:T===R?!0:E(T.parentNode,R)}function N(T){var R=this;if(T=T||i,!(R instanceof N))return new N(T);R.target=T,R._callbacks={},R._directMap={};var W={},pe,_e=!1,G=!1,ue=!1;function ye(ie){ie=ie||{};var De=!1,$e;for($e in W){if(ie[$e]){De=!0;continue}W[$e]=0}De||(ue=!1)}function ce(ie,De,$e,it,et,Se){var q,Oe,Ke=[],Ct=$e.type;if(!R._callbacks[ie])return[];for(Ct=="keyup"&&w(ie)&&(De=[ie]),q=0;q<R._callbacks[ie].length;++q)if(Oe=R._callbacks[ie][q],!(!it&&Oe.seq&&W[Oe.seq]!=Oe.level)&&Ct==Oe.action&&(Ct=="keypress"&&!$e.metaKey&&!$e.ctrlKey||g(De,Oe.modifiers))){var Rt=!it&&Oe.combo==et,ni=it&&Oe.seq==it&&Oe.level==Se;(Rt||ni)&&R._callbacks[ie].splice(q,1),Ke.push(Oe)}return Ke}function Ie(ie,De,$e,it){R.stopCallback(De,De.target||De.srcElement,$e,it)||ie(De,$e)===!1&&(C(De),_(De))}R._handleKey=function(ie,De,$e){var it=ce(ie,De,$e),et,Se={},q=0,Oe=!1;for(et=0;et<it.length;++et)it[et].seq&&(q=Math.max(q,it[et].level));for(et=0;et<it.length;++et){if(it[et].seq){if(it[et].level!=q)continue;Oe=!0,Se[it[et].seq]=1,Ie(it[et].callback,$e,it[et].combo,it[et].seq);continue}Oe||Ie(it[et].callback,$e,it[et].combo)}var Ke=$e.type=="keypress"&&G;$e.type==ue&&!w(ie)&&!Ke&&ye(Se),G=Oe&&$e.type=="keydown"};function de(ie){typeof ie.which!="number"&&(ie.which=ie.keyCode);var De=h(ie);if(De){if(ie.type=="keyup"&&_e===De){_e=!1;return}R.handleKey(De,M(ie),ie)}}function V(){clearTimeout(pe),pe=setTimeout(ye,1e3)}function Y(ie,De,$e,it){W[ie]=0;function et(Ct){return function(){ue=Ct,++W[ie],V()}}function Se(Ct){Ie($e,Ct,ie),it!=="keyup"&&(_e=h(Ct)),setTimeout(ye,10)}for(var q=0;q<De.length;++q){var Oe=q+1===De.length,Ke=Oe?Se:et(it||I(De[q+1]).action);ne(De[q],Ke,it,ie,q)}}function ne(ie,De,$e,it,et){R._directMap[ie+":"+$e]=De,ie=ie.replace(/\s+/g," ");var Se=ie.split(" "),q;if(Se.length>1){Y(ie,Se,De,$e);return}q=I(ie,$e),R._callbacks[q.key]=R._callbacks[q.key]||[],ce(q.key,q.modifiers,{type:q.action},it,ie,et),R._callbacks[q.key][it?"unshift":"push"]({callback:De,modifiers:q.modifiers,action:q.action,seq:it,level:et,combo:ie})}R._bindMultiple=function(ie,De,$e){for(var it=0;it<ie.length;++it)ne(ie[it],De,$e)},p(T,"keypress",de),p(T,"keydown",de),p(T,"keyup",de)}N.prototype.bind=function(T,R,W){var pe=this;return T=T instanceof Array?T:[T],pe._bindMultiple.call(pe,T,R,W),pe},N.prototype.unbind=function(T,R){var W=this;return W.bind.call(W,T,function(){},R)},N.prototype.trigger=function(T,R){var W=this;return W._directMap[T+":"+R]&&W._directMap[T+":"+R]({},T),W},N.prototype.reset=function(){var T=this;return T._callbacks={},T._directMap={},T},N.prototype.stopCallback=function(T,R){var W=this;if((" "+R.className+" ").indexOf(" mousetrap ")>-1||E(R,W.target))return!1;if("composedPath"in T&&typeof T.composedPath=="function"){var pe=T.composedPath()[0];pe!==T.target&&(R=pe)}return R.tagName=="INPUT"||R.tagName=="SELECT"||R.tagName=="TEXTAREA"||R.isContentEditable},N.prototype.handleKey=function(){var T=this;return T._handleKey.apply(T,arguments)},N.addKeycodes=function(T){for(var R in T)T.hasOwnProperty(R)&&(n[R]=T[R]);c=null},N.init=function(){var T=N(i);for(var R in T)R.charAt(0)!=="_"&&(N[R]=(function(W){return function(){return T[W].apply(T,arguments)}})(R))},N.init(),t.Mousetrap=N,typeof US<"u"&&US.exports&&(US.exports=N),typeof define=="function"&&define.amd&&define(function(){return N})})(typeof window<"u"?window:null,typeof window<"u"?document:null)});var zz=Is(SA=>{var Vz="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");SA.encode=function(t){if(0<=t&&t<Vz.length)return Vz[t];throw new TypeError("Must be between 0 and 63: "+t)};SA.decode=function(t){var i=65,e=90,n=97,o=122,r=48,a=57,c=43,m=47,p=26,h=52;return i<=t&&t<=e?t-i:n<=t&&t<=o?t-n+p:r<=t&&t<=a?t-r+h:t==c?62:t==m?63:-1}});var Gz=Is(MA=>{var jz=zz(),wA=5,$z=1<<wA,Hz=$z-1,Uz=$z;function Lfe(t){return t<0?(-t<<1)+1:(t<<1)+0}function Bfe(t){var i=(t&1)===1,e=t>>1;return i?-e:e}MA.encode=function(i){var e="",n,o=Lfe(i);do n=o&Hz,o>>>=wA,o>0&&(n|=Uz),e+=jz.encode(n);while(o>0);return e};MA.decode=function(i,e,n){var o=i.length,r=0,a=0,c,m;do{if(e>=o)throw new Error("Expected more digits in base 64 VLQ value.");if(m=jz.decode(i.charCodeAt(e++)),m===-1)throw new Error("Invalid base64 digit: "+i.charAt(e-1));c=!!(m&Uz),m&=Hz,r=r+(m<<a),a+=wA}while(c);n.value=Bfe(r),n.rest=e}});var cw=Is(la=>{function Vfe(t,i,e){if(i in t)return t[i];if(arguments.length===3)return e;throw new Error('"'+i+'" is a required argument.')}la.getArg=Vfe;var Wz=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,zfe=/^data:.+\,.+$/;function _b(t){var i=t.match(Wz);return i?{scheme:i[1],auth:i[2],host:i[3],port:i[4],path:i[5]}:null}la.urlParse=_b;function fg(t){var i="";return t.scheme&&(i+=t.scheme+":"),i+="//",t.auth&&(i+=t.auth+"@"),t.host&&(i+=t.host),t.port&&(i+=":"+t.port),t.path&&(i+=t.path),i}la.urlGenerate=fg;var jfe=32;function $fe(t){var i=[];return function(e){for(var n=0;n<i.length;n++)if(i[n].input===e){var o=i[0];return i[0]=i[n],i[n]=o,i[0].result}var r=t(e);return i.unshift({input:e,result:r}),i.length>jfe&&i.pop(),r}}var kA=$fe(function(i){var e=i,n=_b(i);if(n){if(!n.path)return i;e=n.path}for(var o=la.isAbsolute(e),r=[],a=0,c=0;;)if(a=c,c=e.indexOf("/",a),c===-1){r.push(e.slice(a));break}else for(r.push(e.slice(a,c));c<e.length&&e[c]==="/";)c++;for(var m,p=0,c=r.length-1;c>=0;c--)m=r[c],m==="."?r.splice(c,1):m===".."?p++:p>0&&(m===""?(r.splice(c+1,p),p=0):(r.splice(c,2),p--));return e=r.join("/"),e===""&&(e=o?"/":"."),n?(n.path=e,fg(n)):e});la.normalize=kA;function qz(t,i){t===""&&(t="."),i===""&&(i=".");var e=_b(i),n=_b(t);if(n&&(t=n.path||"/"),e&&!e.scheme)return n&&(e.scheme=n.scheme),fg(e);if(e||i.match(zfe))return i;if(n&&!n.host&&!n.path)return n.host=i,fg(n);var o=i.charAt(0)==="/"?i:kA(t.replace(/\/+$/,"")+"/"+i);return n?(n.path=o,fg(n)):o}la.join=qz;la.isAbsolute=function(t){return t.charAt(0)==="/"||Wz.test(t)};function Hfe(t,i){t===""&&(t="."),t=t.replace(/\/$/,"");for(var e=0;i.indexOf(t+"/")!==0;){var n=t.lastIndexOf("/");if(n<0||(t=t.slice(0,n),t.match(/^([^\/]+:\/)?\/*$/)))return i;++e}return Array(e+1).join("../")+i.substr(t.length+1)}la.relative=Hfe;var Xz=(function(){var t=Object.create(null);return!("__proto__"in t)})();function Qz(t){return t}function Ufe(t){return Yz(t)?"$"+t:t}la.toSetString=Xz?Qz:Ufe;function Gfe(t){return Yz(t)?t.slice(1):t}la.fromSetString=Xz?Qz:Gfe;function Yz(t){if(!t)return!1;var i=t.length;if(i<9||t.charCodeAt(i-1)!==95||t.charCodeAt(i-2)!==95||t.charCodeAt(i-3)!==111||t.charCodeAt(i-4)!==116||t.charCodeAt(i-5)!==111||t.charCodeAt(i-6)!==114||t.charCodeAt(i-7)!==112||t.charCodeAt(i-8)!==95||t.charCodeAt(i-9)!==95)return!1;for(var e=i-10;e>=0;e--)if(t.charCodeAt(e)!==36)return!1;return!0}function Wfe(t,i,e){var n=Kd(t.source,i.source);return n!==0||(n=t.originalLine-i.originalLine,n!==0)||(n=t.originalColumn-i.originalColumn,n!==0||e)||(n=t.generatedColumn-i.generatedColumn,n!==0)||(n=t.generatedLine-i.generatedLine,n!==0)?n:Kd(t.name,i.name)}la.compareByOriginalPositions=Wfe;function qfe(t,i,e){var n;return n=t.originalLine-i.originalLine,n!==0||(n=t.originalColumn-i.originalColumn,n!==0||e)||(n=t.generatedColumn-i.generatedColumn,n!==0)||(n=t.generatedLine-i.generatedLine,n!==0)?n:Kd(t.name,i.name)}la.compareByOriginalPositionsNoSource=qfe;function Xfe(t,i,e){var n=t.generatedLine-i.generatedLine;return n!==0||(n=t.generatedColumn-i.generatedColumn,n!==0||e)||(n=Kd(t.source,i.source),n!==0)||(n=t.originalLine-i.originalLine,n!==0)||(n=t.originalColumn-i.originalColumn,n!==0)?n:Kd(t.name,i.name)}la.compareByGeneratedPositionsDeflated=Xfe;function Qfe(t,i,e){var n=t.generatedColumn-i.generatedColumn;return n!==0||e||(n=Kd(t.source,i.source),n!==0)||(n=t.originalLine-i.originalLine,n!==0)||(n=t.originalColumn-i.originalColumn,n!==0)?n:Kd(t.name,i.name)}la.compareByGeneratedPositionsDeflatedNoLine=Qfe;function Kd(t,i){return t===i?0:t===null?1:i===null?-1:t>i?1:-1}function Yfe(t,i){var e=t.generatedLine-i.generatedLine;return e!==0||(e=t.generatedColumn-i.generatedColumn,e!==0)||(e=Kd(t.source,i.source),e!==0)||(e=t.originalLine-i.originalLine,e!==0)||(e=t.originalColumn-i.originalColumn,e!==0)?e:Kd(t.name,i.name)}la.compareByGeneratedPositionsInflated=Yfe;function Kfe(t){return JSON.parse(t.replace(/^\)]}'[^\n]*\n/,""))}la.parseSourceMapInput=Kfe;function Zfe(t,i,e){if(i=i||"",t&&(t[t.length-1]!=="/"&&i[0]!=="/"&&(t+="/"),i=t+i),e){var n=_b(e);if(!n)throw new Error("sourceMapURL could not be parsed");if(n.path){var o=n.path.lastIndexOf("/");o>=0&&(n.path=n.path.substring(0,o+1))}i=qz(fg(n),i)}return kA(i)}la.computeSourceURL=Zfe});var Zz=Is(Kz=>{var TA=cw(),EA=Object.prototype.hasOwnProperty,th=typeof Map<"u";function Zd(){this._array=[],this._set=th?new Map:Object.create(null)}Zd.fromArray=function(i,e){for(var n=new Zd,o=0,r=i.length;o<r;o++)n.add(i[o],e);return n};Zd.prototype.size=function(){return th?this._set.size:Object.getOwnPropertyNames(this._set).length};Zd.prototype.add=function(i,e){var n=th?i:TA.toSetString(i),o=th?this.has(i):EA.call(this._set,n),r=this._array.length;(!o||e)&&this._array.push(i),o||(th?this._set.set(i,r):this._set[n]=r)};Zd.prototype.has=function(i){if(th)return this._set.has(i);var e=TA.toSetString(i);return EA.call(this._set,e)};Zd.prototype.indexOf=function(i){if(th){var e=this._set.get(i);if(e>=0)return e}else{var n=TA.toSetString(i);if(EA.call(this._set,n))return this._set[n]}throw new Error('"'+i+'" is not in the set.')};Zd.prototype.at=function(i){if(i>=0&&i<this._array.length)return this._array[i];throw new Error("No element indexed by "+i)};Zd.prototype.toArray=function(){return this._array.slice()};Kz.ArraySet=Zd});var tj=Is(ej=>{var Jz=cw();function Jfe(t,i){var e=t.generatedLine,n=i.generatedLine,o=t.generatedColumn,r=i.generatedColumn;return n>e||n==e&&r>=o||Jz.compareByGeneratedPositionsInflated(t,i)<=0}function dw(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}dw.prototype.unsortedForEach=function(i,e){this._array.forEach(i,e)};dw.prototype.add=function(i){Jfe(this._last,i)?(this._last=i,this._array.push(i)):(this._sorted=!1,this._array.push(i))};dw.prototype.toArray=function(){return this._sorted||(this._array.sort(Jz.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};ej.MappingList=dw});var ij=Is(nj=>{var vb=Gz(),kr=cw(),mw=Zz().ArraySet,ege=tj().MappingList;function Rl(t){t||(t={}),this._file=kr.getArg(t,"file",null),this._sourceRoot=kr.getArg(t,"sourceRoot",null),this._skipValidation=kr.getArg(t,"skipValidation",!1),this._ignoreInvalidMapping=kr.getArg(t,"ignoreInvalidMapping",!1),this._sources=new mw,this._names=new mw,this._mappings=new ege,this._sourcesContents=null}Rl.prototype._version=3;Rl.fromSourceMap=function(i,e){var n=i.sourceRoot,o=new Rl(Object.assign(e||{},{file:i.file,sourceRoot:n}));return i.eachMapping(function(r){var a={generated:{line:r.generatedLine,column:r.generatedColumn}};r.source!=null&&(a.source=r.source,n!=null&&(a.source=kr.relative(n,a.source)),a.original={line:r.originalLine,column:r.originalColumn},r.name!=null&&(a.name=r.name)),o.addMapping(a)}),i.sources.forEach(function(r){var a=r;n!==null&&(a=kr.relative(n,r)),o._sources.has(a)||o._sources.add(a);var c=i.sourceContentFor(r);c!=null&&o.setSourceContent(r,c)}),o};Rl.prototype.addMapping=function(i){var e=kr.getArg(i,"generated"),n=kr.getArg(i,"original",null),o=kr.getArg(i,"source",null),r=kr.getArg(i,"name",null);!this._skipValidation&&this._validateMapping(e,n,o,r)===!1||(o!=null&&(o=String(o),this._sources.has(o)||this._sources.add(o)),r!=null&&(r=String(r),this._names.has(r)||this._names.add(r)),this._mappings.add({generatedLine:e.line,generatedColumn:e.column,originalLine:n!=null&&n.line,originalColumn:n!=null&&n.column,source:o,name:r}))};Rl.prototype.setSourceContent=function(i,e){var n=i;this._sourceRoot!=null&&(n=kr.relative(this._sourceRoot,n)),e!=null?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[kr.toSetString(n)]=e):this._sourcesContents&&(delete this._sourcesContents[kr.toSetString(n)],Object.keys(this._sourcesContents).length===0&&(this._sourcesContents=null))};Rl.prototype.applySourceMap=function(i,e,n){var o=e;if(e==null){if(i.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.`);o=i.file}var r=this._sourceRoot;r!=null&&(o=kr.relative(r,o));var a=new mw,c=new mw;this._mappings.unsortedForEach(function(m){if(m.source===o&&m.originalLine!=null){var p=i.originalPositionFor({line:m.originalLine,column:m.originalColumn});p.source!=null&&(m.source=p.source,n!=null&&(m.source=kr.join(n,m.source)),r!=null&&(m.source=kr.relative(r,m.source)),m.originalLine=p.line,m.originalColumn=p.column,p.name!=null&&(m.name=p.name))}var h=m.source;h!=null&&!a.has(h)&&a.add(h);var g=m.name;g!=null&&!c.has(g)&&c.add(g)},this),this._sources=a,this._names=c,i.sources.forEach(function(m){var p=i.sourceContentFor(m);p!=null&&(n!=null&&(m=kr.join(n,m)),r!=null&&(m=kr.relative(r,m)),this.setSourceContent(m,p))},this)};Rl.prototype._validateMapping=function(i,e,n,o){if(e&&typeof e.line!="number"&&typeof e.column!="number"){var r="original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.";if(this._ignoreInvalidMapping)return typeof console<"u"&&console.warn&&console.warn(r),!1;throw new Error(r)}if(!(i&&"line"in i&&"column"in i&&i.line>0&&i.column>=0&&!e&&!n&&!o)){if(i&&"line"in i&&"column"in i&&e&&"line"in e&&"column"in e&&i.line>0&&i.column>=0&&e.line>0&&e.column>=0&&n)return;var r="Invalid mapping: "+JSON.stringify({generated:i,source:n,original:e,name:o});if(this._ignoreInvalidMapping)return typeof console<"u"&&console.warn&&console.warn(r),!1;throw new Error(r)}};Rl.prototype._serializeMappings=function(){for(var i=0,e=1,n=0,o=0,r=0,a=0,c="",m,p,h,g,M=this._mappings.toArray(),C=0,_=M.length;C<_;C++){if(p=M[C],m="",p.generatedLine!==e)for(i=0;p.generatedLine!==e;)m+=";",e++;else if(C>0){if(!kr.compareByGeneratedPositionsInflated(p,M[C-1]))continue;m+=","}m+=vb.encode(p.generatedColumn-i),i=p.generatedColumn,p.source!=null&&(g=this._sources.indexOf(p.source),m+=vb.encode(g-a),a=g,m+=vb.encode(p.originalLine-1-o),o=p.originalLine-1,m+=vb.encode(p.originalColumn-n),n=p.originalColumn,p.name!=null&&(h=this._names.indexOf(p.name),m+=vb.encode(h-r),r=h)),c+=m}return c};Rl.prototype._generateSourcesContent=function(i,e){return i.map(function(n){if(!this._sourcesContents)return null;e!=null&&(n=kr.relative(e,n));var o=kr.toSetString(n);return Object.prototype.hasOwnProperty.call(this._sourcesContents,o)?this._sourcesContents[o]:null},this)};Rl.prototype.toJSON=function(){var i={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._file!=null&&(i.file=this._file),this._sourceRoot!=null&&(i.sourceRoot=this._sourceRoot),this._sourcesContents&&(i.sourcesContent=this._generateSourcesContent(i.sources,i.sourceRoot)),i};Rl.prototype.toString=function(){return JSON.stringify(this.toJSON())};nj.SourceMapGenerator=Rl});var $N=Is((ZH,RM)=>{(function(t){"use strict";let i="(0?\\d+|0x[a-f0-9]+)",e={fourOctet:new RegExp(`^${i}\\.${i}\\.${i}\\.${i}$`,"i"),threeOctet:new RegExp(`^${i}\\.${i}\\.${i}$`,"i"),twoOctet:new RegExp(`^${i}\\.${i}$`,"i"),longValue:new RegExp(`^${i}$`,"i")},n=new RegExp("^0[0-7]+$","i"),o=new RegExp("^0x[a-f0-9]+$","i"),r="%[0-9a-z]{1,}",a="(?:[0-9a-f]+::?)+",c={zoneIndex:new RegExp(r,"i"),native:new RegExp(`^(::)?(${a})?([0-9a-f]+)?(::)?(${r})?$`,"i"),deprecatedTransitional:new RegExp(`^(?:::)(${i}\\.${i}\\.${i}\\.${i}(${r})?)$`,"i"),transitional:new RegExp(`^((?:${a})|(?:::)(?:${a})?)${i}\\.${i}\\.${i}\\.${i}(${r})?$`,"i")};function m(C,_){if(C.indexOf("::")!==C.lastIndexOf("::"))return null;let w=0,S=-1,y=(C.match(c.zoneIndex)||[])[0],k,I;for(y&&(y=y.substring(1),C=C.replace(/%.+$/,""));(S=C.indexOf(":",S+1))>=0;)w++;if(C.substr(0,2)==="::"&&w--,C.substr(-2,2)==="::"&&w--,w>_)return null;for(I=_-w,k=":";I--;)k+="0:";return C=C.replace("::",k),C[0]===":"&&(C=C.slice(1)),C[C.length-1]===":"&&(C=C.slice(0,-1)),_=(function(){let E=C.split(":"),N=[];for(let T=0;T<E.length;T++)N.push(parseInt(E[T],16));return N})(),{parts:_,zoneId:y}}function p(C,_,w,S){if(C.length!==_.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");let y=0,k;for(;S>0;){if(k=w-S,k<0&&(k=0),C[y]>>k!==_[y]>>k)return!1;S-=w,y+=1}return!0}function h(C){if(o.test(C))return parseInt(C,16);if(C[0]==="0"&&!isNaN(parseInt(C[1],10))){if(n.test(C))return parseInt(C,8);throw new Error(`ipaddr: cannot parse ${C} as octal`)}return parseInt(C,10)}function g(C,_){for(;C.length<_;)C=`0${C}`;return C}let M={};M.IPv4=(function(){function C(_){if(_.length!==4)throw new Error("ipaddr: ipv4 octet count should be 4");let w,S;for(w=0;w<_.length;w++)if(S=_[w],!(0<=S&&S<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=_}return C.prototype.SpecialRanges={unspecified:[[new C([0,0,0,0]),8]],broadcast:[[new C([255,255,255,255]),32]],multicast:[[new C([224,0,0,0]),4]],linkLocal:[[new C([169,254,0,0]),16]],loopback:[[new C([127,0,0,0]),8]],carrierGradeNat:[[new C([100,64,0,0]),10]],private:[[new C([10,0,0,0]),8],[new C([172,16,0,0]),12],[new C([192,168,0,0]),16]],reserved:[[new C([192,0,0,0]),24],[new C([192,0,2,0]),24],[new C([192,88,99,0]),24],[new C([198,18,0,0]),15],[new C([198,51,100,0]),24],[new C([203,0,113,0]),24],[new C([240,0,0,0]),4]],as112:[[new C([192,175,48,0]),24],[new C([192,31,196,0]),24]],amt:[[new C([192,52,193,0]),24]]},C.prototype.kind=function(){return"ipv4"},C.prototype.match=function(_,w){let S;if(w===void 0&&(S=_,_=S[0],w=S[1]),_.kind()!=="ipv4")throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return p(this.octets,_.octets,8,w)},C.prototype.prefixLengthFromSubnetMask=function(){let _=0,w=!1,S={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},y,k,I;for(y=3;y>=0;y-=1)if(k=this.octets[y],k in S){if(I=S[k],w&&I!==0)return null;I!==8&&(w=!0),_+=I}else return null;return 32-_},C.prototype.range=function(){return M.subnetMatch(this,this.SpecialRanges)},C.prototype.toByteArray=function(){return this.octets.slice(0)},C.prototype.toIPv4MappedAddress=function(){return M.IPv6.parse(`::ffff:${this.toString()}`)},C.prototype.toNormalizedString=function(){return this.toString()},C.prototype.toString=function(){return this.octets.join(".")},C})(),M.IPv4.broadcastAddressFromCIDR=function(C){try{let _=this.parseCIDR(C),w=_[0].toByteArray(),S=this.subnetMaskFromPrefixLength(_[1]).toByteArray(),y=[],k=0;for(;k<4;)y.push(parseInt(w[k],10)|parseInt(S[k],10)^255),k++;return new this(y)}catch{throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},M.IPv4.isIPv4=function(C){return this.parser(C)!==null},M.IPv4.isValid=function(C){try{return new this(this.parser(C)),!0}catch{return!1}},M.IPv4.isValidCIDR=function(C){try{return this.parseCIDR(C),!0}catch{return!1}},M.IPv4.isValidFourPartDecimal=function(C){return!!(M.IPv4.isValid(C)&&C.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},M.IPv4.isValidCIDRFourPartDecimal=function(C){let _=C.match(/^(.+)\/(\d+)$/);return!M.IPv4.isValidCIDR(C)||!_?!1:M.IPv4.isValidFourPartDecimal(_[1])},M.IPv4.networkAddressFromCIDR=function(C){let _,w,S,y,k;try{for(_=this.parseCIDR(C),S=_[0].toByteArray(),k=this.subnetMaskFromPrefixLength(_[1]).toByteArray(),y=[],w=0;w<4;)y.push(parseInt(S[w],10)&parseInt(k[w],10)),w++;return new this(y)}catch{throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},M.IPv4.parse=function(C){let _=this.parser(C);if(_===null)throw new Error("ipaddr: string is not formatted like an IPv4 Address");return new this(_)},M.IPv4.parseCIDR=function(C){let _;if(_=C.match(/^(.+)\/(\d+)$/)){let w=parseInt(_[2]);if(w>=0&&w<=32){let S=[this.parse(_[1]),w];return Object.defineProperty(S,"toString",{value:function(){return this.join("/")}}),S}}throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},M.IPv4.parser=function(C){let _,w,S;if(_=C.match(e.fourOctet))return(function(){let y=_.slice(1,6),k=[];for(let I=0;I<y.length;I++)w=y[I],k.push(h(w));return k})();if(_=C.match(e.longValue)){if(S=h(_[1]),S>4294967295||S<0)throw new Error("ipaddr: address outside defined range");return(function(){let y=[],k;for(k=0;k<=24;k+=8)y.push(S>>k&255);return y})().reverse()}else return(_=C.match(e.twoOctet))?(function(){let y=_.slice(1,4),k=[];if(S=h(y[1]),S>16777215||S<0)throw new Error("ipaddr: address outside defined range");return k.push(h(y[0])),k.push(S>>16&255),k.push(S>>8&255),k.push(S&255),k})():(_=C.match(e.threeOctet))?(function(){let y=_.slice(1,5),k=[];if(S=h(y[2]),S>65535||S<0)throw new Error("ipaddr: address outside defined range");return k.push(h(y[0])),k.push(h(y[1])),k.push(S>>8&255),k.push(S&255),k})():null},M.IPv4.subnetMaskFromPrefixLength=function(C){if(C=parseInt(C),C<0||C>32)throw new Error("ipaddr: invalid IPv4 prefix length");let _=[0,0,0,0],w=0,S=Math.floor(C/8);for(;w<S;)_[w]=255,w++;return S<4&&(_[S]=Math.pow(2,C%8)-1<<8-C%8),new this(_)},M.IPv6=(function(){function C(_,w){let S,y;if(_.length===16)for(this.parts=[],S=0;S<=14;S+=2)this.parts.push(_[S]<<8|_[S+1]);else if(_.length===8)this.parts=_;else throw new Error("ipaddr: ipv6 part count should be 8 or 16");for(S=0;S<this.parts.length;S++)if(y=this.parts[S],!(0<=y&&y<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");w&&(this.zoneId=w)}return C.prototype.SpecialRanges={unspecified:[new C([0,0,0,0,0,0,0,0]),128],linkLocal:[new C([65152,0,0,0,0,0,0,0]),10],multicast:[new C([65280,0,0,0,0,0,0,0]),8],loopback:[new C([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new C([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new C([0,0,0,0,0,65535,0,0]),96],discard:[new C([256,0,0,0,0,0,0,0]),64],rfc6145:[new C([0,0,0,0,65535,0,0,0]),96],rfc6052:[new C([100,65435,0,0,0,0,0,0]),96],"6to4":[new C([8194,0,0,0,0,0,0,0]),16],teredo:[new C([8193,0,0,0,0,0,0,0]),32],benchmarking:[new C([8193,2,0,0,0,0,0,0]),48],amt:[new C([8193,3,0,0,0,0,0,0]),32],as112v6:[[new C([8193,4,274,0,0,0,0,0]),48],[new C([9760,79,32768,0,0,0,0,0]),48]],deprecated:[new C([8193,16,0,0,0,0,0,0]),28],orchid2:[new C([8193,32,0,0,0,0,0,0]),28],droneRemoteIdProtocolEntityTags:[new C([8193,48,0,0,0,0,0,0]),28],reserved:[[new C([8193,0,0,0,0,0,0,0]),23],[new C([8193,3512,0,0,0,0,0,0]),32]]},C.prototype.isIPv4MappedAddress=function(){return this.range()==="ipv4Mapped"},C.prototype.kind=function(){return"ipv6"},C.prototype.match=function(_,w){let S;if(w===void 0&&(S=_,_=S[0],w=S[1]),_.kind()!=="ipv6")throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return p(this.parts,_.parts,16,w)},C.prototype.prefixLengthFromSubnetMask=function(){let _=0,w=!1,S={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},y,k;for(let I=7;I>=0;I-=1)if(y=this.parts[I],y in S){if(k=S[y],w&&k!==0)return null;k!==16&&(w=!0),_+=k}else return null;return 128-_},C.prototype.range=function(){return M.subnetMatch(this,this.SpecialRanges)},C.prototype.toByteArray=function(){let _,w=[],S=this.parts;for(let y=0;y<S.length;y++)_=S[y],w.push(_>>8),w.push(_&255);return w},C.prototype.toFixedLengthString=function(){let _=function(){let S=[];for(let y=0;y<this.parts.length;y++)S.push(g(this.parts[y].toString(16),4));return S}.call(this).join(":"),w="";return this.zoneId&&(w=`%${this.zoneId}`),_+w},C.prototype.toIPv4Address=function(){if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");let _=this.parts.slice(-2),w=_[0],S=_[1];return new M.IPv4([w>>8,w&255,S>>8,S&255])},C.prototype.toNormalizedString=function(){let _=function(){let S=[];for(let y=0;y<this.parts.length;y++)S.push(this.parts[y].toString(16));return S}.call(this).join(":"),w="";return this.zoneId&&(w=`%${this.zoneId}`),_+w},C.prototype.toRFC5952String=function(){let _=/((^|:)(0(:|$)){2,})/g,w=this.toNormalizedString(),S=0,y=-1,k;for(;k=_.exec(w);)k[0].length>y&&(S=k.index,y=k[0].length);return y<0?w:`${w.substring(0,S)}::${w.substring(S+y)}`},C.prototype.toString=function(){return this.toRFC5952String()},C})(),M.IPv6.broadcastAddressFromCIDR=function(C){try{let _=this.parseCIDR(C),w=_[0].toByteArray(),S=this.subnetMaskFromPrefixLength(_[1]).toByteArray(),y=[],k=0;for(;k<16;)y.push(parseInt(w[k],10)|parseInt(S[k],10)^255),k++;return new this(y)}catch(_){throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${_})`)}},M.IPv6.isIPv6=function(C){return this.parser(C)!==null},M.IPv6.isValid=function(C){if(typeof C=="string"&&C.indexOf(":")===-1)return!1;try{let _=this.parser(C);return new this(_.parts,_.zoneId),!0}catch{return!1}},M.IPv6.isValidCIDR=function(C){if(typeof C=="string"&&C.indexOf(":")===-1)return!1;try{return this.parseCIDR(C),!0}catch{return!1}},M.IPv6.networkAddressFromCIDR=function(C){let _,w,S,y,k;try{for(_=this.parseCIDR(C),S=_[0].toByteArray(),k=this.subnetMaskFromPrefixLength(_[1]).toByteArray(),y=[],w=0;w<16;)y.push(parseInt(S[w],10)&parseInt(k[w],10)),w++;return new this(y)}catch(I){throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${I})`)}},M.IPv6.parse=function(C){let _=this.parser(C);if(_.parts===null)throw new Error("ipaddr: string is not formatted like an IPv6 Address");return new this(_.parts,_.zoneId)},M.IPv6.parseCIDR=function(C){let _,w,S;if((w=C.match(/^(.+)\/(\d+)$/))&&(_=parseInt(w[2]),_>=0&&_<=128))return S=[this.parse(w[1]),_],Object.defineProperty(S,"toString",{value:function(){return this.join("/")}}),S;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},M.IPv6.parser=function(C){let _,w,S,y,k,I;if(S=C.match(c.deprecatedTransitional))return this.parser(`::ffff:${S[1]}`);if(c.native.test(C))return m(C,8);if((S=C.match(c.transitional))&&(I=S[6]||"",_=S[1],S[1].endsWith("::")||(_=_.slice(0,-1)),_=m(_+I,6),_.parts)){for(k=[parseInt(S[2]),parseInt(S[3]),parseInt(S[4]),parseInt(S[5])],w=0;w<k.length;w++)if(y=k[w],!(0<=y&&y<=255))return null;return _.parts.push(k[0]<<8|k[1]),_.parts.push(k[2]<<8|k[3]),{parts:_.parts,zoneId:_.zoneId}}return null},M.IPv6.subnetMaskFromPrefixLength=function(C){if(C=parseInt(C),C<0||C>128)throw new Error("ipaddr: invalid IPv6 prefix length");let _=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],w=0,S=Math.floor(C/8);for(;w<S;)_[w]=255,w++;return S<16&&(_[S]=Math.pow(2,C%8)-1<<8-C%8),new this(_)},M.fromByteArray=function(C){let _=C.length;if(_===4)return new M.IPv4(C);if(_===16)return new M.IPv6(C);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},M.isValid=function(C){return M.IPv6.isValid(C)||M.IPv4.isValid(C)},M.isValidCIDR=function(C){return M.IPv6.isValidCIDR(C)||M.IPv4.isValidCIDR(C)},M.parse=function(C){if(M.IPv6.isValid(C))return M.IPv6.parse(C);if(M.IPv4.isValid(C))return M.IPv4.parse(C);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},M.parseCIDR=function(C){try{return M.IPv6.parseCIDR(C)}catch{try{return M.IPv4.parseCIDR(C)}catch{throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},M.process=function(C){let _=this.parse(C);return _.kind()==="ipv6"&&_.isIPv4MappedAddress()?_.toIPv4Address():_},M.subnetMatch=function(C,_,w){let S,y,k,I;w==null&&(w="unicast");for(y in _)if(Object.prototype.hasOwnProperty.call(_,y)){for(k=_[y],k[0]&&!(k[0]instanceof Array)&&(k=[k]),S=0;S<k.length;S++)if(I=k[S],C.kind()===I[0].kind()&&C.match.apply(C,I))return y}return w},typeof RM<"u"&&RM.exports?RM.exports=M:t.ipaddr=M})(ZH)});var aU=Is((oU,rU)=>{(function(t){if(typeof oU=="object")rU.exports=t();else if(typeof define=="function"&&define.amd)define(t);else{var i;try{i=window}catch{i=self}i.SparkMD5=t()}})(function(t){"use strict";var i=function(y,k){return y+k&4294967295},e=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function n(y,k,I,E,N,T){return k=i(i(k,y),i(E,T)),i(k<<N|k>>>32-N,I)}function o(y,k){var I=y[0],E=y[1],N=y[2],T=y[3];I+=(E&N|~E&T)+k[0]-680876936|0,I=(I<<7|I>>>25)+E|0,T+=(I&E|~I&N)+k[1]-389564586|0,T=(T<<12|T>>>20)+I|0,N+=(T&I|~T&E)+k[2]+606105819|0,N=(N<<17|N>>>15)+T|0,E+=(N&T|~N&I)+k[3]-1044525330|0,E=(E<<22|E>>>10)+N|0,I+=(E&N|~E&T)+k[4]-176418897|0,I=(I<<7|I>>>25)+E|0,T+=(I&E|~I&N)+k[5]+1200080426|0,T=(T<<12|T>>>20)+I|0,N+=(T&I|~T&E)+k[6]-1473231341|0,N=(N<<17|N>>>15)+T|0,E+=(N&T|~N&I)+k[7]-45705983|0,E=(E<<22|E>>>10)+N|0,I+=(E&N|~E&T)+k[8]+1770035416|0,I=(I<<7|I>>>25)+E|0,T+=(I&E|~I&N)+k[9]-1958414417|0,T=(T<<12|T>>>20)+I|0,N+=(T&I|~T&E)+k[10]-42063|0,N=(N<<17|N>>>15)+T|0,E+=(N&T|~N&I)+k[11]-1990404162|0,E=(E<<22|E>>>10)+N|0,I+=(E&N|~E&T)+k[12]+1804603682|0,I=(I<<7|I>>>25)+E|0,T+=(I&E|~I&N)+k[13]-40341101|0,T=(T<<12|T>>>20)+I|0,N+=(T&I|~T&E)+k[14]-1502002290|0,N=(N<<17|N>>>15)+T|0,E+=(N&T|~N&I)+k[15]+1236535329|0,E=(E<<22|E>>>10)+N|0,I+=(E&T|N&~T)+k[1]-165796510|0,I=(I<<5|I>>>27)+E|0,T+=(I&N|E&~N)+k[6]-1069501632|0,T=(T<<9|T>>>23)+I|0,N+=(T&E|I&~E)+k[11]+643717713|0,N=(N<<14|N>>>18)+T|0,E+=(N&I|T&~I)+k[0]-373897302|0,E=(E<<20|E>>>12)+N|0,I+=(E&T|N&~T)+k[5]-701558691|0,I=(I<<5|I>>>27)+E|0,T+=(I&N|E&~N)+k[10]+38016083|0,T=(T<<9|T>>>23)+I|0,N+=(T&E|I&~E)+k[15]-660478335|0,N=(N<<14|N>>>18)+T|0,E+=(N&I|T&~I)+k[4]-405537848|0,E=(E<<20|E>>>12)+N|0,I+=(E&T|N&~T)+k[9]+568446438|0,I=(I<<5|I>>>27)+E|0,T+=(I&N|E&~N)+k[14]-1019803690|0,T=(T<<9|T>>>23)+I|0,N+=(T&E|I&~E)+k[3]-187363961|0,N=(N<<14|N>>>18)+T|0,E+=(N&I|T&~I)+k[8]+1163531501|0,E=(E<<20|E>>>12)+N|0,I+=(E&T|N&~T)+k[13]-1444681467|0,I=(I<<5|I>>>27)+E|0,T+=(I&N|E&~N)+k[2]-51403784|0,T=(T<<9|T>>>23)+I|0,N+=(T&E|I&~E)+k[7]+1735328473|0,N=(N<<14|N>>>18)+T|0,E+=(N&I|T&~I)+k[12]-1926607734|0,E=(E<<20|E>>>12)+N|0,I+=(E^N^T)+k[5]-378558|0,I=(I<<4|I>>>28)+E|0,T+=(I^E^N)+k[8]-2022574463|0,T=(T<<11|T>>>21)+I|0,N+=(T^I^E)+k[11]+1839030562|0,N=(N<<16|N>>>16)+T|0,E+=(N^T^I)+k[14]-35309556|0,E=(E<<23|E>>>9)+N|0,I+=(E^N^T)+k[1]-1530992060|0,I=(I<<4|I>>>28)+E|0,T+=(I^E^N)+k[4]+1272893353|0,T=(T<<11|T>>>21)+I|0,N+=(T^I^E)+k[7]-155497632|0,N=(N<<16|N>>>16)+T|0,E+=(N^T^I)+k[10]-1094730640|0,E=(E<<23|E>>>9)+N|0,I+=(E^N^T)+k[13]+681279174|0,I=(I<<4|I>>>28)+E|0,T+=(I^E^N)+k[0]-358537222|0,T=(T<<11|T>>>21)+I|0,N+=(T^I^E)+k[3]-722521979|0,N=(N<<16|N>>>16)+T|0,E+=(N^T^I)+k[6]+76029189|0,E=(E<<23|E>>>9)+N|0,I+=(E^N^T)+k[9]-640364487|0,I=(I<<4|I>>>28)+E|0,T+=(I^E^N)+k[12]-421815835|0,T=(T<<11|T>>>21)+I|0,N+=(T^I^E)+k[15]+530742520|0,N=(N<<16|N>>>16)+T|0,E+=(N^T^I)+k[2]-995338651|0,E=(E<<23|E>>>9)+N|0,I+=(N^(E|~T))+k[0]-198630844|0,I=(I<<6|I>>>26)+E|0,T+=(E^(I|~N))+k[7]+1126891415|0,T=(T<<10|T>>>22)+I|0,N+=(I^(T|~E))+k[14]-1416354905|0,N=(N<<15|N>>>17)+T|0,E+=(T^(N|~I))+k[5]-57434055|0,E=(E<<21|E>>>11)+N|0,I+=(N^(E|~T))+k[12]+1700485571|0,I=(I<<6|I>>>26)+E|0,T+=(E^(I|~N))+k[3]-1894986606|0,T=(T<<10|T>>>22)+I|0,N+=(I^(T|~E))+k[10]-1051523|0,N=(N<<15|N>>>17)+T|0,E+=(T^(N|~I))+k[1]-2054922799|0,E=(E<<21|E>>>11)+N|0,I+=(N^(E|~T))+k[8]+1873313359|0,I=(I<<6|I>>>26)+E|0,T+=(E^(I|~N))+k[15]-30611744|0,T=(T<<10|T>>>22)+I|0,N+=(I^(T|~E))+k[6]-1560198380|0,N=(N<<15|N>>>17)+T|0,E+=(T^(N|~I))+k[13]+1309151649|0,E=(E<<21|E>>>11)+N|0,I+=(N^(E|~T))+k[4]-145523070|0,I=(I<<6|I>>>26)+E|0,T+=(E^(I|~N))+k[11]-1120210379|0,T=(T<<10|T>>>22)+I|0,N+=(I^(T|~E))+k[2]+718787259|0,N=(N<<15|N>>>17)+T|0,E+=(T^(N|~I))+k[9]-343485551|0,E=(E<<21|E>>>11)+N|0,y[0]=I+y[0]|0,y[1]=E+y[1]|0,y[2]=N+y[2]|0,y[3]=T+y[3]|0}function r(y){var k=[],I;for(I=0;I<64;I+=4)k[I>>2]=y.charCodeAt(I)+(y.charCodeAt(I+1)<<8)+(y.charCodeAt(I+2)<<16)+(y.charCodeAt(I+3)<<24);return k}function a(y){var k=[],I;for(I=0;I<64;I+=4)k[I>>2]=y[I]+(y[I+1]<<8)+(y[I+2]<<16)+(y[I+3]<<24);return k}function c(y){var k=y.length,I=[1732584193,-271733879,-1732584194,271733878],E,N,T,R,W,pe;for(E=64;E<=k;E+=64)o(I,r(y.substring(E-64,E)));for(y=y.substring(E-64),N=y.length,T=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],E=0;E<N;E+=1)T[E>>2]|=y.charCodeAt(E)<<(E%4<<3);if(T[E>>2]|=128<<(E%4<<3),E>55)for(o(I,T),E=0;E<16;E+=1)T[E]=0;return R=k*8,R=R.toString(16).match(/(.*?)(.{0,8})$/),W=parseInt(R[2],16),pe=parseInt(R[1],16)||0,T[14]=W,T[15]=pe,o(I,T),I}function m(y){var k=y.length,I=[1732584193,-271733879,-1732584194,271733878],E,N,T,R,W,pe;for(E=64;E<=k;E+=64)o(I,a(y.subarray(E-64,E)));for(y=E-64<k?y.subarray(E-64):new Uint8Array(0),N=y.length,T=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],E=0;E<N;E+=1)T[E>>2]|=y[E]<<(E%4<<3);if(T[E>>2]|=128<<(E%4<<3),E>55)for(o(I,T),E=0;E<16;E+=1)T[E]=0;return R=k*8,R=R.toString(16).match(/(.*?)(.{0,8})$/),W=parseInt(R[2],16),pe=parseInt(R[1],16)||0,T[14]=W,T[15]=pe,o(I,T),I}function p(y){var k="",I;for(I=0;I<4;I+=1)k+=e[y>>I*8+4&15]+e[y>>I*8&15];return k}function h(y){var k;for(k=0;k<y.length;k+=1)y[k]=p(y[k]);return y.join("")}h(c("hello"))!=="5d41402abc4b2a76b9719d911017c592"&&(i=function(y,k){var I=(y&65535)+(k&65535),E=(y>>16)+(k>>16)+(I>>16);return E<<16|I&65535}),typeof ArrayBuffer<"u"&&!ArrayBuffer.prototype.slice&&(function(){function y(k,I){return k=k|0||0,k<0?Math.max(k+I,0):Math.min(k,I)}ArrayBuffer.prototype.slice=function(k,I){var E=this.byteLength,N=y(k,E),T=E,R,W,pe,_e;return I!==t&&(T=y(I,E)),N>T?new ArrayBuffer(0):(R=T-N,W=new ArrayBuffer(R),pe=new Uint8Array(W),_e=new Uint8Array(this,N,R),pe.set(_e),W)}})();function g(y){return/[\u0080-\uFFFF]/.test(y)&&(y=unescape(encodeURIComponent(y))),y}function M(y,k){var I=y.length,E=new ArrayBuffer(I),N=new Uint8Array(E),T;for(T=0;T<I;T+=1)N[T]=y.charCodeAt(T);return k?N:E}function C(y){return String.fromCharCode.apply(null,new Uint8Array(y))}function _(y,k,I){var E=new Uint8Array(y.byteLength+k.byteLength);return E.set(new Uint8Array(y)),E.set(new Uint8Array(k),y.byteLength),I?E:E.buffer}function w(y){var k=[],I=y.length,E;for(E=0;E<I-1;E+=2)k.push(parseInt(y.substr(E,2),16));return String.fromCharCode.apply(String,k)}function S(){this.reset()}return S.prototype.append=function(y){return this.appendBinary(g(y)),this},S.prototype.appendBinary=function(y){this._buff+=y,this._length+=y.length;var k=this._buff.length,I;for(I=64;I<=k;I+=64)o(this._hash,r(this._buff.substring(I-64,I)));return this._buff=this._buff.substring(I-64),this},S.prototype.end=function(y){var k=this._buff,I=k.length,E,N=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],T;for(E=0;E<I;E+=1)N[E>>2]|=k.charCodeAt(E)<<(E%4<<3);return this._finish(N,I),T=h(this._hash),y&&(T=w(T)),this.reset(),T},S.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},S.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},S.prototype.setState=function(y){return this._buff=y.buff,this._length=y.length,this._hash=y.hash,this},S.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},S.prototype._finish=function(y,k){var I=k,E,N,T;if(y[I>>2]|=128<<(I%4<<3),I>55)for(o(this._hash,y),I=0;I<16;I+=1)y[I]=0;E=this._length*8,E=E.toString(16).match(/(.*?)(.{0,8})$/),N=parseInt(E[2],16),T=parseInt(E[1],16)||0,y[14]=N,y[15]=T,o(this._hash,y)},S.hash=function(y,k){return S.hashBinary(g(y),k)},S.hashBinary=function(y,k){var I=c(y),E=h(I);return k?w(E):E},S.ArrayBuffer=function(){this.reset()},S.ArrayBuffer.prototype.append=function(y){var k=_(this._buff.buffer,y,!0),I=k.length,E;for(this._length+=y.byteLength,E=64;E<=I;E+=64)o(this._hash,a(k.subarray(E-64,E)));return this._buff=E-64<I?new Uint8Array(k.buffer.slice(E-64)):new Uint8Array(0),this},S.ArrayBuffer.prototype.end=function(y){var k=this._buff,I=k.length,E=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],N,T;for(N=0;N<I;N+=1)E[N>>2]|=k[N]<<(N%4<<3);return this._finish(E,I),T=h(this._hash),y&&(T=w(T)),this.reset(),T},S.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},S.ArrayBuffer.prototype.getState=function(){var y=S.prototype.getState.call(this);return y.buff=C(y.buff),y},S.ArrayBuffer.prototype.setState=function(y){return y.buff=M(y.buff,!0),S.prototype.setState.call(this,y)},S.ArrayBuffer.prototype.destroy=S.prototype.destroy,S.ArrayBuffer.prototype._finish=S.prototype._finish,S.ArrayBuffer.hash=function(y,k){var I=m(new Uint8Array(y)),E=h(I);return k?w(E):E},S})});var mU=Is(WN=>{"use strict";(function(){var t=typeof WN<"u"&&WN||typeof define<"u"&&{}||this||window;typeof define<"u"&&define("save-svg-as-png",[],function(){return t}),t.default=t;var i="http://www.w3.org/2000/xmlns/",e="http://www.w3.org/1999/xhtml",n="http://www.w3.org/2000/svg",o='<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [<!ENTITY nbsp " ">]>',r=/url\(["']?(.+?)["']?\)/,a={woff2:"font/woff2",woff:"font/woff",otf:"application/x-font-opentype",ttf:"application/x-font-ttf",eot:"application/vnd.ms-fontobject",sfnt:"application/font-sfnt",svg:"image/svg+xml"},c=function(G){return G instanceof HTMLElement||G instanceof SVGElement},m=function(G){if(!c(G))throw new Error("an HTMLElement or SVGElement is required; got "+G)},p=function(G){return new Promise(function(ue,ye){c(G)?ue(G):ye(new Error("an HTMLElement or SVGElement is required; got "+G))})},h=function(G){return G&&G.lastIndexOf("http",0)===0&&G.lastIndexOf(window.location.host)===-1},g=function(G){var ue=Object.keys(a).filter(function(ye){return G.indexOf("."+ye)>0}).map(function(ye){return a[ye]});return ue?ue[0]:(console.error("Unknown font format for "+G+". Fonts may not be working correctly."),"application/octet-stream")},M=function(G){for(var ue="",ye=new Uint8Array(G),ce=0;ce<ye.byteLength;ce++)ue+=String.fromCharCode(ye[ce]);return window.btoa(ue)},C=function(G,ue,ye){var ce=G.viewBox&&G.viewBox.baseVal&&G.viewBox.baseVal[ye]||ue.getAttribute(ye)!==null&&!ue.getAttribute(ye).match(/%$/)&&parseInt(ue.getAttribute(ye))||G.getBoundingClientRect()[ye]||parseInt(ue.style[ye])||parseInt(window.getComputedStyle(G).getPropertyValue(ye));return typeof ce>"u"||ce===null||isNaN(parseFloat(ce))?0:ce},_=function(G,ue,ye,ce){if(G.tagName==="svg")return{width:ye||C(G,ue,"width"),height:ce||C(G,ue,"height")};if(G.getBBox){var Ie=G.getBBox(),de=Ie.x,V=Ie.y,Y=Ie.width,ne=Ie.height;return{width:de+Y,height:V+ne}}},w=function(G){return decodeURIComponent(encodeURIComponent(G).replace(/%([0-9A-F]{2})/g,function(ue,ye){var ce=String.fromCharCode("0x"+ye);return ce==="%"?"%25":ce}))},S=function(G){for(var ue=window.atob(G.split(",")[1]),ye=G.split(",")[0].split(":")[1].split(";")[0],ce=new ArrayBuffer(ue.length),Ie=new Uint8Array(ce),de=0;de<ue.length;de++)Ie[de]=ue.charCodeAt(de);return new Blob([ce],{type:ye})},y=function(G,ue){if(ue)try{return G.querySelector(ue)||G.parentNode&&G.parentNode.querySelector(ue)}catch(ye){console.warn('Invalid CSS selector "'+ue+'"',ye)}},k=function(G,ue){var ye=G.cssText.match(r),ce=ye&&ye[1]||"";if(!(!ce||ce.match(/^data:/)||ce==="about:blank")){var Ie=ce.startsWith("../")?ue+"/../"+ce:ce.startsWith("./")?ue+"/."+ce:ce;return{text:G.cssText,format:g(Ie),url:Ie}}},I=function(G){return Promise.all(Array.from(G.querySelectorAll("image")).map(function(ue){var ye=ue.getAttributeNS("http://www.w3.org/1999/xlink","href")||ue.getAttribute("href");return ye?(h(ye)&&(ye+=(ye.indexOf("?")===-1?"?":"&")+"t="+new Date().valueOf()),new Promise(function(ce,Ie){var de=document.createElement("canvas"),V=new Image;V.crossOrigin="anonymous",V.src=ye,V.onerror=function(){return Ie(new Error("Could not load "+ye))},V.onload=function(){de.width=V.width,de.height=V.height,de.getContext("2d").drawImage(V,0,0),ue.setAttributeNS("http://www.w3.org/1999/xlink","href",de.toDataURL("image/png")),ce(!0)}})):Promise.resolve(null)}))},E={},N=function(G){return Promise.all(G.map(function(ue){return new Promise(function(ye,ce){if(E[ue.url])return ye(E[ue.url]);var Ie=new XMLHttpRequest;Ie.addEventListener("load",function(){var de=M(Ie.response),V=ue.text.replace(r,'url("data:'+ue.format+";base64,"+de+'")')+`
|
||
`;E[ue.url]=V,ye(V)}),Ie.addEventListener("error",function(de){console.warn("Failed to load font from: "+ue.url,de),E[ue.url]=null,ye(null)}),Ie.addEventListener("abort",function(de){console.warn("Aborted loading font from: "+ue.url,de),ye(null)}),Ie.open("GET",ue.url),Ie.responseType="arraybuffer",Ie.send()})})).then(function(ue){return ue.filter(function(ye){return ye}).join("")})},T=null,R=function(){return T||(T=Array.from(document.styleSheets).map(function(G){try{return{rules:G.cssRules,href:G.href}}catch(ue){return console.warn("Stylesheet could not be loaded: "+G.href,ue),{}}}))},W=function(G,ue){var ye=ue||{},ce=ye.selectorRemap,Ie=ye.modifyStyle,de=ye.modifyCss,V=ye.fonts,Y=ye.excludeUnusedCss,ne=de||function(it,et){var Se=ce?ce(it):it,q=Ie?Ie(et):et;return Se+"{"+q+`}
|
||
`},ie=[],De=typeof V>"u",$e=V||[];return R().forEach(function(it){var et=it.rules,Se=it.href;et&&Array.from(et).forEach(function(q){if(typeof q.style<"u")if(y(G,q.selectorText))ie.push(ne(q.selectorText,q.style.cssText));else if(De&&q.cssText.match(/^@font-face/)){var Oe=k(q,Se);Oe&&$e.push(Oe)}else Y||ie.push(q.cssText)})}),N($e).then(function(it){return ie.join(`
|
||
`)+it})},pe=function(){if(!navigator.msSaveOrOpenBlob&&!("download"in document.createElement("a")))return{popup:window.open()}};t.prepareSvg=function(_e,G,ue){m(_e);var ye=G||{},ce=ye.left,Ie=ce===void 0?0:ce,de=ye.top,V=de===void 0?0:de,Y=ye.width,ne=ye.height,ie=ye.scale,De=ie===void 0?1:ie,$e=ye.responsive,it=$e===void 0?!1:$e,et=ye.excludeCss,Se=et===void 0?!1:et;return I(_e).then(function(){var q=_e.cloneNode(!0);q.style.backgroundColor=(G||{}).backgroundColor||_e.style.backgroundColor;var Oe=_(_e,q,Y,ne),Ke=Oe.width,Ct=Oe.height;if(_e.tagName!=="svg")if(_e.getBBox){q.getAttribute("transform")!=null&&q.setAttribute("transform",q.getAttribute("transform").replace(/translate\(.*?\)/,""));var Rt=document.createElementNS("http://www.w3.org/2000/svg","svg");Rt.appendChild(q),q=Rt}else{console.error("Attempted to render non-SVG element",_e);return}if(q.setAttribute("version","1.1"),q.setAttribute("viewBox",[Ie,V,Ke,Ct].join(" ")),q.getAttribute("xmlns")||q.setAttributeNS(i,"xmlns",n),q.getAttribute("xmlns:xlink")||q.setAttributeNS(i,"xmlns:xlink","http://www.w3.org/1999/xlink"),it?(q.removeAttribute("width"),q.removeAttribute("height"),q.setAttribute("preserveAspectRatio","xMinYMin meet")):(q.setAttribute("width",Ke*De),q.setAttribute("height",Ct*De)),Array.from(q.querySelectorAll("foreignObject > *")).forEach(function(Eo){Eo.setAttributeNS(i,"xmlns",Eo.tagName==="svg"?n:e)}),Se){var ni=document.createElement("div");ni.appendChild(q);var Uo=ni.innerHTML;if(typeof ue=="function")ue(Uo,Ke,Ct);else return{src:Uo,width:Ke,height:Ct}}else return W(_e,G).then(function(Eo){var Kr=document.createElement("style");Kr.setAttribute("type","text/css"),Kr.innerHTML=`<![CDATA[
|
||
`+Eo+`
|
||
]]>`;var An=document.createElement("defs");An.appendChild(Kr),q.insertBefore(An,q.firstChild);var am=document.createElement("div");am.appendChild(q);var xh=am.innerHTML.replace(/NS\d+:href/gi,'xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href');if(typeof ue=="function")ue(xh,Ke,Ct);else return{src:xh,width:Ke,height:Ct}})})},t.svgAsDataUri=function(_e,G,ue){return m(_e),t.prepareSvg(_e,G).then(function(ye){var ce=ye.src,Ie=ye.width,de=ye.height,V="data:image/svg+xml;base64,"+window.btoa(w(o+ce));return typeof ue=="function"&&ue(V,Ie,de),V})},t.svgAsPngUri=function(_e,G,ue){m(_e);var ye=G||{},ce=ye.encoderType,Ie=ce===void 0?"image/png":ce,de=ye.encoderOptions,V=de===void 0?.8:de,Y=ye.canvg,ne=function(De){var $e=De.src,it=De.width,et=De.height,Se=document.createElement("canvas"),q=Se.getContext("2d"),Oe=window.devicePixelRatio||1;Se.width=it*Oe,Se.height=et*Oe,Se.style.width=Se.width+"px",Se.style.height=Se.height+"px",q.setTransform(Oe,0,0,Oe,0,0),Y?Y(Se,$e):q.drawImage($e,0,0);var Ke=void 0;try{Ke=Se.toDataURL(Ie,V)}catch(Ct){if(typeof SecurityError<"u"&&Ct instanceof SecurityError||Ct.name==="SecurityError"){console.error("Rendered SVG images cannot be downloaded in this browser.");return}else throw Ct}return typeof ue=="function"&&ue(Ke,Se.width,Se.height),Promise.resolve(Ke)};return Y?t.prepareSvg(_e,G).then(ne):t.svgAsDataUri(_e,G).then(function(ie){return new Promise(function(De,$e){var it=new Image;it.onload=function(){return De(ne({src:it,width:it.width,height:it.height}))},it.onerror=function(){$e(`There was an error loading the data URI as an image on the following SVG
|
||
`+window.atob(ie.slice(26))+`Open the following link to see browser's diagnosis
|
||
`+ie)},it.src=ie})})},t.download=function(_e,G,ue){if(navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(S(G),_e);else{var ye=document.createElement("a");if("download"in ye){ye.download=_e,ye.style.display="none",document.body.appendChild(ye);try{var ce=S(G),Ie=URL.createObjectURL(ce);ye.href=Ie,ye.onclick=function(){return requestAnimationFrame(function(){return URL.revokeObjectURL(Ie)})}}catch(de){console.error(de),console.warn("Error while getting object URL. Falling back to string URL."),ye.href=G}ye.click(),document.body.removeChild(ye)}else ue&&ue.popup&&(ue.popup.document.title=_e,ue.popup.location.replace(G))}},t.saveSvg=function(_e,G,ue){var ye=pe();return p(_e).then(function(ce){return t.svgAsDataUri(ce,ue||{})}).then(function(ce){return t.download(G,ce,ye)})},t.saveSvgAsPng=function(_e,G,ue){var ye=pe();return p(_e).then(function(ce){return t.svgAsPngUri(ce,ue||{})}).then(function(ce){return t.download(G,ce,ye)})}})()});var YN=Is((Bk,QN)=>{(function(t,i){if(typeof Bk=="object"&&typeof QN=="object")QN.exports=i();else if(typeof define=="function"&&define.amd)define([],i);else{var e=i();for(var n in e)(typeof Bk=="object"?Bk:t)[n]=e[n]}})(globalThis,()=>(()=>{"use strict";var t={4567:function(o,r,a){var c=this&&this.__decorate||function(S,y,k,I){var E,N=arguments.length,T=N<3?y:I===null?I=Object.getOwnPropertyDescriptor(y,k):I;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(S,y,k,I);else for(var R=S.length-1;R>=0;R--)(E=S[R])&&(T=(N<3?E(T):N>3?E(y,k,T):E(y,k))||T);return N>3&&T&&Object.defineProperty(y,k,T),T},m=this&&this.__param||function(S,y){return function(k,I){y(k,I,S)}};Object.defineProperty(r,"__esModule",{value:!0}),r.AccessibilityManager=void 0;let p=a(9042),h=a(9924),g=a(844),M=a(4725),C=a(2585),_=a(3656),w=r.AccessibilityManager=class extends g.Disposable{constructor(S,y,k,I){super(),this._terminal=S,this._coreBrowserService=k,this._renderService=I,this._rowColumns=new WeakMap,this._liveRegionLineCount=0,this._charsToConsume=[],this._charsToAnnounce="",this._accessibilityContainer=this._coreBrowserService.mainDocument.createElement("div"),this._accessibilityContainer.classList.add("xterm-accessibility"),this._rowContainer=this._coreBrowserService.mainDocument.createElement("div"),this._rowContainer.setAttribute("role","list"),this._rowContainer.classList.add("xterm-accessibility-tree"),this._rowElements=[];for(let E=0;E<this._terminal.rows;E++)this._rowElements[E]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[E]);if(this._topBoundaryFocusListener=E=>this._handleBoundaryFocus(E,0),this._bottomBoundaryFocusListener=E=>this._handleBoundaryFocus(E,1),this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions(),this._accessibilityContainer.appendChild(this._rowContainer),this._liveRegion=this._coreBrowserService.mainDocument.createElement("div"),this._liveRegion.classList.add("live-region"),this._liveRegion.setAttribute("aria-live","assertive"),this._accessibilityContainer.appendChild(this._liveRegion),this._liveRegionDebouncer=this.register(new h.TimeBasedDebouncer(this._renderRows.bind(this))),!this._terminal.element)throw new Error("Cannot enable accessibility before Terminal.open");this._terminal.element.insertAdjacentElement("afterbegin",this._accessibilityContainer),this.register(this._terminal.onResize(E=>this._handleResize(E.rows))),this.register(this._terminal.onRender(E=>this._refreshRows(E.start,E.end))),this.register(this._terminal.onScroll(()=>this._refreshRows())),this.register(this._terminal.onA11yChar(E=>this._handleChar(E))),this.register(this._terminal.onLineFeed(()=>this._handleChar(`
|
||
`))),this.register(this._terminal.onA11yTab(E=>this._handleTab(E))),this.register(this._terminal.onKey(E=>this._handleKey(E.key))),this.register(this._terminal.onBlur(()=>this._clearLiveRegion())),this.register(this._renderService.onDimensionsChange(()=>this._refreshRowsDimensions())),this.register((0,_.addDisposableDomListener)(document,"selectionchange",()=>this._handleSelectionChange())),this.register(this._coreBrowserService.onDprChange(()=>this._refreshRowsDimensions())),this._refreshRows(),this.register((0,g.toDisposable)(()=>{this._accessibilityContainer.remove(),this._rowElements.length=0}))}_handleTab(S){for(let y=0;y<S;y++)this._handleChar(" ")}_handleChar(S){this._liveRegionLineCount<21&&(this._charsToConsume.length>0?this._charsToConsume.shift()!==S&&(this._charsToAnnounce+=S):this._charsToAnnounce+=S,S===`
|
||
`&&(this._liveRegionLineCount++,this._liveRegionLineCount===21&&(this._liveRegion.textContent+=p.tooMuchOutput)))}_clearLiveRegion(){this._liveRegion.textContent="",this._liveRegionLineCount=0}_handleKey(S){this._clearLiveRegion(),new RegExp("\\p{Control}","u").test(S)||this._charsToConsume.push(S)}_refreshRows(S,y){this._liveRegionDebouncer.refresh(S,y,this._terminal.rows)}_renderRows(S,y){let k=this._terminal.buffer,I=k.lines.length.toString();for(let E=S;E<=y;E++){let N=k.lines.get(k.ydisp+E),T=[],R=N?.translateToString(!0,void 0,void 0,T)||"",W=(k.ydisp+E+1).toString(),pe=this._rowElements[E];pe&&(R.length===0?(pe.innerText="\xA0",this._rowColumns.set(pe,[0,1])):(pe.textContent=R,this._rowColumns.set(pe,T)),pe.setAttribute("aria-posinset",W),pe.setAttribute("aria-setsize",I))}this._announceCharacters()}_announceCharacters(){this._charsToAnnounce.length!==0&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce="")}_handleBoundaryFocus(S,y){let k=S.target,I=this._rowElements[y===0?1:this._rowElements.length-2];if(k.getAttribute("aria-posinset")===(y===0?"1":`${this._terminal.buffer.lines.length}`)||S.relatedTarget!==I)return;let E,N;if(y===0?(E=k,N=this._rowElements.pop(),this._rowContainer.removeChild(N)):(E=this._rowElements.shift(),N=k,this._rowContainer.removeChild(E)),E.removeEventListener("focus",this._topBoundaryFocusListener),N.removeEventListener("focus",this._bottomBoundaryFocusListener),y===0){let T=this._createAccessibilityTreeNode();this._rowElements.unshift(T),this._rowContainer.insertAdjacentElement("afterbegin",T)}else{let T=this._createAccessibilityTreeNode();this._rowElements.push(T),this._rowContainer.appendChild(T)}this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._terminal.scrollLines(y===0?-1:1),this._rowElements[y===0?1:this._rowElements.length-2].focus(),S.preventDefault(),S.stopImmediatePropagation()}_handleSelectionChange(){if(this._rowElements.length===0)return;let S=document.getSelection();if(!S)return;if(S.isCollapsed)return void(this._rowContainer.contains(S.anchorNode)&&this._terminal.clearSelection());if(!S.anchorNode||!S.focusNode)return void console.error("anchorNode and/or focusNode are null");let y={node:S.anchorNode,offset:S.anchorOffset},k={node:S.focusNode,offset:S.focusOffset};if((y.node.compareDocumentPosition(k.node)&Node.DOCUMENT_POSITION_PRECEDING||y.node===k.node&&y.offset>k.offset)&&([y,k]=[k,y]),y.node.compareDocumentPosition(this._rowElements[0])&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_FOLLOWING)&&(y={node:this._rowElements[0].childNodes[0],offset:0}),!this._rowContainer.contains(y.node))return;let I=this._rowElements.slice(-1)[0];if(k.node.compareDocumentPosition(I)&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_PRECEDING)&&(k={node:I,offset:I.textContent?.length??0}),!this._rowContainer.contains(k.node))return;let E=({node:R,offset:W})=>{let pe=R instanceof Text?R.parentNode:R,_e=parseInt(pe?.getAttribute("aria-posinset"),10)-1;if(isNaN(_e))return console.warn("row is invalid. Race condition?"),null;let G=this._rowColumns.get(pe);if(!G)return console.warn("columns is null. Race condition?"),null;let ue=W<G.length?G[W]:G.slice(-1)[0]+1;return ue>=this._terminal.cols&&(++_e,ue=0),{row:_e,column:ue}},N=E(y),T=E(k);if(N&&T){if(N.row>T.row||N.row===T.row&&N.column>=T.column)throw new Error("invalid range");this._terminal.select(N.column,N.row,(T.row-N.row)*this._terminal.cols-N.column+T.column)}}_handleResize(S){this._rowElements[this._rowElements.length-1].removeEventListener("focus",this._bottomBoundaryFocusListener);for(let y=this._rowContainer.children.length;y<this._terminal.rows;y++)this._rowElements[y]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[y]);for(;this._rowElements.length>S;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()}_createAccessibilityTreeNode(){let S=this._coreBrowserService.mainDocument.createElement("div");return S.setAttribute("role","listitem"),S.tabIndex=-1,this._refreshRowDimensions(S),S}_refreshRowsDimensions(){if(this._renderService.dimensions.css.cell.height){this._accessibilityContainer.style.width=`${this._renderService.dimensions.css.canvas.width}px`,this._rowElements.length!==this._terminal.rows&&this._handleResize(this._terminal.rows);for(let S=0;S<this._terminal.rows;S++)this._refreshRowDimensions(this._rowElements[S])}}_refreshRowDimensions(S){S.style.height=`${this._renderService.dimensions.css.cell.height}px`}};r.AccessibilityManager=w=c([m(1,C.IInstantiationService),m(2,M.ICoreBrowserService),m(3,M.IRenderService)],w)},3614:(o,r)=>{function a(h){return h.replace(/\r?\n/g,"\r")}function c(h,g){return g?"\x1B[200~"+h+"\x1B[201~":h}function m(h,g,M,C){h=c(h=a(h),M.decPrivateModes.bracketedPasteMode&&C.rawOptions.ignoreBracketedPasteMode!==!0),M.triggerDataEvent(h,!0),g.value=""}function p(h,g,M){let C=M.getBoundingClientRect(),_=h.clientX-C.left-10,w=h.clientY-C.top-10;g.style.width="20px",g.style.height="20px",g.style.left=`${_}px`,g.style.top=`${w}px`,g.style.zIndex="1000",g.focus()}Object.defineProperty(r,"__esModule",{value:!0}),r.rightClickHandler=r.moveTextAreaUnderMouseCursor=r.paste=r.handlePasteEvent=r.copyHandler=r.bracketTextForPaste=r.prepareTextForTerminal=void 0,r.prepareTextForTerminal=a,r.bracketTextForPaste=c,r.copyHandler=function(h,g){h.clipboardData&&h.clipboardData.setData("text/plain",g.selectionText),h.preventDefault()},r.handlePasteEvent=function(h,g,M,C){h.stopPropagation(),h.clipboardData&&m(h.clipboardData.getData("text/plain"),g,M,C)},r.paste=m,r.moveTextAreaUnderMouseCursor=p,r.rightClickHandler=function(h,g,M,C,_){p(h,g,M),_&&C.rightClickSelect(h),g.value=C.selectionText,g.select()}},7239:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ColorContrastCache=void 0;let c=a(1505);r.ColorContrastCache=class{constructor(){this._color=new c.TwoKeyMap,this._css=new c.TwoKeyMap}setCss(m,p,h){this._css.set(m,p,h)}getCss(m,p){return this._css.get(m,p)}setColor(m,p,h){this._color.set(m,p,h)}getColor(m,p){return this._color.get(m,p)}clear(){this._color.clear(),this._css.clear()}}},3656:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.addDisposableDomListener=void 0,r.addDisposableDomListener=function(a,c,m,p){a.addEventListener(c,m,p);let h=!1;return{dispose:()=>{h||(h=!0,a.removeEventListener(c,m,p))}}}},3551:function(o,r,a){var c=this&&this.__decorate||function(w,S,y,k){var I,E=arguments.length,N=E<3?S:k===null?k=Object.getOwnPropertyDescriptor(S,y):k;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")N=Reflect.decorate(w,S,y,k);else for(var T=w.length-1;T>=0;T--)(I=w[T])&&(N=(E<3?I(N):E>3?I(S,y,N):I(S,y))||N);return E>3&&N&&Object.defineProperty(S,y,N),N},m=this&&this.__param||function(w,S){return function(y,k){S(y,k,w)}};Object.defineProperty(r,"__esModule",{value:!0}),r.Linkifier=void 0;let p=a(3656),h=a(8460),g=a(844),M=a(2585),C=a(4725),_=r.Linkifier=class extends g.Disposable{get currentLink(){return this._currentLink}constructor(w,S,y,k,I){super(),this._element=w,this._mouseService=S,this._renderService=y,this._bufferService=k,this._linkProviderService=I,this._linkCacheDisposables=[],this._isMouseOut=!0,this._wasResized=!1,this._activeLine=-1,this._onShowLinkUnderline=this.register(new h.EventEmitter),this.onShowLinkUnderline=this._onShowLinkUnderline.event,this._onHideLinkUnderline=this.register(new h.EventEmitter),this.onHideLinkUnderline=this._onHideLinkUnderline.event,this.register((0,g.getDisposeArrayDisposable)(this._linkCacheDisposables)),this.register((0,g.toDisposable)(()=>{this._lastMouseEvent=void 0,this._activeProviderReplies?.clear()})),this.register(this._bufferService.onResize(()=>{this._clearCurrentLink(),this._wasResized=!0})),this.register((0,p.addDisposableDomListener)(this._element,"mouseleave",()=>{this._isMouseOut=!0,this._clearCurrentLink()})),this.register((0,p.addDisposableDomListener)(this._element,"mousemove",this._handleMouseMove.bind(this))),this.register((0,p.addDisposableDomListener)(this._element,"mousedown",this._handleMouseDown.bind(this))),this.register((0,p.addDisposableDomListener)(this._element,"mouseup",this._handleMouseUp.bind(this)))}_handleMouseMove(w){this._lastMouseEvent=w;let S=this._positionFromMouseEvent(w,this._element,this._mouseService);if(!S)return;this._isMouseOut=!1;let y=w.composedPath();for(let k=0;k<y.length;k++){let I=y[k];if(I.classList.contains("xterm"))break;if(I.classList.contains("xterm-hover"))return}this._lastBufferCell&&S.x===this._lastBufferCell.x&&S.y===this._lastBufferCell.y||(this._handleHover(S),this._lastBufferCell=S)}_handleHover(w){if(this._activeLine!==w.y||this._wasResized)return this._clearCurrentLink(),this._askForLink(w,!1),void(this._wasResized=!1);this._currentLink&&this._linkAtPosition(this._currentLink.link,w)||(this._clearCurrentLink(),this._askForLink(w,!0))}_askForLink(w,S){this._activeProviderReplies&&S||(this._activeProviderReplies?.forEach(k=>{k?.forEach(I=>{I.link.dispose&&I.link.dispose()})}),this._activeProviderReplies=new Map,this._activeLine=w.y);let y=!1;for(let[k,I]of this._linkProviderService.linkProviders.entries())S?this._activeProviderReplies?.get(k)&&(y=this._checkLinkProviderResult(k,w,y)):I.provideLinks(w.y,E=>{if(this._isMouseOut)return;let N=E?.map(T=>({link:T}));this._activeProviderReplies?.set(k,N),y=this._checkLinkProviderResult(k,w,y),this._activeProviderReplies?.size===this._linkProviderService.linkProviders.length&&this._removeIntersectingLinks(w.y,this._activeProviderReplies)})}_removeIntersectingLinks(w,S){let y=new Set;for(let k=0;k<S.size;k++){let I=S.get(k);if(I)for(let E=0;E<I.length;E++){let N=I[E],T=N.link.range.start.y<w?0:N.link.range.start.x,R=N.link.range.end.y>w?this._bufferService.cols:N.link.range.end.x;for(let W=T;W<=R;W++){if(y.has(W)){I.splice(E--,1);break}y.add(W)}}}}_checkLinkProviderResult(w,S,y){if(!this._activeProviderReplies)return y;let k=this._activeProviderReplies.get(w),I=!1;for(let E=0;E<w;E++)this._activeProviderReplies.has(E)&&!this._activeProviderReplies.get(E)||(I=!0);if(!I&&k){let E=k.find(N=>this._linkAtPosition(N.link,S));E&&(y=!0,this._handleNewLink(E))}if(this._activeProviderReplies.size===this._linkProviderService.linkProviders.length&&!y)for(let E=0;E<this._activeProviderReplies.size;E++){let N=this._activeProviderReplies.get(E)?.find(T=>this._linkAtPosition(T.link,S));if(N){y=!0,this._handleNewLink(N);break}}return y}_handleMouseDown(){this._mouseDownLink=this._currentLink}_handleMouseUp(w){if(!this._currentLink)return;let S=this._positionFromMouseEvent(w,this._element,this._mouseService);S&&this._mouseDownLink===this._currentLink&&this._linkAtPosition(this._currentLink.link,S)&&this._currentLink.link.activate(w,this._currentLink.link.text)}_clearCurrentLink(w,S){this._currentLink&&this._lastMouseEvent&&(!w||!S||this._currentLink.link.range.start.y>=w&&this._currentLink.link.range.end.y<=S)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,(0,g.disposeArray)(this._linkCacheDisposables))}_handleNewLink(w){if(!this._lastMouseEvent)return;let S=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);S&&this._linkAtPosition(w.link,S)&&(this._currentLink=w,this._currentLink.state={decorations:{underline:w.link.decorations===void 0||w.link.decorations.underline,pointerCursor:w.link.decorations===void 0||w.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,w.link,this._lastMouseEvent),w.link.decorations={},Object.defineProperties(w.link.decorations,{pointerCursor:{get:()=>this._currentLink?.state?.decorations.pointerCursor,set:y=>{this._currentLink?.state&&this._currentLink.state.decorations.pointerCursor!==y&&(this._currentLink.state.decorations.pointerCursor=y,this._currentLink.state.isHovered&&this._element.classList.toggle("xterm-cursor-pointer",y))}},underline:{get:()=>this._currentLink?.state?.decorations.underline,set:y=>{this._currentLink?.state&&this._currentLink?.state?.decorations.underline!==y&&(this._currentLink.state.decorations.underline=y,this._currentLink.state.isHovered&&this._fireUnderlineEvent(w.link,y))}}}),this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange(y=>{if(!this._currentLink)return;let k=y.start===0?0:y.start+1+this._bufferService.buffer.ydisp,I=this._bufferService.buffer.ydisp+1+y.end;if(this._currentLink.link.range.start.y>=k&&this._currentLink.link.range.end.y<=I&&(this._clearCurrentLink(k,I),this._lastMouseEvent)){let E=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);E&&this._askForLink(E,!1)}})))}_linkHover(w,S,y){this._currentLink?.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(S,!0),this._currentLink.state.decorations.pointerCursor&&w.classList.add("xterm-cursor-pointer")),S.hover&&S.hover(y,S.text)}_fireUnderlineEvent(w,S){let y=w.range,k=this._bufferService.buffer.ydisp,I=this._createLinkUnderlineEvent(y.start.x-1,y.start.y-k-1,y.end.x,y.end.y-k-1,void 0);(S?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(I)}_linkLeave(w,S,y){this._currentLink?.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(S,!1),this._currentLink.state.decorations.pointerCursor&&w.classList.remove("xterm-cursor-pointer")),S.leave&&S.leave(y,S.text)}_linkAtPosition(w,S){let y=w.range.start.y*this._bufferService.cols+w.range.start.x,k=w.range.end.y*this._bufferService.cols+w.range.end.x,I=S.y*this._bufferService.cols+S.x;return y<=I&&I<=k}_positionFromMouseEvent(w,S,y){let k=y.getCoords(w,S,this._bufferService.cols,this._bufferService.rows);if(k)return{x:k[0],y:k[1]+this._bufferService.buffer.ydisp}}_createLinkUnderlineEvent(w,S,y,k,I){return{x1:w,y1:S,x2:y,y2:k,cols:this._bufferService.cols,fg:I}}};r.Linkifier=_=c([m(1,C.IMouseService),m(2,C.IRenderService),m(3,M.IBufferService),m(4,C.ILinkProviderService)],_)},9042:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.tooMuchOutput=r.promptLabel=void 0,r.promptLabel="Terminal input",r.tooMuchOutput="Too much output to announce, navigate to rows manually to read"},3730:function(o,r,a){var c=this&&this.__decorate||function(C,_,w,S){var y,k=arguments.length,I=k<3?_:S===null?S=Object.getOwnPropertyDescriptor(_,w):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")I=Reflect.decorate(C,_,w,S);else for(var E=C.length-1;E>=0;E--)(y=C[E])&&(I=(k<3?y(I):k>3?y(_,w,I):y(_,w))||I);return k>3&&I&&Object.defineProperty(_,w,I),I},m=this&&this.__param||function(C,_){return function(w,S){_(w,S,C)}};Object.defineProperty(r,"__esModule",{value:!0}),r.OscLinkProvider=void 0;let p=a(511),h=a(2585),g=r.OscLinkProvider=class{constructor(C,_,w){this._bufferService=C,this._optionsService=_,this._oscLinkService=w}provideLinks(C,_){let w=this._bufferService.buffer.lines.get(C-1);if(!w)return void _(void 0);let S=[],y=this._optionsService.rawOptions.linkHandler,k=new p.CellData,I=w.getTrimmedLength(),E=-1,N=-1,T=!1;for(let R=0;R<I;R++)if(N!==-1||w.hasContent(R)){if(w.loadCell(R,k),k.hasExtendedAttrs()&&k.extended.urlId){if(N===-1){N=R,E=k.extended.urlId;continue}T=k.extended.urlId!==E}else N!==-1&&(T=!0);if(T||N!==-1&&R===I-1){let W=this._oscLinkService.getLinkData(E)?.uri;if(W){let pe={start:{x:N+1,y:C},end:{x:R+(T||R!==I-1?0:1),y:C}},_e=!1;if(!y?.allowNonHttpProtocols)try{let G=new URL(W);["http:","https:"].includes(G.protocol)||(_e=!0)}catch{_e=!0}_e||S.push({text:W,range:pe,activate:(G,ue)=>y?y.activate(G,ue,pe):M(0,ue),hover:(G,ue)=>y?.hover?.(G,ue,pe),leave:(G,ue)=>y?.leave?.(G,ue,pe)})}T=!1,k.hasExtendedAttrs()&&k.extended.urlId?(N=R,E=k.extended.urlId):(N=-1,E=-1)}}_(S)}};function M(C,_){if(confirm(`Do you want to navigate to ${_}?
|
||
|
||
WARNING: This link could potentially be dangerous`)){let w=window.open();if(w){try{w.opener=null}catch{}w.location.href=_}else console.warn("Opening link blocked as opener could not be cleared")}}r.OscLinkProvider=g=c([m(0,h.IBufferService),m(1,h.IOptionsService),m(2,h.IOscLinkService)],g)},6193:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.RenderDebouncer=void 0,r.RenderDebouncer=class{constructor(a,c){this._renderCallback=a,this._coreBrowserService=c,this._refreshCallbacks=[]}dispose(){this._animationFrame&&(this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)}addRefreshCallback(a){return this._refreshCallbacks.push(a),this._animationFrame||(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._innerRefresh())),this._animationFrame}refresh(a,c,m){this._rowCount=m,a=a!==void 0?a:0,c=c!==void 0?c:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,a):a,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,c):c,this._animationFrame||(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._innerRefresh()))}_innerRefresh(){if(this._animationFrame=void 0,this._rowStart===void 0||this._rowEnd===void 0||this._rowCount===void 0)return void this._runRefreshCallbacks();let a=Math.max(this._rowStart,0),c=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(a,c),this._runRefreshCallbacks()}_runRefreshCallbacks(){for(let a of this._refreshCallbacks)a(0);this._refreshCallbacks=[]}}},3236:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.Terminal=void 0;let c=a(3614),m=a(3656),p=a(3551),h=a(9042),g=a(3730),M=a(1680),C=a(3107),_=a(5744),w=a(2950),S=a(1296),y=a(428),k=a(4269),I=a(5114),E=a(8934),N=a(3230),T=a(9312),R=a(4725),W=a(6731),pe=a(8055),_e=a(8969),G=a(8460),ue=a(844),ye=a(6114),ce=a(8437),Ie=a(2584),de=a(7399),V=a(5941),Y=a(9074),ne=a(2585),ie=a(5435),De=a(4567),$e=a(779);class it extends _e.CoreTerminal{get onFocus(){return this._onFocus.event}get onBlur(){return this._onBlur.event}get onA11yChar(){return this._onA11yCharEmitter.event}get onA11yTab(){return this._onA11yTabEmitter.event}get onWillOpen(){return this._onWillOpen.event}constructor(Se={}){super(Se),this.browser=ye,this._keyDownHandled=!1,this._keyDownSeen=!1,this._keyPressHandled=!1,this._unprocessedDeadKey=!1,this._accessibilityManager=this.register(new ue.MutableDisposable),this._onCursorMove=this.register(new G.EventEmitter),this.onCursorMove=this._onCursorMove.event,this._onKey=this.register(new G.EventEmitter),this.onKey=this._onKey.event,this._onRender=this.register(new G.EventEmitter),this.onRender=this._onRender.event,this._onSelectionChange=this.register(new G.EventEmitter),this.onSelectionChange=this._onSelectionChange.event,this._onTitleChange=this.register(new G.EventEmitter),this.onTitleChange=this._onTitleChange.event,this._onBell=this.register(new G.EventEmitter),this.onBell=this._onBell.event,this._onFocus=this.register(new G.EventEmitter),this._onBlur=this.register(new G.EventEmitter),this._onA11yCharEmitter=this.register(new G.EventEmitter),this._onA11yTabEmitter=this.register(new G.EventEmitter),this._onWillOpen=this.register(new G.EventEmitter),this._setup(),this._decorationService=this._instantiationService.createInstance(Y.DecorationService),this._instantiationService.setService(ne.IDecorationService,this._decorationService),this._linkProviderService=this._instantiationService.createInstance($e.LinkProviderService),this._instantiationService.setService(R.ILinkProviderService,this._linkProviderService),this._linkProviderService.registerLinkProvider(this._instantiationService.createInstance(g.OscLinkProvider)),this.register(this._inputHandler.onRequestBell(()=>this._onBell.fire())),this.register(this._inputHandler.onRequestRefreshRows((q,Oe)=>this.refresh(q,Oe))),this.register(this._inputHandler.onRequestSendFocus(()=>this._reportFocus())),this.register(this._inputHandler.onRequestReset(()=>this.reset())),this.register(this._inputHandler.onRequestWindowsOptionsReport(q=>this._reportWindowsOptions(q))),this.register(this._inputHandler.onColor(q=>this._handleColorEvent(q))),this.register((0,G.forwardEvent)(this._inputHandler.onCursorMove,this._onCursorMove)),this.register((0,G.forwardEvent)(this._inputHandler.onTitleChange,this._onTitleChange)),this.register((0,G.forwardEvent)(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this.register((0,G.forwardEvent)(this._inputHandler.onA11yTab,this._onA11yTabEmitter)),this.register(this._bufferService.onResize(q=>this._afterResize(q.cols,q.rows))),this.register((0,ue.toDisposable)(()=>{this._customKeyEventHandler=void 0,this.element?.parentNode?.removeChild(this.element)}))}_handleColorEvent(Se){if(this._themeService)for(let q of Se){let Oe,Ke="";switch(q.index){case 256:Oe="foreground",Ke="10";break;case 257:Oe="background",Ke="11";break;case 258:Oe="cursor",Ke="12";break;default:Oe="ansi",Ke="4;"+q.index}switch(q.type){case 0:let Ct=pe.color.toColorRGB(Oe==="ansi"?this._themeService.colors.ansi[q.index]:this._themeService.colors[Oe]);this.coreService.triggerDataEvent(`${Ie.C0.ESC}]${Ke};${(0,V.toRgbString)(Ct)}${Ie.C1_ESCAPED.ST}`);break;case 1:if(Oe==="ansi")this._themeService.modifyColors(Rt=>Rt.ansi[q.index]=pe.channels.toColor(...q.color));else{let Rt=Oe;this._themeService.modifyColors(ni=>ni[Rt]=pe.channels.toColor(...q.color))}break;case 2:this._themeService.restoreColor(q.index)}}}_setup(){super._setup(),this._customKeyEventHandler=void 0}get buffer(){return this.buffers.active}focus(){this.textarea&&this.textarea.focus({preventScroll:!0})}_handleScreenReaderModeOptionChange(Se){Se?!this._accessibilityManager.value&&this._renderService&&(this._accessibilityManager.value=this._instantiationService.createInstance(De.AccessibilityManager,this)):this._accessibilityManager.clear()}_handleTextAreaFocus(Se){this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(Ie.C0.ESC+"[I"),this.element.classList.add("focus"),this._showCursor(),this._onFocus.fire()}blur(){return this.textarea?.blur()}_handleTextAreaBlur(){this.textarea.value="",this.refresh(this.buffer.y,this.buffer.y),this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(Ie.C0.ESC+"[O"),this.element.classList.remove("focus"),this._onBlur.fire()}_syncTextArea(){if(!this.textarea||!this.buffer.isCursorInViewport||this._compositionHelper.isComposing||!this._renderService)return;let Se=this.buffer.ybase+this.buffer.y,q=this.buffer.lines.get(Se);if(!q)return;let Oe=Math.min(this.buffer.x,this.cols-1),Ke=this._renderService.dimensions.css.cell.height,Ct=q.getWidth(Oe),Rt=this._renderService.dimensions.css.cell.width*Ct,ni=this.buffer.y*this._renderService.dimensions.css.cell.height,Uo=Oe*this._renderService.dimensions.css.cell.width;this.textarea.style.left=Uo+"px",this.textarea.style.top=ni+"px",this.textarea.style.width=Rt+"px",this.textarea.style.height=Ke+"px",this.textarea.style.lineHeight=Ke+"px",this.textarea.style.zIndex="-5"}_initGlobal(){this._bindKeys(),this.register((0,m.addDisposableDomListener)(this.element,"copy",q=>{this.hasSelection()&&(0,c.copyHandler)(q,this._selectionService)}));let Se=q=>(0,c.handlePasteEvent)(q,this.textarea,this.coreService,this.optionsService);this.register((0,m.addDisposableDomListener)(this.textarea,"paste",Se)),this.register((0,m.addDisposableDomListener)(this.element,"paste",Se)),ye.isFirefox?this.register((0,m.addDisposableDomListener)(this.element,"mousedown",q=>{q.button===2&&(0,c.rightClickHandler)(q,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})):this.register((0,m.addDisposableDomListener)(this.element,"contextmenu",q=>{(0,c.rightClickHandler)(q,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})),ye.isLinux&&this.register((0,m.addDisposableDomListener)(this.element,"auxclick",q=>{q.button===1&&(0,c.moveTextAreaUnderMouseCursor)(q,this.textarea,this.screenElement)}))}_bindKeys(){this.register((0,m.addDisposableDomListener)(this.textarea,"keyup",Se=>this._keyUp(Se),!0)),this.register((0,m.addDisposableDomListener)(this.textarea,"keydown",Se=>this._keyDown(Se),!0)),this.register((0,m.addDisposableDomListener)(this.textarea,"keypress",Se=>this._keyPress(Se),!0)),this.register((0,m.addDisposableDomListener)(this.textarea,"compositionstart",()=>this._compositionHelper.compositionstart())),this.register((0,m.addDisposableDomListener)(this.textarea,"compositionupdate",Se=>this._compositionHelper.compositionupdate(Se))),this.register((0,m.addDisposableDomListener)(this.textarea,"compositionend",()=>this._compositionHelper.compositionend())),this.register((0,m.addDisposableDomListener)(this.textarea,"input",Se=>this._inputEvent(Se),!0)),this.register(this.onRender(()=>this._compositionHelper.updateCompositionElements()))}open(Se){if(!Se)throw new Error("Terminal requires a parent element.");if(Se.isConnected||this._logService.debug("Terminal.open was called on an element that was not attached to the DOM"),this.element?.ownerDocument.defaultView&&this._coreBrowserService)return void(this.element.ownerDocument.defaultView!==this._coreBrowserService.window&&(this._coreBrowserService.window=this.element.ownerDocument.defaultView));this._document=Se.ownerDocument,this.options.documentOverride&&this.options.documentOverride instanceof Document&&(this._document=this.optionsService.rawOptions.documentOverride),this.element=this._document.createElement("div"),this.element.dir="ltr",this.element.classList.add("terminal"),this.element.classList.add("xterm"),Se.appendChild(this.element);let q=this._document.createDocumentFragment();this._viewportElement=this._document.createElement("div"),this._viewportElement.classList.add("xterm-viewport"),q.appendChild(this._viewportElement),this._viewportScrollArea=this._document.createElement("div"),this._viewportScrollArea.classList.add("xterm-scroll-area"),this._viewportElement.appendChild(this._viewportScrollArea),this.screenElement=this._document.createElement("div"),this.screenElement.classList.add("xterm-screen"),this.register((0,m.addDisposableDomListener)(this.screenElement,"mousemove",Oe=>this.updateCursorStyle(Oe))),this._helperContainer=this._document.createElement("div"),this._helperContainer.classList.add("xterm-helpers"),this.screenElement.appendChild(this._helperContainer),q.appendChild(this.screenElement),this.textarea=this._document.createElement("textarea"),this.textarea.classList.add("xterm-helper-textarea"),this.textarea.setAttribute("aria-label",h.promptLabel),ye.isChromeOS||this.textarea.setAttribute("aria-multiline","false"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.tabIndex=0,this._coreBrowserService=this.register(this._instantiationService.createInstance(I.CoreBrowserService,this.textarea,Se.ownerDocument.defaultView??window,this._document??typeof window<"u"?window.document:null)),this._instantiationService.setService(R.ICoreBrowserService,this._coreBrowserService),this.register((0,m.addDisposableDomListener)(this.textarea,"focus",Oe=>this._handleTextAreaFocus(Oe))),this.register((0,m.addDisposableDomListener)(this.textarea,"blur",()=>this._handleTextAreaBlur())),this._helperContainer.appendChild(this.textarea),this._charSizeService=this._instantiationService.createInstance(y.CharSizeService,this._document,this._helperContainer),this._instantiationService.setService(R.ICharSizeService,this._charSizeService),this._themeService=this._instantiationService.createInstance(W.ThemeService),this._instantiationService.setService(R.IThemeService,this._themeService),this._characterJoinerService=this._instantiationService.createInstance(k.CharacterJoinerService),this._instantiationService.setService(R.ICharacterJoinerService,this._characterJoinerService),this._renderService=this.register(this._instantiationService.createInstance(N.RenderService,this.rows,this.screenElement)),this._instantiationService.setService(R.IRenderService,this._renderService),this.register(this._renderService.onRenderedViewportChange(Oe=>this._onRender.fire(Oe))),this.onResize(Oe=>this._renderService.resize(Oe.cols,Oe.rows)),this._compositionView=this._document.createElement("div"),this._compositionView.classList.add("composition-view"),this._compositionHelper=this._instantiationService.createInstance(w.CompositionHelper,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this._mouseService=this._instantiationService.createInstance(E.MouseService),this._instantiationService.setService(R.IMouseService,this._mouseService),this.linkifier=this.register(this._instantiationService.createInstance(p.Linkifier,this.screenElement)),this.element.appendChild(q);try{this._onWillOpen.fire(this.element)}catch{}this._renderService.hasRenderer()||this._renderService.setRenderer(this._createRenderer()),this.viewport=this._instantiationService.createInstance(M.Viewport,this._viewportElement,this._viewportScrollArea),this.viewport.onRequestScrollLines(Oe=>this.scrollLines(Oe.amount,Oe.suppressScrollEvent,1)),this.register(this._inputHandler.onRequestSyncScrollBar(()=>this.viewport.syncScrollArea())),this.register(this.viewport),this.register(this.onCursorMove(()=>{this._renderService.handleCursorMove(),this._syncTextArea()})),this.register(this.onResize(()=>this._renderService.handleResize(this.cols,this.rows))),this.register(this.onBlur(()=>this._renderService.handleBlur())),this.register(this.onFocus(()=>this._renderService.handleFocus())),this.register(this._renderService.onDimensionsChange(()=>this.viewport.syncScrollArea())),this._selectionService=this.register(this._instantiationService.createInstance(T.SelectionService,this.element,this.screenElement,this.linkifier)),this._instantiationService.setService(R.ISelectionService,this._selectionService),this.register(this._selectionService.onRequestScrollLines(Oe=>this.scrollLines(Oe.amount,Oe.suppressScrollEvent))),this.register(this._selectionService.onSelectionChange(()=>this._onSelectionChange.fire())),this.register(this._selectionService.onRequestRedraw(Oe=>this._renderService.handleSelectionChanged(Oe.start,Oe.end,Oe.columnSelectMode))),this.register(this._selectionService.onLinuxMouseSelection(Oe=>{this.textarea.value=Oe,this.textarea.focus(),this.textarea.select()})),this.register(this._onScroll.event(Oe=>{this.viewport.syncScrollArea(),this._selectionService.refresh()})),this.register((0,m.addDisposableDomListener)(this._viewportElement,"scroll",()=>this._selectionService.refresh())),this.register(this._instantiationService.createInstance(C.BufferDecorationRenderer,this.screenElement)),this.register((0,m.addDisposableDomListener)(this.element,"mousedown",Oe=>this._selectionService.handleMouseDown(Oe))),this.coreMouseService.areMouseEventsActive?(this._selectionService.disable(),this.element.classList.add("enable-mouse-events")):this._selectionService.enable(),this.options.screenReaderMode&&(this._accessibilityManager.value=this._instantiationService.createInstance(De.AccessibilityManager,this)),this.register(this.optionsService.onSpecificOptionChange("screenReaderMode",Oe=>this._handleScreenReaderModeOptionChange(Oe))),this.options.overviewRulerWidth&&(this._overviewRulerRenderer=this.register(this._instantiationService.createInstance(_.OverviewRulerRenderer,this._viewportElement,this.screenElement))),this.optionsService.onSpecificOptionChange("overviewRulerWidth",Oe=>{!this._overviewRulerRenderer&&Oe&&this._viewportElement&&this.screenElement&&(this._overviewRulerRenderer=this.register(this._instantiationService.createInstance(_.OverviewRulerRenderer,this._viewportElement,this.screenElement)))}),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()}_createRenderer(){return this._instantiationService.createInstance(S.DomRenderer,this,this._document,this.element,this.screenElement,this._viewportElement,this._helperContainer,this.linkifier)}bindMouse(){let Se=this,q=this.element;function Oe(Rt){let ni=Se._mouseService.getMouseReportCoords(Rt,Se.screenElement);if(!ni)return!1;let Uo,Eo;switch(Rt.overrideType||Rt.type){case"mousemove":Eo=32,Rt.buttons===void 0?(Uo=3,Rt.button!==void 0&&(Uo=Rt.button<3?Rt.button:3)):Uo=1&Rt.buttons?0:4&Rt.buttons?1:2&Rt.buttons?2:3;break;case"mouseup":Eo=0,Uo=Rt.button<3?Rt.button:3;break;case"mousedown":Eo=1,Uo=Rt.button<3?Rt.button:3;break;case"wheel":if(Se._customWheelEventHandler&&Se._customWheelEventHandler(Rt)===!1||Se.viewport.getLinesScrolled(Rt)===0)return!1;Eo=Rt.deltaY<0?0:1,Uo=4;break;default:return!1}return!(Eo===void 0||Uo===void 0||Uo>4)&&Se.coreMouseService.triggerMouseEvent({col:ni.col,row:ni.row,x:ni.x,y:ni.y,button:Uo,action:Eo,ctrl:Rt.ctrlKey,alt:Rt.altKey,shift:Rt.shiftKey})}let Ke={mouseup:null,wheel:null,mousedrag:null,mousemove:null},Ct={mouseup:Rt=>(Oe(Rt),Rt.buttons||(this._document.removeEventListener("mouseup",Ke.mouseup),Ke.mousedrag&&this._document.removeEventListener("mousemove",Ke.mousedrag)),this.cancel(Rt)),wheel:Rt=>(Oe(Rt),this.cancel(Rt,!0)),mousedrag:Rt=>{Rt.buttons&&Oe(Rt)},mousemove:Rt=>{Rt.buttons||Oe(Rt)}};this.register(this.coreMouseService.onProtocolChange(Rt=>{Rt?(this.optionsService.rawOptions.logLevel==="debug"&&this._logService.debug("Binding to mouse events:",this.coreMouseService.explainEvents(Rt)),this.element.classList.add("enable-mouse-events"),this._selectionService.disable()):(this._logService.debug("Unbinding from mouse events."),this.element.classList.remove("enable-mouse-events"),this._selectionService.enable()),8&Rt?Ke.mousemove||(q.addEventListener("mousemove",Ct.mousemove),Ke.mousemove=Ct.mousemove):(q.removeEventListener("mousemove",Ke.mousemove),Ke.mousemove=null),16&Rt?Ke.wheel||(q.addEventListener("wheel",Ct.wheel,{passive:!1}),Ke.wheel=Ct.wheel):(q.removeEventListener("wheel",Ke.wheel),Ke.wheel=null),2&Rt?Ke.mouseup||(Ke.mouseup=Ct.mouseup):(this._document.removeEventListener("mouseup",Ke.mouseup),Ke.mouseup=null),4&Rt?Ke.mousedrag||(Ke.mousedrag=Ct.mousedrag):(this._document.removeEventListener("mousemove",Ke.mousedrag),Ke.mousedrag=null)})),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this.register((0,m.addDisposableDomListener)(q,"mousedown",Rt=>{if(Rt.preventDefault(),this.focus(),this.coreMouseService.areMouseEventsActive&&!this._selectionService.shouldForceSelection(Rt))return Oe(Rt),Ke.mouseup&&this._document.addEventListener("mouseup",Ke.mouseup),Ke.mousedrag&&this._document.addEventListener("mousemove",Ke.mousedrag),this.cancel(Rt)})),this.register((0,m.addDisposableDomListener)(q,"wheel",Rt=>{if(!Ke.wheel){if(this._customWheelEventHandler&&this._customWheelEventHandler(Rt)===!1)return!1;if(!this.buffer.hasScrollback){let ni=this.viewport.getLinesScrolled(Rt);if(ni===0)return;let Uo=Ie.C0.ESC+(this.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(Rt.deltaY<0?"A":"B"),Eo="";for(let Kr=0;Kr<Math.abs(ni);Kr++)Eo+=Uo;return this.coreService.triggerDataEvent(Eo,!0),this.cancel(Rt,!0)}return this.viewport.handleWheel(Rt)?this.cancel(Rt):void 0}},{passive:!1})),this.register((0,m.addDisposableDomListener)(q,"touchstart",Rt=>{if(!this.coreMouseService.areMouseEventsActive)return this.viewport.handleTouchStart(Rt),this.cancel(Rt)},{passive:!0})),this.register((0,m.addDisposableDomListener)(q,"touchmove",Rt=>{if(!this.coreMouseService.areMouseEventsActive)return this.viewport.handleTouchMove(Rt)?void 0:this.cancel(Rt)},{passive:!1}))}refresh(Se,q){this._renderService?.refreshRows(Se,q)}updateCursorStyle(Se){this._selectionService?.shouldColumnSelect(Se)?this.element.classList.add("column-select"):this.element.classList.remove("column-select")}_showCursor(){this.coreService.isCursorInitialized||(this.coreService.isCursorInitialized=!0,this.refresh(this.buffer.y,this.buffer.y))}scrollLines(Se,q,Oe=0){Oe===1?(super.scrollLines(Se,q,Oe),this.refresh(0,this.rows-1)):this.viewport?.scrollLines(Se)}paste(Se){(0,c.paste)(Se,this.textarea,this.coreService,this.optionsService)}attachCustomKeyEventHandler(Se){this._customKeyEventHandler=Se}attachCustomWheelEventHandler(Se){this._customWheelEventHandler=Se}registerLinkProvider(Se){return this._linkProviderService.registerLinkProvider(Se)}registerCharacterJoiner(Se){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");let q=this._characterJoinerService.register(Se);return this.refresh(0,this.rows-1),q}deregisterCharacterJoiner(Se){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");this._characterJoinerService.deregister(Se)&&this.refresh(0,this.rows-1)}get markers(){return this.buffer.markers}registerMarker(Se){return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+Se)}registerDecoration(Se){return this._decorationService.registerDecoration(Se)}hasSelection(){return!!this._selectionService&&this._selectionService.hasSelection}select(Se,q,Oe){this._selectionService.setSelection(Se,q,Oe)}getSelection(){return this._selectionService?this._selectionService.selectionText:""}getSelectionPosition(){if(this._selectionService&&this._selectionService.hasSelection)return{start:{x:this._selectionService.selectionStart[0],y:this._selectionService.selectionStart[1]},end:{x:this._selectionService.selectionEnd[0],y:this._selectionService.selectionEnd[1]}}}clearSelection(){this._selectionService?.clearSelection()}selectAll(){this._selectionService?.selectAll()}selectLines(Se,q){this._selectionService?.selectLines(Se,q)}_keyDown(Se){if(this._keyDownHandled=!1,this._keyDownSeen=!0,this._customKeyEventHandler&&this._customKeyEventHandler(Se)===!1)return!1;let q=this.browser.isMac&&this.options.macOptionIsMeta&&Se.altKey;if(!q&&!this._compositionHelper.keydown(Se))return this.options.scrollOnUserInput&&this.buffer.ybase!==this.buffer.ydisp&&this.scrollToBottom(),!1;q||Se.key!=="Dead"&&Se.key!=="AltGraph"||(this._unprocessedDeadKey=!0);let Oe=(0,de.evaluateKeyboardEvent)(Se,this.coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(Se),Oe.type===3||Oe.type===2){let Ke=this.rows-1;return this.scrollLines(Oe.type===2?-Ke:Ke),this.cancel(Se,!0)}return Oe.type===1&&this.selectAll(),!!this._isThirdLevelShift(this.browser,Se)||(Oe.cancel&&this.cancel(Se,!0),!Oe.key||!!(Se.key&&!Se.ctrlKey&&!Se.altKey&&!Se.metaKey&&Se.key.length===1&&Se.key.charCodeAt(0)>=65&&Se.key.charCodeAt(0)<=90)||(this._unprocessedDeadKey?(this._unprocessedDeadKey=!1,!0):(Oe.key!==Ie.C0.ETX&&Oe.key!==Ie.C0.CR||(this.textarea.value=""),this._onKey.fire({key:Oe.key,domEvent:Se}),this._showCursor(),this.coreService.triggerDataEvent(Oe.key,!0),!this.optionsService.rawOptions.screenReaderMode||Se.altKey||Se.ctrlKey?this.cancel(Se,!0):void(this._keyDownHandled=!0))))}_isThirdLevelShift(Se,q){let Oe=Se.isMac&&!this.options.macOptionIsMeta&&q.altKey&&!q.ctrlKey&&!q.metaKey||Se.isWindows&&q.altKey&&q.ctrlKey&&!q.metaKey||Se.isWindows&&q.getModifierState("AltGraph");return q.type==="keypress"?Oe:Oe&&(!q.keyCode||q.keyCode>47)}_keyUp(Se){this._keyDownSeen=!1,this._customKeyEventHandler&&this._customKeyEventHandler(Se)===!1||((function(q){return q.keyCode===16||q.keyCode===17||q.keyCode===18})(Se)||this.focus(),this.updateCursorStyle(Se),this._keyPressHandled=!1)}_keyPress(Se){let q;if(this._keyPressHandled=!1,this._keyDownHandled||this._customKeyEventHandler&&this._customKeyEventHandler(Se)===!1)return!1;if(this.cancel(Se),Se.charCode)q=Se.charCode;else if(Se.which===null||Se.which===void 0)q=Se.keyCode;else{if(Se.which===0||Se.charCode===0)return!1;q=Se.which}return!(!q||(Se.altKey||Se.ctrlKey||Se.metaKey)&&!this._isThirdLevelShift(this.browser,Se)||(q=String.fromCharCode(q),this._onKey.fire({key:q,domEvent:Se}),this._showCursor(),this.coreService.triggerDataEvent(q,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,0))}_inputEvent(Se){if(Se.data&&Se.inputType==="insertText"&&(!Se.composed||!this._keyDownSeen)&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;let q=Se.data;return this.coreService.triggerDataEvent(q,!0),this.cancel(Se),!0}return!1}resize(Se,q){Se!==this.cols||q!==this.rows?super.resize(Se,q):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure()}_afterResize(Se,q){this._charSizeService?.measure(),this.viewport?.syncScrollArea(!0)}clear(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.clearAllMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let Se=1;Se<this.rows;Se++)this.buffer.lines.push(this.buffer.getBlankLine(ce.DEFAULT_ATTR_DATA));this._onScroll.fire({position:this.buffer.ydisp,source:0}),this.viewport?.reset(),this.refresh(0,this.rows-1)}}reset(){this.options.rows=this.rows,this.options.cols=this.cols;let Se=this._customKeyEventHandler;this._setup(),super.reset(),this._selectionService?.reset(),this._decorationService.reset(),this.viewport?.reset(),this._customKeyEventHandler=Se,this.refresh(0,this.rows-1)}clearTextureAtlas(){this._renderService?.clearTextureAtlas()}_reportFocus(){this.element?.classList.contains("focus")?this.coreService.triggerDataEvent(Ie.C0.ESC+"[I"):this.coreService.triggerDataEvent(Ie.C0.ESC+"[O")}_reportWindowsOptions(Se){if(this._renderService)switch(Se){case ie.WindowsOptionsReportType.GET_WIN_SIZE_PIXELS:let q=this._renderService.dimensions.css.canvas.width.toFixed(0),Oe=this._renderService.dimensions.css.canvas.height.toFixed(0);this.coreService.triggerDataEvent(`${Ie.C0.ESC}[4;${Oe};${q}t`);break;case ie.WindowsOptionsReportType.GET_CELL_SIZE_PIXELS:let Ke=this._renderService.dimensions.css.cell.width.toFixed(0),Ct=this._renderService.dimensions.css.cell.height.toFixed(0);this.coreService.triggerDataEvent(`${Ie.C0.ESC}[6;${Ct};${Ke}t`)}}cancel(Se,q){if(this.options.cancelEvents||q)return Se.preventDefault(),Se.stopPropagation(),!1}}r.Terminal=it},9924:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.TimeBasedDebouncer=void 0,r.TimeBasedDebouncer=class{constructor(a,c=1e3){this._renderCallback=a,this._debounceThresholdMS=c,this._lastRefreshMs=0,this._additionalRefreshRequested=!1}dispose(){this._refreshTimeoutID&&clearTimeout(this._refreshTimeoutID)}refresh(a,c,m){this._rowCount=m,a=a!==void 0?a:0,c=c!==void 0?c:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,a):a,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,c):c;let p=Date.now();if(p-this._lastRefreshMs>=this._debounceThresholdMS)this._lastRefreshMs=p,this._innerRefresh();else if(!this._additionalRefreshRequested){let h=p-this._lastRefreshMs,g=this._debounceThresholdMS-h;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout(()=>{this._lastRefreshMs=Date.now(),this._innerRefresh(),this._additionalRefreshRequested=!1,this._refreshTimeoutID=void 0},g)}}_innerRefresh(){if(this._rowStart===void 0||this._rowEnd===void 0||this._rowCount===void 0)return;let a=Math.max(this._rowStart,0),c=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(a,c)}}},1680:function(o,r,a){var c=this&&this.__decorate||function(w,S,y,k){var I,E=arguments.length,N=E<3?S:k===null?k=Object.getOwnPropertyDescriptor(S,y):k;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")N=Reflect.decorate(w,S,y,k);else for(var T=w.length-1;T>=0;T--)(I=w[T])&&(N=(E<3?I(N):E>3?I(S,y,N):I(S,y))||N);return E>3&&N&&Object.defineProperty(S,y,N),N},m=this&&this.__param||function(w,S){return function(y,k){S(y,k,w)}};Object.defineProperty(r,"__esModule",{value:!0}),r.Viewport=void 0;let p=a(3656),h=a(4725),g=a(8460),M=a(844),C=a(2585),_=r.Viewport=class extends M.Disposable{constructor(w,S,y,k,I,E,N,T){super(),this._viewportElement=w,this._scrollArea=S,this._bufferService=y,this._optionsService=k,this._charSizeService=I,this._renderService=E,this._coreBrowserService=N,this.scrollBarWidth=0,this._currentRowHeight=0,this._currentDeviceCellHeight=0,this._lastRecordedBufferLength=0,this._lastRecordedViewportHeight=0,this._lastRecordedBufferHeight=0,this._lastTouchY=0,this._lastScrollTop=0,this._wheelPartialScroll=0,this._refreshAnimationFrame=null,this._ignoreNextScrollEvent=!1,this._smoothScrollState={startTime:0,origin:-1,target:-1},this._onRequestScrollLines=this.register(new g.EventEmitter),this.onRequestScrollLines=this._onRequestScrollLines.event,this.scrollBarWidth=this._viewportElement.offsetWidth-this._scrollArea.offsetWidth||15,this.register((0,p.addDisposableDomListener)(this._viewportElement,"scroll",this._handleScroll.bind(this))),this._activeBuffer=this._bufferService.buffer,this.register(this._bufferService.buffers.onBufferActivate(R=>this._activeBuffer=R.activeBuffer)),this._renderDimensions=this._renderService.dimensions,this.register(this._renderService.onDimensionsChange(R=>this._renderDimensions=R)),this._handleThemeChange(T.colors),this.register(T.onChangeColors(R=>this._handleThemeChange(R))),this.register(this._optionsService.onSpecificOptionChange("scrollback",()=>this.syncScrollArea())),setTimeout(()=>this.syncScrollArea())}_handleThemeChange(w){this._viewportElement.style.backgroundColor=w.background.css}reset(){this._currentRowHeight=0,this._currentDeviceCellHeight=0,this._lastRecordedBufferLength=0,this._lastRecordedViewportHeight=0,this._lastRecordedBufferHeight=0,this._lastTouchY=0,this._lastScrollTop=0,this._coreBrowserService.window.requestAnimationFrame(()=>this.syncScrollArea())}_refresh(w){if(w)return this._innerRefresh(),void(this._refreshAnimationFrame!==null&&this._coreBrowserService.window.cancelAnimationFrame(this._refreshAnimationFrame));this._refreshAnimationFrame===null&&(this._refreshAnimationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._innerRefresh()))}_innerRefresh(){if(this._charSizeService.height>0){this._currentRowHeight=this._renderDimensions.device.cell.height/this._coreBrowserService.dpr,this._currentDeviceCellHeight=this._renderDimensions.device.cell.height,this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;let S=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderDimensions.css.canvas.height);this._lastRecordedBufferHeight!==S&&(this._lastRecordedBufferHeight=S,this._scrollArea.style.height=this._lastRecordedBufferHeight+"px")}let w=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==w&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=w),this._refreshAnimationFrame=null}syncScrollArea(w=!1){if(this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=this._bufferService.buffer.lines.length,void this._refresh(w);this._lastRecordedViewportHeight===this._renderService.dimensions.css.canvas.height&&this._lastScrollTop===this._activeBuffer.ydisp*this._currentRowHeight&&this._renderDimensions.device.cell.height===this._currentDeviceCellHeight||this._refresh(w)}_handleScroll(w){if(this._lastScrollTop=this._viewportElement.scrollTop,!this._viewportElement.offsetParent)return;if(this._ignoreNextScrollEvent)return this._ignoreNextScrollEvent=!1,void this._onRequestScrollLines.fire({amount:0,suppressScrollEvent:!0});let S=Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp;this._onRequestScrollLines.fire({amount:S,suppressScrollEvent:!0})}_smoothScroll(){if(this._isDisposed||this._smoothScrollState.origin===-1||this._smoothScrollState.target===-1)return;let w=this._smoothScrollPercent();this._viewportElement.scrollTop=this._smoothScrollState.origin+Math.round(w*(this._smoothScrollState.target-this._smoothScrollState.origin)),w<1?this._coreBrowserService.window.requestAnimationFrame(()=>this._smoothScroll()):this._clearSmoothScrollState()}_smoothScrollPercent(){return this._optionsService.rawOptions.smoothScrollDuration&&this._smoothScrollState.startTime?Math.max(Math.min((Date.now()-this._smoothScrollState.startTime)/this._optionsService.rawOptions.smoothScrollDuration,1),0):1}_clearSmoothScrollState(){this._smoothScrollState.startTime=0,this._smoothScrollState.origin=-1,this._smoothScrollState.target=-1}_bubbleScroll(w,S){let y=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(S<0&&this._viewportElement.scrollTop!==0||S>0&&y<this._lastRecordedBufferHeight)||(w.cancelable&&w.preventDefault(),!1)}handleWheel(w){let S=this._getPixelsScrolled(w);return S!==0&&(this._optionsService.rawOptions.smoothScrollDuration?(this._smoothScrollState.startTime=Date.now(),this._smoothScrollPercent()<1?(this._smoothScrollState.origin=this._viewportElement.scrollTop,this._smoothScrollState.target===-1?this._smoothScrollState.target=this._viewportElement.scrollTop+S:this._smoothScrollState.target+=S,this._smoothScrollState.target=Math.max(Math.min(this._smoothScrollState.target,this._viewportElement.scrollHeight),0),this._smoothScroll()):this._clearSmoothScrollState()):this._viewportElement.scrollTop+=S,this._bubbleScroll(w,S))}scrollLines(w){if(w!==0)if(this._optionsService.rawOptions.smoothScrollDuration){let S=w*this._currentRowHeight;this._smoothScrollState.startTime=Date.now(),this._smoothScrollPercent()<1?(this._smoothScrollState.origin=this._viewportElement.scrollTop,this._smoothScrollState.target=this._smoothScrollState.origin+S,this._smoothScrollState.target=Math.max(Math.min(this._smoothScrollState.target,this._viewportElement.scrollHeight),0),this._smoothScroll()):this._clearSmoothScrollState()}else this._onRequestScrollLines.fire({amount:w,suppressScrollEvent:!1})}_getPixelsScrolled(w){if(w.deltaY===0||w.shiftKey)return 0;let S=this._applyScrollModifier(w.deltaY,w);return w.deltaMode===WheelEvent.DOM_DELTA_LINE?S*=this._currentRowHeight:w.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(S*=this._currentRowHeight*this._bufferService.rows),S}getBufferElements(w,S){let y,k="",I=[],E=S??this._bufferService.buffer.lines.length,N=this._bufferService.buffer.lines;for(let T=w;T<E;T++){let R=N.get(T);if(!R)continue;let W=N.get(T+1)?.isWrapped;if(k+=R.translateToString(!W),!W||T===N.length-1){let pe=document.createElement("div");pe.textContent=k,I.push(pe),k.length>0&&(y=pe),k=""}}return{bufferElements:I,cursorElement:y}}getLinesScrolled(w){if(w.deltaY===0||w.shiftKey)return 0;let S=this._applyScrollModifier(w.deltaY,w);return w.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(S/=this._currentRowHeight+0,this._wheelPartialScroll+=S,S=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):w.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(S*=this._bufferService.rows),S}_applyScrollModifier(w,S){let y=this._optionsService.rawOptions.fastScrollModifier;return y==="alt"&&S.altKey||y==="ctrl"&&S.ctrlKey||y==="shift"&&S.shiftKey?w*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:w*this._optionsService.rawOptions.scrollSensitivity}handleTouchStart(w){this._lastTouchY=w.touches[0].pageY}handleTouchMove(w){let S=this._lastTouchY-w.touches[0].pageY;return this._lastTouchY=w.touches[0].pageY,S!==0&&(this._viewportElement.scrollTop+=S,this._bubbleScroll(w,S))}};r.Viewport=_=c([m(2,C.IBufferService),m(3,C.IOptionsService),m(4,h.ICharSizeService),m(5,h.IRenderService),m(6,h.ICoreBrowserService),m(7,h.IThemeService)],_)},3107:function(o,r,a){var c=this&&this.__decorate||function(C,_,w,S){var y,k=arguments.length,I=k<3?_:S===null?S=Object.getOwnPropertyDescriptor(_,w):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")I=Reflect.decorate(C,_,w,S);else for(var E=C.length-1;E>=0;E--)(y=C[E])&&(I=(k<3?y(I):k>3?y(_,w,I):y(_,w))||I);return k>3&&I&&Object.defineProperty(_,w,I),I},m=this&&this.__param||function(C,_){return function(w,S){_(w,S,C)}};Object.defineProperty(r,"__esModule",{value:!0}),r.BufferDecorationRenderer=void 0;let p=a(4725),h=a(844),g=a(2585),M=r.BufferDecorationRenderer=class extends h.Disposable{constructor(C,_,w,S,y){super(),this._screenElement=C,this._bufferService=_,this._coreBrowserService=w,this._decorationService=S,this._renderService=y,this._decorationElements=new Map,this._altBufferIsActive=!1,this._dimensionsChanged=!1,this._container=document.createElement("div"),this._container.classList.add("xterm-decoration-container"),this._screenElement.appendChild(this._container),this.register(this._renderService.onRenderedViewportChange(()=>this._doRefreshDecorations())),this.register(this._renderService.onDimensionsChange(()=>{this._dimensionsChanged=!0,this._queueRefresh()})),this.register(this._coreBrowserService.onDprChange(()=>this._queueRefresh())),this.register(this._bufferService.buffers.onBufferActivate(()=>{this._altBufferIsActive=this._bufferService.buffer===this._bufferService.buffers.alt})),this.register(this._decorationService.onDecorationRegistered(()=>this._queueRefresh())),this.register(this._decorationService.onDecorationRemoved(k=>this._removeDecoration(k))),this.register((0,h.toDisposable)(()=>{this._container.remove(),this._decorationElements.clear()}))}_queueRefresh(){this._animationFrame===void 0&&(this._animationFrame=this._renderService.addRefreshCallback(()=>{this._doRefreshDecorations(),this._animationFrame=void 0}))}_doRefreshDecorations(){for(let C of this._decorationService.decorations)this._renderDecoration(C);this._dimensionsChanged=!1}_renderDecoration(C){this._refreshStyle(C),this._dimensionsChanged&&this._refreshXPosition(C)}_createElement(C){let _=this._coreBrowserService.mainDocument.createElement("div");_.classList.add("xterm-decoration"),_.classList.toggle("xterm-decoration-top-layer",C?.options?.layer==="top"),_.style.width=`${Math.round((C.options.width||1)*this._renderService.dimensions.css.cell.width)}px`,_.style.height=(C.options.height||1)*this._renderService.dimensions.css.cell.height+"px",_.style.top=(C.marker.line-this._bufferService.buffers.active.ydisp)*this._renderService.dimensions.css.cell.height+"px",_.style.lineHeight=`${this._renderService.dimensions.css.cell.height}px`;let w=C.options.x??0;return w&&w>this._bufferService.cols&&(_.style.display="none"),this._refreshXPosition(C,_),_}_refreshStyle(C){let _=C.marker.line-this._bufferService.buffers.active.ydisp;if(_<0||_>=this._bufferService.rows)C.element&&(C.element.style.display="none",C.onRenderEmitter.fire(C.element));else{let w=this._decorationElements.get(C);w||(w=this._createElement(C),C.element=w,this._decorationElements.set(C,w),this._container.appendChild(w),C.onDispose(()=>{this._decorationElements.delete(C),w.remove()})),w.style.top=_*this._renderService.dimensions.css.cell.height+"px",w.style.display=this._altBufferIsActive?"none":"block",C.onRenderEmitter.fire(w)}}_refreshXPosition(C,_=C.element){if(!_)return;let w=C.options.x??0;(C.options.anchor||"left")==="right"?_.style.right=w?w*this._renderService.dimensions.css.cell.width+"px":"":_.style.left=w?w*this._renderService.dimensions.css.cell.width+"px":""}_removeDecoration(C){this._decorationElements.get(C)?.remove(),this._decorationElements.delete(C),C.dispose()}};r.BufferDecorationRenderer=M=c([m(1,g.IBufferService),m(2,p.ICoreBrowserService),m(3,g.IDecorationService),m(4,p.IRenderService)],M)},5871:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ColorZoneStore=void 0,r.ColorZoneStore=class{constructor(){this._zones=[],this._zonePool=[],this._zonePoolIndex=0,this._linePadding={full:0,left:0,center:0,right:0}}get zones(){return this._zonePool.length=Math.min(this._zonePool.length,this._zones.length),this._zones}clear(){this._zones.length=0,this._zonePoolIndex=0}addDecoration(a){if(a.options.overviewRulerOptions){for(let c of this._zones)if(c.color===a.options.overviewRulerOptions.color&&c.position===a.options.overviewRulerOptions.position){if(this._lineIntersectsZone(c,a.marker.line))return;if(this._lineAdjacentToZone(c,a.marker.line,a.options.overviewRulerOptions.position))return void this._addLineToZone(c,a.marker.line)}if(this._zonePoolIndex<this._zonePool.length)return this._zonePool[this._zonePoolIndex].color=a.options.overviewRulerOptions.color,this._zonePool[this._zonePoolIndex].position=a.options.overviewRulerOptions.position,this._zonePool[this._zonePoolIndex].startBufferLine=a.marker.line,this._zonePool[this._zonePoolIndex].endBufferLine=a.marker.line,void this._zones.push(this._zonePool[this._zonePoolIndex++]);this._zones.push({color:a.options.overviewRulerOptions.color,position:a.options.overviewRulerOptions.position,startBufferLine:a.marker.line,endBufferLine:a.marker.line}),this._zonePool.push(this._zones[this._zones.length-1]),this._zonePoolIndex++}}setPadding(a){this._linePadding=a}_lineIntersectsZone(a,c){return c>=a.startBufferLine&&c<=a.endBufferLine}_lineAdjacentToZone(a,c,m){return c>=a.startBufferLine-this._linePadding[m||"full"]&&c<=a.endBufferLine+this._linePadding[m||"full"]}_addLineToZone(a,c){a.startBufferLine=Math.min(a.startBufferLine,c),a.endBufferLine=Math.max(a.endBufferLine,c)}}},5744:function(o,r,a){var c=this&&this.__decorate||function(y,k,I,E){var N,T=arguments.length,R=T<3?k:E===null?E=Object.getOwnPropertyDescriptor(k,I):E;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")R=Reflect.decorate(y,k,I,E);else for(var W=y.length-1;W>=0;W--)(N=y[W])&&(R=(T<3?N(R):T>3?N(k,I,R):N(k,I))||R);return T>3&&R&&Object.defineProperty(k,I,R),R},m=this&&this.__param||function(y,k){return function(I,E){k(I,E,y)}};Object.defineProperty(r,"__esModule",{value:!0}),r.OverviewRulerRenderer=void 0;let p=a(5871),h=a(4725),g=a(844),M=a(2585),C={full:0,left:0,center:0,right:0},_={full:0,left:0,center:0,right:0},w={full:0,left:0,center:0,right:0},S=r.OverviewRulerRenderer=class extends g.Disposable{get _width(){return this._optionsService.options.overviewRulerWidth||0}constructor(y,k,I,E,N,T,R){super(),this._viewportElement=y,this._screenElement=k,this._bufferService=I,this._decorationService=E,this._renderService=N,this._optionsService=T,this._coreBrowserService=R,this._colorZoneStore=new p.ColorZoneStore,this._shouldUpdateDimensions=!0,this._shouldUpdateAnchor=!0,this._lastKnownBufferLength=0,this._canvas=this._coreBrowserService.mainDocument.createElement("canvas"),this._canvas.classList.add("xterm-decoration-overview-ruler"),this._refreshCanvasDimensions(),this._viewportElement.parentElement?.insertBefore(this._canvas,this._viewportElement);let W=this._canvas.getContext("2d");if(!W)throw new Error("Ctx cannot be null");this._ctx=W,this._registerDecorationListeners(),this._registerBufferChangeListeners(),this._registerDimensionChangeListeners(),this.register((0,g.toDisposable)(()=>{this._canvas?.remove()}))}_registerDecorationListeners(){this.register(this._decorationService.onDecorationRegistered(()=>this._queueRefresh(void 0,!0))),this.register(this._decorationService.onDecorationRemoved(()=>this._queueRefresh(void 0,!0)))}_registerBufferChangeListeners(){this.register(this._renderService.onRenderedViewportChange(()=>this._queueRefresh())),this.register(this._bufferService.buffers.onBufferActivate(()=>{this._canvas.style.display=this._bufferService.buffer===this._bufferService.buffers.alt?"none":"block"})),this.register(this._bufferService.onScroll(()=>{this._lastKnownBufferLength!==this._bufferService.buffers.normal.lines.length&&(this._refreshDrawHeightConstants(),this._refreshColorZonePadding())}))}_registerDimensionChangeListeners(){this.register(this._renderService.onRender(()=>{this._containerHeight&&this._containerHeight===this._screenElement.clientHeight||(this._queueRefresh(!0),this._containerHeight=this._screenElement.clientHeight)})),this.register(this._optionsService.onSpecificOptionChange("overviewRulerWidth",()=>this._queueRefresh(!0))),this.register(this._coreBrowserService.onDprChange(()=>this._queueRefresh(!0))),this._queueRefresh(!0)}_refreshDrawConstants(){let y=Math.floor(this._canvas.width/3),k=Math.ceil(this._canvas.width/3);_.full=this._canvas.width,_.left=y,_.center=k,_.right=y,this._refreshDrawHeightConstants(),w.full=0,w.left=0,w.center=_.left,w.right=_.left+_.center}_refreshDrawHeightConstants(){C.full=Math.round(2*this._coreBrowserService.dpr);let y=this._canvas.height/this._bufferService.buffer.lines.length,k=Math.round(Math.max(Math.min(y,12),6)*this._coreBrowserService.dpr);C.left=k,C.center=k,C.right=k}_refreshColorZonePadding(){this._colorZoneStore.setPadding({full:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*C.full),left:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*C.left),center:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*C.center),right:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*C.right)}),this._lastKnownBufferLength=this._bufferService.buffers.normal.lines.length}_refreshCanvasDimensions(){this._canvas.style.width=`${this._width}px`,this._canvas.width=Math.round(this._width*this._coreBrowserService.dpr),this._canvas.style.height=`${this._screenElement.clientHeight}px`,this._canvas.height=Math.round(this._screenElement.clientHeight*this._coreBrowserService.dpr),this._refreshDrawConstants(),this._refreshColorZonePadding()}_refreshDecorations(){this._shouldUpdateDimensions&&this._refreshCanvasDimensions(),this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height),this._colorZoneStore.clear();for(let k of this._decorationService.decorations)this._colorZoneStore.addDecoration(k);this._ctx.lineWidth=1;let y=this._colorZoneStore.zones;for(let k of y)k.position!=="full"&&this._renderColorZone(k);for(let k of y)k.position==="full"&&this._renderColorZone(k);this._shouldUpdateDimensions=!1,this._shouldUpdateAnchor=!1}_renderColorZone(y){this._ctx.fillStyle=y.color,this._ctx.fillRect(w[y.position||"full"],Math.round((this._canvas.height-1)*(y.startBufferLine/this._bufferService.buffers.active.lines.length)-C[y.position||"full"]/2),_[y.position||"full"],Math.round((this._canvas.height-1)*((y.endBufferLine-y.startBufferLine)/this._bufferService.buffers.active.lines.length)+C[y.position||"full"]))}_queueRefresh(y,k){this._shouldUpdateDimensions=y||this._shouldUpdateDimensions,this._shouldUpdateAnchor=k||this._shouldUpdateAnchor,this._animationFrame===void 0&&(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>{this._refreshDecorations(),this._animationFrame=void 0}))}};r.OverviewRulerRenderer=S=c([m(2,M.IBufferService),m(3,M.IDecorationService),m(4,h.IRenderService),m(5,M.IOptionsService),m(6,h.ICoreBrowserService)],S)},2950:function(o,r,a){var c=this&&this.__decorate||function(C,_,w,S){var y,k=arguments.length,I=k<3?_:S===null?S=Object.getOwnPropertyDescriptor(_,w):S;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")I=Reflect.decorate(C,_,w,S);else for(var E=C.length-1;E>=0;E--)(y=C[E])&&(I=(k<3?y(I):k>3?y(_,w,I):y(_,w))||I);return k>3&&I&&Object.defineProperty(_,w,I),I},m=this&&this.__param||function(C,_){return function(w,S){_(w,S,C)}};Object.defineProperty(r,"__esModule",{value:!0}),r.CompositionHelper=void 0;let p=a(4725),h=a(2585),g=a(2584),M=r.CompositionHelper=class{get isComposing(){return this._isComposing}constructor(C,_,w,S,y,k){this._textarea=C,this._compositionView=_,this._bufferService=w,this._optionsService=S,this._coreService=y,this._renderService=k,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=""}compositionstart(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent="",this._dataAlreadySent="",this._compositionView.classList.add("active")}compositionupdate(C){this._compositionView.textContent=C.data,this.updateCompositionElements(),setTimeout(()=>{this._compositionPosition.end=this._textarea.value.length},0)}compositionend(){this._finalizeComposition(!0)}keydown(C){if(this._isComposing||this._isSendingComposition){if(C.keyCode===229||C.keyCode===16||C.keyCode===17||C.keyCode===18)return!1;this._finalizeComposition(!1)}return C.keyCode!==229||(this._handleAnyTextareaChanges(),!1)}_finalizeComposition(C){if(this._compositionView.classList.remove("active"),this._isComposing=!1,C){let _={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout(()=>{if(this._isSendingComposition){let w;this._isSendingComposition=!1,_.start+=this._dataAlreadySent.length,w=this._isComposing?this._textarea.value.substring(_.start,_.end):this._textarea.value.substring(_.start),w.length>0&&this._coreService.triggerDataEvent(w,!0)}},0)}else{this._isSendingComposition=!1;let _=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(_,!0)}}_handleAnyTextareaChanges(){let C=this._textarea.value;setTimeout(()=>{if(!this._isComposing){let _=this._textarea.value,w=_.replace(C,"");this._dataAlreadySent=w,_.length>C.length?this._coreService.triggerDataEvent(w,!0):_.length<C.length?this._coreService.triggerDataEvent(`${g.C0.DEL}`,!0):_.length===C.length&&_!==C&&this._coreService.triggerDataEvent(_,!0)}},0)}updateCompositionElements(C){if(this._isComposing){if(this._bufferService.buffer.isCursorInViewport){let _=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1),w=this._renderService.dimensions.css.cell.height,S=this._bufferService.buffer.y*this._renderService.dimensions.css.cell.height,y=_*this._renderService.dimensions.css.cell.width;this._compositionView.style.left=y+"px",this._compositionView.style.top=S+"px",this._compositionView.style.height=w+"px",this._compositionView.style.lineHeight=w+"px",this._compositionView.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._compositionView.style.fontSize=this._optionsService.rawOptions.fontSize+"px";let k=this._compositionView.getBoundingClientRect();this._textarea.style.left=y+"px",this._textarea.style.top=S+"px",this._textarea.style.width=Math.max(k.width,1)+"px",this._textarea.style.height=Math.max(k.height,1)+"px",this._textarea.style.lineHeight=k.height+"px"}C||setTimeout(()=>this.updateCompositionElements(!0),0)}}};r.CompositionHelper=M=c([m(2,h.IBufferService),m(3,h.IOptionsService),m(4,h.ICoreService),m(5,p.IRenderService)],M)},9806:(o,r)=>{function a(c,m,p){let h=p.getBoundingClientRect(),g=c.getComputedStyle(p),M=parseInt(g.getPropertyValue("padding-left")),C=parseInt(g.getPropertyValue("padding-top"));return[m.clientX-h.left-M,m.clientY-h.top-C]}Object.defineProperty(r,"__esModule",{value:!0}),r.getCoords=r.getCoordsRelativeToElement=void 0,r.getCoordsRelativeToElement=a,r.getCoords=function(c,m,p,h,g,M,C,_,w){if(!M)return;let S=a(c,m,p);return S?(S[0]=Math.ceil((S[0]+(w?C/2:0))/C),S[1]=Math.ceil(S[1]/_),S[0]=Math.min(Math.max(S[0],1),h+(w?1:0)),S[1]=Math.min(Math.max(S[1],1),g),S):void 0}},9504:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.moveToCellSequence=void 0;let c=a(2584);function m(_,w,S,y){let k=_-p(_,S),I=w-p(w,S),E=Math.abs(k-I)-(function(N,T,R){let W=0,pe=N-p(N,R),_e=T-p(T,R);for(let G=0;G<Math.abs(pe-_e);G++){let ue=h(N,T)==="A"?-1:1;R.buffer.lines.get(pe+ue*G)?.isWrapped&&W++}return W})(_,w,S);return C(E,M(h(_,w),y))}function p(_,w){let S=0,y=w.buffer.lines.get(_),k=y?.isWrapped;for(;k&&_>=0&&_<w.rows;)S++,y=w.buffer.lines.get(--_),k=y?.isWrapped;return S}function h(_,w){return _>w?"A":"B"}function g(_,w,S,y,k,I){let E=_,N=w,T="";for(;E!==S||N!==y;)E+=k?1:-1,k&&E>I.cols-1?(T+=I.buffer.translateBufferLineToString(N,!1,_,E),E=0,_=0,N++):!k&&E<0&&(T+=I.buffer.translateBufferLineToString(N,!1,0,_+1),E=I.cols-1,_=E,N--);return T+I.buffer.translateBufferLineToString(N,!1,_,E)}function M(_,w){let S=w?"O":"[";return c.C0.ESC+S+_}function C(_,w){_=Math.floor(_);let S="";for(let y=0;y<_;y++)S+=w;return S}r.moveToCellSequence=function(_,w,S,y){let k=S.buffer.x,I=S.buffer.y;if(!S.buffer.hasScrollback)return(function(T,R,W,pe,_e,G){return m(R,pe,_e,G).length===0?"":C(g(T,R,T,R-p(R,_e),!1,_e).length,M("D",G))})(k,I,0,w,S,y)+m(I,w,S,y)+(function(T,R,W,pe,_e,G){let ue;ue=m(R,pe,_e,G).length>0?pe-p(pe,_e):R;let ye=pe,ce=(function(Ie,de,V,Y,ne,ie){let De;return De=m(V,Y,ne,ie).length>0?Y-p(Y,ne):de,Ie<V&&De<=Y||Ie>=V&&De<Y?"C":"D"})(T,R,W,pe,_e,G);return C(g(T,ue,W,ye,ce==="C",_e).length,M(ce,G))})(k,I,_,w,S,y);let E;if(I===w)return E=k>_?"D":"C",C(Math.abs(k-_),M(E,y));E=I>w?"D":"C";let N=Math.abs(I-w);return C((function(T,R){return R.cols-T})(I>w?_:k,S)+(N-1)*S.cols+1+((I>w?k:_)-1),M(E,y))}},1296:function(o,r,a){var c=this&&this.__decorate||function(G,ue,ye,ce){var Ie,de=arguments.length,V=de<3?ue:ce===null?ce=Object.getOwnPropertyDescriptor(ue,ye):ce;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")V=Reflect.decorate(G,ue,ye,ce);else for(var Y=G.length-1;Y>=0;Y--)(Ie=G[Y])&&(V=(de<3?Ie(V):de>3?Ie(ue,ye,V):Ie(ue,ye))||V);return de>3&&V&&Object.defineProperty(ue,ye,V),V},m=this&&this.__param||function(G,ue){return function(ye,ce){ue(ye,ce,G)}};Object.defineProperty(r,"__esModule",{value:!0}),r.DomRenderer=void 0;let p=a(3787),h=a(2550),g=a(2223),M=a(6171),C=a(6052),_=a(4725),w=a(8055),S=a(8460),y=a(844),k=a(2585),I="xterm-dom-renderer-owner-",E="xterm-rows",N="xterm-fg-",T="xterm-bg-",R="xterm-focus",W="xterm-selection",pe=1,_e=r.DomRenderer=class extends y.Disposable{constructor(G,ue,ye,ce,Ie,de,V,Y,ne,ie,De,$e,it){super(),this._terminal=G,this._document=ue,this._element=ye,this._screenElement=ce,this._viewportElement=Ie,this._helperContainer=de,this._linkifier2=V,this._charSizeService=ne,this._optionsService=ie,this._bufferService=De,this._coreBrowserService=$e,this._themeService=it,this._terminalClass=pe++,this._rowElements=[],this._selectionRenderModel=(0,C.createSelectionRenderModel)(),this.onRequestRedraw=this.register(new S.EventEmitter).event,this._rowContainer=this._document.createElement("div"),this._rowContainer.classList.add(E),this._rowContainer.style.lineHeight="normal",this._rowContainer.setAttribute("aria-hidden","true"),this._refreshRowElements(this._bufferService.cols,this._bufferService.rows),this._selectionContainer=this._document.createElement("div"),this._selectionContainer.classList.add(W),this._selectionContainer.setAttribute("aria-hidden","true"),this.dimensions=(0,M.createRenderDimensions)(),this._updateDimensions(),this.register(this._optionsService.onOptionChange(()=>this._handleOptionsChanged())),this.register(this._themeService.onChangeColors(et=>this._injectCss(et))),this._injectCss(this._themeService.colors),this._rowFactory=Y.createInstance(p.DomRendererRowFactory,document),this._element.classList.add(I+this._terminalClass),this._screenElement.appendChild(this._rowContainer),this._screenElement.appendChild(this._selectionContainer),this.register(this._linkifier2.onShowLinkUnderline(et=>this._handleLinkHover(et))),this.register(this._linkifier2.onHideLinkUnderline(et=>this._handleLinkLeave(et))),this.register((0,y.toDisposable)(()=>{this._element.classList.remove(I+this._terminalClass),this._rowContainer.remove(),this._selectionContainer.remove(),this._widthCache.dispose(),this._themeStyleElement.remove(),this._dimensionsStyleElement.remove()})),this._widthCache=new h.WidthCache(this._document,this._helperContainer),this._widthCache.setFont(this._optionsService.rawOptions.fontFamily,this._optionsService.rawOptions.fontSize,this._optionsService.rawOptions.fontWeight,this._optionsService.rawOptions.fontWeightBold),this._setDefaultSpacing()}_updateDimensions(){let G=this._coreBrowserService.dpr;this.dimensions.device.char.width=this._charSizeService.width*G,this.dimensions.device.char.height=Math.ceil(this._charSizeService.height*G),this.dimensions.device.cell.width=this.dimensions.device.char.width+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.device.cell.height=Math.floor(this.dimensions.device.char.height*this._optionsService.rawOptions.lineHeight),this.dimensions.device.char.left=0,this.dimensions.device.char.top=0,this.dimensions.device.canvas.width=this.dimensions.device.cell.width*this._bufferService.cols,this.dimensions.device.canvas.height=this.dimensions.device.cell.height*this._bufferService.rows,this.dimensions.css.canvas.width=Math.round(this.dimensions.device.canvas.width/G),this.dimensions.css.canvas.height=Math.round(this.dimensions.device.canvas.height/G),this.dimensions.css.cell.width=this.dimensions.css.canvas.width/this._bufferService.cols,this.dimensions.css.cell.height=this.dimensions.css.canvas.height/this._bufferService.rows;for(let ye of this._rowElements)ye.style.width=`${this.dimensions.css.canvas.width}px`,ye.style.height=`${this.dimensions.css.cell.height}px`,ye.style.lineHeight=`${this.dimensions.css.cell.height}px`,ye.style.overflow="hidden";this._dimensionsStyleElement||(this._dimensionsStyleElement=this._document.createElement("style"),this._screenElement.appendChild(this._dimensionsStyleElement));let ue=`${this._terminalSelector} .${E} span { display: inline-block; height: 100%; vertical-align: top;}`;this._dimensionsStyleElement.textContent=ue,this._selectionContainer.style.height=this._viewportElement.style.height,this._screenElement.style.width=`${this.dimensions.css.canvas.width}px`,this._screenElement.style.height=`${this.dimensions.css.canvas.height}px`}_injectCss(G){this._themeStyleElement||(this._themeStyleElement=this._document.createElement("style"),this._screenElement.appendChild(this._themeStyleElement));let ue=`${this._terminalSelector} .${E} { color: ${G.foreground.css}; font-family: ${this._optionsService.rawOptions.fontFamily}; font-size: ${this._optionsService.rawOptions.fontSize}px; font-kerning: none; white-space: pre}`;ue+=`${this._terminalSelector} .${E} .xterm-dim { color: ${w.color.multiplyOpacity(G.foreground,.5).css};}`,ue+=`${this._terminalSelector} span:not(.xterm-bold) { font-weight: ${this._optionsService.rawOptions.fontWeight};}${this._terminalSelector} span.xterm-bold { font-weight: ${this._optionsService.rawOptions.fontWeightBold};}${this._terminalSelector} span.xterm-italic { font-style: italic;}`;let ye=`blink_underline_${this._terminalClass}`,ce=`blink_bar_${this._terminalClass}`,Ie=`blink_block_${this._terminalClass}`;ue+=`@keyframes ${ye} { 50% { border-bottom-style: hidden; }}`,ue+=`@keyframes ${ce} { 50% { box-shadow: none; }}`,ue+=`@keyframes ${Ie} { 0% { background-color: ${G.cursor.css}; color: ${G.cursorAccent.css}; } 50% { background-color: inherit; color: ${G.cursor.css}; }}`,ue+=`${this._terminalSelector} .${E}.${R} .xterm-cursor.xterm-cursor-blink.xterm-cursor-underline { animation: ${ye} 1s step-end infinite;}${this._terminalSelector} .${E}.${R} .xterm-cursor.xterm-cursor-blink.xterm-cursor-bar { animation: ${ce} 1s step-end infinite;}${this._terminalSelector} .${E}.${R} .xterm-cursor.xterm-cursor-blink.xterm-cursor-block { animation: ${Ie} 1s step-end infinite;}${this._terminalSelector} .${E} .xterm-cursor.xterm-cursor-block { background-color: ${G.cursor.css}; color: ${G.cursorAccent.css};}${this._terminalSelector} .${E} .xterm-cursor.xterm-cursor-block:not(.xterm-cursor-blink) { background-color: ${G.cursor.css} !important; color: ${G.cursorAccent.css} !important;}${this._terminalSelector} .${E} .xterm-cursor.xterm-cursor-outline { outline: 1px solid ${G.cursor.css}; outline-offset: -1px;}${this._terminalSelector} .${E} .xterm-cursor.xterm-cursor-bar { box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${G.cursor.css} inset;}${this._terminalSelector} .${E} .xterm-cursor.xterm-cursor-underline { border-bottom: 1px ${G.cursor.css}; border-bottom-style: solid; height: calc(100% - 1px);}`,ue+=`${this._terminalSelector} .${W} { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}${this._terminalSelector}.focus .${W} div { position: absolute; background-color: ${G.selectionBackgroundOpaque.css};}${this._terminalSelector} .${W} div { position: absolute; background-color: ${G.selectionInactiveBackgroundOpaque.css};}`;for(let[de,V]of G.ansi.entries())ue+=`${this._terminalSelector} .${N}${de} { color: ${V.css}; }${this._terminalSelector} .${N}${de}.xterm-dim { color: ${w.color.multiplyOpacity(V,.5).css}; }${this._terminalSelector} .${T}${de} { background-color: ${V.css}; }`;ue+=`${this._terminalSelector} .${N}${g.INVERTED_DEFAULT_COLOR} { color: ${w.color.opaque(G.background).css}; }${this._terminalSelector} .${N}${g.INVERTED_DEFAULT_COLOR}.xterm-dim { color: ${w.color.multiplyOpacity(w.color.opaque(G.background),.5).css}; }${this._terminalSelector} .${T}${g.INVERTED_DEFAULT_COLOR} { background-color: ${G.foreground.css}; }`,this._themeStyleElement.textContent=ue}_setDefaultSpacing(){let G=this.dimensions.css.cell.width-this._widthCache.get("W",!1,!1);this._rowContainer.style.letterSpacing=`${G}px`,this._rowFactory.defaultSpacing=G}handleDevicePixelRatioChange(){this._updateDimensions(),this._widthCache.clear(),this._setDefaultSpacing()}_refreshRowElements(G,ue){for(let ye=this._rowElements.length;ye<=ue;ye++){let ce=this._document.createElement("div");this._rowContainer.appendChild(ce),this._rowElements.push(ce)}for(;this._rowElements.length>ue;)this._rowContainer.removeChild(this._rowElements.pop())}handleResize(G,ue){this._refreshRowElements(G,ue),this._updateDimensions(),this.handleSelectionChanged(this._selectionRenderModel.selectionStart,this._selectionRenderModel.selectionEnd,this._selectionRenderModel.columnSelectMode)}handleCharSizeChanged(){this._updateDimensions(),this._widthCache.clear(),this._setDefaultSpacing()}handleBlur(){this._rowContainer.classList.remove(R),this.renderRows(0,this._bufferService.rows-1)}handleFocus(){this._rowContainer.classList.add(R),this.renderRows(this._bufferService.buffer.y,this._bufferService.buffer.y)}handleSelectionChanged(G,ue,ye){if(this._selectionContainer.replaceChildren(),this._rowFactory.handleSelectionChanged(G,ue,ye),this.renderRows(0,this._bufferService.rows-1),!G||!ue)return;this._selectionRenderModel.update(this._terminal,G,ue,ye);let ce=this._selectionRenderModel.viewportStartRow,Ie=this._selectionRenderModel.viewportEndRow,de=this._selectionRenderModel.viewportCappedStartRow,V=this._selectionRenderModel.viewportCappedEndRow;if(de>=this._bufferService.rows||V<0)return;let Y=this._document.createDocumentFragment();if(ye){let ne=G[0]>ue[0];Y.appendChild(this._createSelectionElement(de,ne?ue[0]:G[0],ne?G[0]:ue[0],V-de+1))}else{let ne=ce===de?G[0]:0,ie=de===Ie?ue[0]:this._bufferService.cols;Y.appendChild(this._createSelectionElement(de,ne,ie));let De=V-de-1;if(Y.appendChild(this._createSelectionElement(de+1,0,this._bufferService.cols,De)),de!==V){let $e=Ie===V?ue[0]:this._bufferService.cols;Y.appendChild(this._createSelectionElement(V,0,$e))}}this._selectionContainer.appendChild(Y)}_createSelectionElement(G,ue,ye,ce=1){let Ie=this._document.createElement("div"),de=ue*this.dimensions.css.cell.width,V=this.dimensions.css.cell.width*(ye-ue);return de+V>this.dimensions.css.canvas.width&&(V=this.dimensions.css.canvas.width-de),Ie.style.height=ce*this.dimensions.css.cell.height+"px",Ie.style.top=G*this.dimensions.css.cell.height+"px",Ie.style.left=`${de}px`,Ie.style.width=`${V}px`,Ie}handleCursorMove(){}_handleOptionsChanged(){this._updateDimensions(),this._injectCss(this._themeService.colors),this._widthCache.setFont(this._optionsService.rawOptions.fontFamily,this._optionsService.rawOptions.fontSize,this._optionsService.rawOptions.fontWeight,this._optionsService.rawOptions.fontWeightBold),this._setDefaultSpacing()}clear(){for(let G of this._rowElements)G.replaceChildren()}renderRows(G,ue){let ye=this._bufferService.buffer,ce=ye.ybase+ye.y,Ie=Math.min(ye.x,this._bufferService.cols-1),de=this._optionsService.rawOptions.cursorBlink,V=this._optionsService.rawOptions.cursorStyle,Y=this._optionsService.rawOptions.cursorInactiveStyle;for(let ne=G;ne<=ue;ne++){let ie=ne+ye.ydisp,De=this._rowElements[ne],$e=ye.lines.get(ie);if(!De||!$e)break;De.replaceChildren(...this._rowFactory.createRow($e,ie,ie===ce,V,Y,Ie,de,this.dimensions.css.cell.width,this._widthCache,-1,-1))}}get _terminalSelector(){return`.${I}${this._terminalClass}`}_handleLinkHover(G){this._setCellUnderline(G.x1,G.x2,G.y1,G.y2,G.cols,!0)}_handleLinkLeave(G){this._setCellUnderline(G.x1,G.x2,G.y1,G.y2,G.cols,!1)}_setCellUnderline(G,ue,ye,ce,Ie,de){ye<0&&(G=0),ce<0&&(ue=0);let V=this._bufferService.rows-1;ye=Math.max(Math.min(ye,V),0),ce=Math.max(Math.min(ce,V),0),Ie=Math.min(Ie,this._bufferService.cols);let Y=this._bufferService.buffer,ne=Y.ybase+Y.y,ie=Math.min(Y.x,Ie-1),De=this._optionsService.rawOptions.cursorBlink,$e=this._optionsService.rawOptions.cursorStyle,it=this._optionsService.rawOptions.cursorInactiveStyle;for(let et=ye;et<=ce;++et){let Se=et+Y.ydisp,q=this._rowElements[et],Oe=Y.lines.get(Se);if(!q||!Oe)break;q.replaceChildren(...this._rowFactory.createRow(Oe,Se,Se===ne,$e,it,ie,De,this.dimensions.css.cell.width,this._widthCache,de?et===ye?G:0:-1,de?(et===ce?ue:Ie)-1:-1))}}};r.DomRenderer=_e=c([m(7,k.IInstantiationService),m(8,_.ICharSizeService),m(9,k.IOptionsService),m(10,k.IBufferService),m(11,_.ICoreBrowserService),m(12,_.IThemeService)],_e)},3787:function(o,r,a){var c=this&&this.__decorate||function(E,N,T,R){var W,pe=arguments.length,_e=pe<3?N:R===null?R=Object.getOwnPropertyDescriptor(N,T):R;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")_e=Reflect.decorate(E,N,T,R);else for(var G=E.length-1;G>=0;G--)(W=E[G])&&(_e=(pe<3?W(_e):pe>3?W(N,T,_e):W(N,T))||_e);return pe>3&&_e&&Object.defineProperty(N,T,_e),_e},m=this&&this.__param||function(E,N){return function(T,R){N(T,R,E)}};Object.defineProperty(r,"__esModule",{value:!0}),r.DomRendererRowFactory=void 0;let p=a(2223),h=a(643),g=a(511),M=a(2585),C=a(8055),_=a(4725),w=a(4269),S=a(6171),y=a(3734),k=r.DomRendererRowFactory=class{constructor(E,N,T,R,W,pe,_e){this._document=E,this._characterJoinerService=N,this._optionsService=T,this._coreBrowserService=R,this._coreService=W,this._decorationService=pe,this._themeService=_e,this._workCell=new g.CellData,this._columnSelectMode=!1,this.defaultSpacing=0}handleSelectionChanged(E,N,T){this._selectionStart=E,this._selectionEnd=N,this._columnSelectMode=T}createRow(E,N,T,R,W,pe,_e,G,ue,ye,ce){let Ie=[],de=this._characterJoinerService.getJoinedCharacters(N),V=this._themeService.colors,Y,ne=E.getNoBgTrimmedLength();T&&ne<pe+1&&(ne=pe+1);let ie=0,De="",$e=0,it=0,et=0,Se=!1,q=0,Oe=!1,Ke=0,Ct=[],Rt=ye!==-1&&ce!==-1;for(let ni=0;ni<ne;ni++){E.loadCell(ni,this._workCell);let Uo=this._workCell.getWidth();if(Uo===0)continue;let Eo=!1,Kr=ni,An=this._workCell;if(de.length>0&&ni===de[0][0]){Eo=!0;let Zo=de.shift();An=new w.JoinedCellData(this._workCell,E.translateToString(!0,Zo[0],Zo[1]),Zo[1]-Zo[0]),Kr=Zo[1]-1,Uo=An.getWidth()}let am=this._isCellInSelection(ni,N),xh=T&&ni===pe,hE=Rt&&ni>=ye&&ni<=ce,fE=!1;this._decorationService.forEachDecorationAtCell(ni,N,void 0,Zo=>{fE=!0});let fC=An.getChars()||h.WHITESPACE_CELL_CHAR;if(fC===" "&&(An.isUnderline()||An.isOverline())&&(fC="\xA0"),Ke=Uo*G-ue.get(fC,An.isBold(),An.isItalic()),Y){if(ie&&(am&&Oe||!am&&!Oe&&An.bg===$e)&&(am&&Oe&&V.selectionForeground||An.fg===it)&&An.extended.ext===et&&hE===Se&&Ke===q&&!xh&&!Eo&&!fE){An.isInvisible()?De+=h.WHITESPACE_CELL_CHAR:De+=fC,ie++;continue}ie&&(Y.textContent=De),Y=this._document.createElement("span"),ie=0,De=""}else Y=this._document.createElement("span");if($e=An.bg,it=An.fg,et=An.extended.ext,Se=hE,q=Ke,Oe=am,Eo&&pe>=ni&&pe<=Kr&&(pe=ni),!this._coreService.isCursorHidden&&xh&&this._coreService.isCursorInitialized){if(Ct.push("xterm-cursor"),this._coreBrowserService.isFocused)_e&&Ct.push("xterm-cursor-blink"),Ct.push(R==="bar"?"xterm-cursor-bar":R==="underline"?"xterm-cursor-underline":"xterm-cursor-block");else if(W)switch(W){case"outline":Ct.push("xterm-cursor-outline");break;case"block":Ct.push("xterm-cursor-block");break;case"bar":Ct.push("xterm-cursor-bar");break;case"underline":Ct.push("xterm-cursor-underline")}}if(An.isBold()&&Ct.push("xterm-bold"),An.isItalic()&&Ct.push("xterm-italic"),An.isDim()&&Ct.push("xterm-dim"),De=An.isInvisible()?h.WHITESPACE_CELL_CHAR:An.getChars()||h.WHITESPACE_CELL_CHAR,An.isUnderline()&&(Ct.push(`xterm-underline-${An.extended.underlineStyle}`),De===" "&&(De="\xA0"),!An.isUnderlineColorDefault()))if(An.isUnderlineColorRGB())Y.style.textDecorationColor=`rgb(${y.AttributeData.toColorRGB(An.getUnderlineColor()).join(",")})`;else{let Zo=An.getUnderlineColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&An.isBold()&&Zo<8&&(Zo+=8),Y.style.textDecorationColor=V.ansi[Zo].css}An.isOverline()&&(Ct.push("xterm-overline"),De===" "&&(De="\xA0")),An.isStrikethrough()&&Ct.push("xterm-strikethrough"),hE&&(Y.style.textDecoration="underline");let tl=An.getFgColor(),N_=An.getFgColorMode(),Cc=An.getBgColor(),R_=An.getBgColorMode(),gE=!!An.isInverse();if(gE){let Zo=tl;tl=Cc,Cc=Zo;let WG=N_;N_=R_,R_=WG}let sm,gC,lm,F_=!1;switch(this._decorationService.forEachDecorationAtCell(ni,N,void 0,Zo=>{Zo.options.layer!=="top"&&F_||(Zo.backgroundColorRGB&&(R_=50331648,Cc=Zo.backgroundColorRGB.rgba>>8&16777215,sm=Zo.backgroundColorRGB),Zo.foregroundColorRGB&&(N_=50331648,tl=Zo.foregroundColorRGB.rgba>>8&16777215,gC=Zo.foregroundColorRGB),F_=Zo.options.layer==="top")}),!F_&&am&&(sm=this._coreBrowserService.isFocused?V.selectionBackgroundOpaque:V.selectionInactiveBackgroundOpaque,Cc=sm.rgba>>8&16777215,R_=50331648,F_=!0,V.selectionForeground&&(N_=50331648,tl=V.selectionForeground.rgba>>8&16777215,gC=V.selectionForeground)),F_&&Ct.push("xterm-decoration-top"),R_){case 16777216:case 33554432:lm=V.ansi[Cc],Ct.push(`xterm-bg-${Cc}`);break;case 50331648:lm=C.channels.toColor(Cc>>16,Cc>>8&255,255&Cc),this._addStyle(Y,`background-color:#${I((Cc>>>0).toString(16),"0",6)}`);break;default:gE?(lm=V.foreground,Ct.push(`xterm-bg-${p.INVERTED_DEFAULT_COLOR}`)):lm=V.background}switch(sm||An.isDim()&&(sm=C.color.multiplyOpacity(lm,.5)),N_){case 16777216:case 33554432:An.isBold()&&tl<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&(tl+=8),this._applyMinimumContrast(Y,lm,V.ansi[tl],An,sm,void 0)||Ct.push(`xterm-fg-${tl}`);break;case 50331648:let Zo=C.channels.toColor(tl>>16&255,tl>>8&255,255&tl);this._applyMinimumContrast(Y,lm,Zo,An,sm,gC)||this._addStyle(Y,`color:#${I(tl.toString(16),"0",6)}`);break;default:this._applyMinimumContrast(Y,lm,V.foreground,An,sm,gC)||gE&&Ct.push(`xterm-fg-${p.INVERTED_DEFAULT_COLOR}`)}Ct.length&&(Y.className=Ct.join(" "),Ct.length=0),xh||Eo||fE?Y.textContent=De:ie++,Ke!==this.defaultSpacing&&(Y.style.letterSpacing=`${Ke}px`),Ie.push(Y),ni=Kr}return Y&&ie&&(Y.textContent=De),Ie}_applyMinimumContrast(E,N,T,R,W,pe){if(this._optionsService.rawOptions.minimumContrastRatio===1||(0,S.treatGlyphAsBackgroundColor)(R.getCode()))return!1;let _e=this._getContrastCache(R),G;if(W||pe||(G=_e.getColor(N.rgba,T.rgba)),G===void 0){let ue=this._optionsService.rawOptions.minimumContrastRatio/(R.isDim()?2:1);G=C.color.ensureContrastRatio(W||N,pe||T,ue),_e.setColor((W||N).rgba,(pe||T).rgba,G??null)}return!!G&&(this._addStyle(E,`color:${G.css}`),!0)}_getContrastCache(E){return E.isDim()?this._themeService.colors.halfContrastCache:this._themeService.colors.contrastCache}_addStyle(E,N){E.setAttribute("style",`${E.getAttribute("style")||""}${N};`)}_isCellInSelection(E,N){let T=this._selectionStart,R=this._selectionEnd;return!(!T||!R)&&(this._columnSelectMode?T[0]<=R[0]?E>=T[0]&&N>=T[1]&&E<R[0]&&N<=R[1]:E<T[0]&&N>=T[1]&&E>=R[0]&&N<=R[1]:N>T[1]&&N<R[1]||T[1]===R[1]&&N===T[1]&&E>=T[0]&&E<R[0]||T[1]<R[1]&&N===R[1]&&E<R[0]||T[1]<R[1]&&N===T[1]&&E>=T[0])}};function I(E,N,T){for(;E.length<T;)E=N+E;return E}r.DomRendererRowFactory=k=c([m(1,_.ICharacterJoinerService),m(2,M.IOptionsService),m(3,_.ICoreBrowserService),m(4,M.ICoreService),m(5,M.IDecorationService),m(6,_.IThemeService)],k)},2550:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.WidthCache=void 0,r.WidthCache=class{constructor(a,c){this._flat=new Float32Array(256),this._font="",this._fontSize=0,this._weight="normal",this._weightBold="bold",this._measureElements=[],this._container=a.createElement("div"),this._container.classList.add("xterm-width-cache-measure-container"),this._container.setAttribute("aria-hidden","true"),this._container.style.whiteSpace="pre",this._container.style.fontKerning="none";let m=a.createElement("span");m.classList.add("xterm-char-measure-element");let p=a.createElement("span");p.classList.add("xterm-char-measure-element"),p.style.fontWeight="bold";let h=a.createElement("span");h.classList.add("xterm-char-measure-element"),h.style.fontStyle="italic";let g=a.createElement("span");g.classList.add("xterm-char-measure-element"),g.style.fontWeight="bold",g.style.fontStyle="italic",this._measureElements=[m,p,h,g],this._container.appendChild(m),this._container.appendChild(p),this._container.appendChild(h),this._container.appendChild(g),c.appendChild(this._container),this.clear()}dispose(){this._container.remove(),this._measureElements.length=0,this._holey=void 0}clear(){this._flat.fill(-9999),this._holey=new Map}setFont(a,c,m,p){a===this._font&&c===this._fontSize&&m===this._weight&&p===this._weightBold||(this._font=a,this._fontSize=c,this._weight=m,this._weightBold=p,this._container.style.fontFamily=this._font,this._container.style.fontSize=`${this._fontSize}px`,this._measureElements[0].style.fontWeight=`${m}`,this._measureElements[1].style.fontWeight=`${p}`,this._measureElements[2].style.fontWeight=`${m}`,this._measureElements[3].style.fontWeight=`${p}`,this.clear())}get(a,c,m){let p=0;if(!c&&!m&&a.length===1&&(p=a.charCodeAt(0))<256){if(this._flat[p]!==-9999)return this._flat[p];let M=this._measure(a,0);return M>0&&(this._flat[p]=M),M}let h=a;c&&(h+="B"),m&&(h+="I");let g=this._holey.get(h);if(g===void 0){let M=0;c&&(M|=1),m&&(M|=2),g=this._measure(a,M),g>0&&this._holey.set(h,g)}return g}_measure(a,c){let m=this._measureElements[c];return m.textContent=a.repeat(32),m.offsetWidth/32}}},2223:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.TEXT_BASELINE=r.DIM_OPACITY=r.INVERTED_DEFAULT_COLOR=void 0;let c=a(6114);r.INVERTED_DEFAULT_COLOR=257,r.DIM_OPACITY=.5,r.TEXT_BASELINE=c.isFirefox||c.isLegacyEdge?"bottom":"ideographic"},6171:(o,r)=>{function a(m){return 57508<=m&&m<=57558}function c(m){return m>=128512&&m<=128591||m>=127744&&m<=128511||m>=128640&&m<=128767||m>=9728&&m<=9983||m>=9984&&m<=10175||m>=65024&&m<=65039||m>=129280&&m<=129535||m>=127462&&m<=127487}Object.defineProperty(r,"__esModule",{value:!0}),r.computeNextVariantOffset=r.createRenderDimensions=r.treatGlyphAsBackgroundColor=r.allowRescaling=r.isEmoji=r.isRestrictedPowerlineGlyph=r.isPowerlineGlyph=r.throwIfFalsy=void 0,r.throwIfFalsy=function(m){if(!m)throw new Error("value must not be falsy");return m},r.isPowerlineGlyph=a,r.isRestrictedPowerlineGlyph=function(m){return 57520<=m&&m<=57527},r.isEmoji=c,r.allowRescaling=function(m,p,h,g){return p===1&&h>Math.ceil(1.5*g)&&m!==void 0&&m>255&&!c(m)&&!a(m)&&!(function(M){return 57344<=M&&M<=63743})(m)},r.treatGlyphAsBackgroundColor=function(m){return a(m)||(function(p){return 9472<=p&&p<=9631})(m)},r.createRenderDimensions=function(){return{css:{canvas:{width:0,height:0},cell:{width:0,height:0}},device:{canvas:{width:0,height:0},cell:{width:0,height:0},char:{width:0,height:0,left:0,top:0}}}},r.computeNextVariantOffset=function(m,p,h=0){return(m-(2*Math.round(p)-h))%(2*Math.round(p))}},6052:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.createSelectionRenderModel=void 0;class a{constructor(){this.clear()}clear(){this.hasSelection=!1,this.columnSelectMode=!1,this.viewportStartRow=0,this.viewportEndRow=0,this.viewportCappedStartRow=0,this.viewportCappedEndRow=0,this.startCol=0,this.endCol=0,this.selectionStart=void 0,this.selectionEnd=void 0}update(m,p,h,g=!1){if(this.selectionStart=p,this.selectionEnd=h,!p||!h||p[0]===h[0]&&p[1]===h[1])return void this.clear();let M=m.buffers.active.ydisp,C=p[1]-M,_=h[1]-M,w=Math.max(C,0),S=Math.min(_,m.rows-1);w>=m.rows||S<0?this.clear():(this.hasSelection=!0,this.columnSelectMode=g,this.viewportStartRow=C,this.viewportEndRow=_,this.viewportCappedStartRow=w,this.viewportCappedEndRow=S,this.startCol=p[0],this.endCol=h[0])}isCellSelected(m,p,h){return!!this.hasSelection&&(h-=m.buffer.active.viewportY,this.columnSelectMode?this.startCol<=this.endCol?p>=this.startCol&&h>=this.viewportCappedStartRow&&p<this.endCol&&h<=this.viewportCappedEndRow:p<this.startCol&&h>=this.viewportCappedStartRow&&p>=this.endCol&&h<=this.viewportCappedEndRow:h>this.viewportStartRow&&h<this.viewportEndRow||this.viewportStartRow===this.viewportEndRow&&h===this.viewportStartRow&&p>=this.startCol&&p<this.endCol||this.viewportStartRow<this.viewportEndRow&&h===this.viewportEndRow&&p<this.endCol||this.viewportStartRow<this.viewportEndRow&&h===this.viewportStartRow&&p>=this.startCol)}}r.createSelectionRenderModel=function(){return new a}},456:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.SelectionModel=void 0,r.SelectionModel=class{constructor(a){this._bufferService=a,this.isSelectAllActive=!1,this.selectionStartLength=0}clearSelection(){this.selectionStart=void 0,this.selectionEnd=void 0,this.isSelectAllActive=!1,this.selectionStartLength=0}get finalSelectionStart(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart}get finalSelectionEnd(){if(this.isSelectAllActive)return[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1];if(this.selectionStart){if(!this.selectionEnd||this.areSelectionValuesReversed()){let a=this.selectionStart[0]+this.selectionStartLength;return a>this._bufferService.cols?a%this._bufferService.cols==0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(a/this._bufferService.cols)-1]:[a%this._bufferService.cols,this.selectionStart[1]+Math.floor(a/this._bufferService.cols)]:[a,this.selectionStart[1]]}if(this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]){let a=this.selectionStart[0]+this.selectionStartLength;return a>this._bufferService.cols?[a%this._bufferService.cols,this.selectionStart[1]+Math.floor(a/this._bufferService.cols)]:[Math.max(a,this.selectionEnd[0]),this.selectionEnd[1]]}return this.selectionEnd}}areSelectionValuesReversed(){let a=this.selectionStart,c=this.selectionEnd;return!(!a||!c)&&(a[1]>c[1]||a[1]===c[1]&&a[0]>c[0])}handleTrim(a){return this.selectionStart&&(this.selectionStart[1]-=a),this.selectionEnd&&(this.selectionEnd[1]-=a),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)}}},428:function(o,r,a){var c=this&&this.__decorate||function(S,y,k,I){var E,N=arguments.length,T=N<3?y:I===null?I=Object.getOwnPropertyDescriptor(y,k):I;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(S,y,k,I);else for(var R=S.length-1;R>=0;R--)(E=S[R])&&(T=(N<3?E(T):N>3?E(y,k,T):E(y,k))||T);return N>3&&T&&Object.defineProperty(y,k,T),T},m=this&&this.__param||function(S,y){return function(k,I){y(k,I,S)}};Object.defineProperty(r,"__esModule",{value:!0}),r.CharSizeService=void 0;let p=a(2585),h=a(8460),g=a(844),M=r.CharSizeService=class extends g.Disposable{get hasValidSize(){return this.width>0&&this.height>0}constructor(S,y,k){super(),this._optionsService=k,this.width=0,this.height=0,this._onCharSizeChange=this.register(new h.EventEmitter),this.onCharSizeChange=this._onCharSizeChange.event;try{this._measureStrategy=this.register(new w(this._optionsService))}catch{this._measureStrategy=this.register(new _(S,y,this._optionsService))}this.register(this._optionsService.onMultipleOptionChange(["fontFamily","fontSize"],()=>this.measure()))}measure(){let S=this._measureStrategy.measure();S.width===this.width&&S.height===this.height||(this.width=S.width,this.height=S.height,this._onCharSizeChange.fire())}};r.CharSizeService=M=c([m(2,p.IOptionsService)],M);class C extends g.Disposable{constructor(){super(...arguments),this._result={width:0,height:0}}_validateAndSet(y,k){y!==void 0&&y>0&&k!==void 0&&k>0&&(this._result.width=y,this._result.height=k)}}class _ extends C{constructor(y,k,I){super(),this._document=y,this._parentElement=k,this._optionsService=I,this._measureElement=this._document.createElement("span"),this._measureElement.classList.add("xterm-char-measure-element"),this._measureElement.textContent="W".repeat(32),this._measureElement.setAttribute("aria-hidden","true"),this._measureElement.style.whiteSpace="pre",this._measureElement.style.fontKerning="none",this._parentElement.appendChild(this._measureElement)}measure(){return this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=`${this._optionsService.rawOptions.fontSize}px`,this._validateAndSet(Number(this._measureElement.offsetWidth)/32,Number(this._measureElement.offsetHeight)),this._result}}class w extends C{constructor(y){super(),this._optionsService=y,this._canvas=new OffscreenCanvas(100,100),this._ctx=this._canvas.getContext("2d");let k=this._ctx.measureText("W");if(!("width"in k&&"fontBoundingBoxAscent"in k&&"fontBoundingBoxDescent"in k))throw new Error("Required font metrics not supported")}measure(){this._ctx.font=`${this._optionsService.rawOptions.fontSize}px ${this._optionsService.rawOptions.fontFamily}`;let y=this._ctx.measureText("W");return this._validateAndSet(y.width,y.fontBoundingBoxAscent+y.fontBoundingBoxDescent),this._result}}},4269:function(o,r,a){var c=this&&this.__decorate||function(w,S,y,k){var I,E=arguments.length,N=E<3?S:k===null?k=Object.getOwnPropertyDescriptor(S,y):k;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")N=Reflect.decorate(w,S,y,k);else for(var T=w.length-1;T>=0;T--)(I=w[T])&&(N=(E<3?I(N):E>3?I(S,y,N):I(S,y))||N);return E>3&&N&&Object.defineProperty(S,y,N),N},m=this&&this.__param||function(w,S){return function(y,k){S(y,k,w)}};Object.defineProperty(r,"__esModule",{value:!0}),r.CharacterJoinerService=r.JoinedCellData=void 0;let p=a(3734),h=a(643),g=a(511),M=a(2585);class C extends p.AttributeData{constructor(S,y,k){super(),this.content=0,this.combinedData="",this.fg=S.fg,this.bg=S.bg,this.combinedData=y,this._width=k}isCombined(){return 2097152}getWidth(){return this._width}getChars(){return this.combinedData}getCode(){return 2097151}setFromCharData(S){throw new Error("not implemented")}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}r.JoinedCellData=C;let _=r.CharacterJoinerService=class kU{constructor(S){this._bufferService=S,this._characterJoiners=[],this._nextCharacterJoinerId=0,this._workCell=new g.CellData}register(S){let y={id:this._nextCharacterJoinerId++,handler:S};return this._characterJoiners.push(y),y.id}deregister(S){for(let y=0;y<this._characterJoiners.length;y++)if(this._characterJoiners[y].id===S)return this._characterJoiners.splice(y,1),!0;return!1}getJoinedCharacters(S){if(this._characterJoiners.length===0)return[];let y=this._bufferService.buffer.lines.get(S);if(!y||y.length===0)return[];let k=[],I=y.translateToString(!0),E=0,N=0,T=0,R=y.getFg(0),W=y.getBg(0);for(let pe=0;pe<y.getTrimmedLength();pe++)if(y.loadCell(pe,this._workCell),this._workCell.getWidth()!==0){if(this._workCell.fg!==R||this._workCell.bg!==W){if(pe-E>1){let _e=this._getJoinedRanges(I,T,N,y,E);for(let G=0;G<_e.length;G++)k.push(_e[G])}E=pe,T=N,R=this._workCell.fg,W=this._workCell.bg}N+=this._workCell.getChars().length||h.WHITESPACE_CELL_CHAR.length}if(this._bufferService.cols-E>1){let pe=this._getJoinedRanges(I,T,N,y,E);for(let _e=0;_e<pe.length;_e++)k.push(pe[_e])}return k}_getJoinedRanges(S,y,k,I,E){let N=S.substring(y,k),T=[];try{T=this._characterJoiners[0].handler(N)}catch(R){console.error(R)}for(let R=1;R<this._characterJoiners.length;R++)try{let W=this._characterJoiners[R].handler(N);for(let pe=0;pe<W.length;pe++)kU._mergeRanges(T,W[pe])}catch(W){console.error(W)}return this._stringRangesToCellRanges(T,I,E),T}_stringRangesToCellRanges(S,y,k){let I=0,E=!1,N=0,T=S[I];if(T){for(let R=k;R<this._bufferService.cols;R++){let W=y.getWidth(R),pe=y.getString(R).length||h.WHITESPACE_CELL_CHAR.length;if(W!==0){if(!E&&T[0]<=N&&(T[0]=R,E=!0),T[1]<=N){if(T[1]=R,T=S[++I],!T)break;T[0]<=N?(T[0]=R,E=!0):E=!1}N+=pe}}T&&(T[1]=this._bufferService.cols)}}static _mergeRanges(S,y){let k=!1;for(let I=0;I<S.length;I++){let E=S[I];if(k){if(y[1]<=E[0])return S[I-1][1]=y[1],S;if(y[1]<=E[1])return S[I-1][1]=Math.max(y[1],E[1]),S.splice(I,1),S;S.splice(I,1),I--}else{if(y[1]<=E[0])return S.splice(I,0,y),S;if(y[1]<=E[1])return E[0]=Math.min(y[0],E[0]),S;y[0]<E[1]&&(E[0]=Math.min(y[0],E[0]),k=!0)}}return k?S[S.length-1][1]=y[1]:S.push(y),S}};r.CharacterJoinerService=_=c([m(0,M.IBufferService)],_)},5114:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.CoreBrowserService=void 0;let c=a(844),m=a(8460),p=a(3656);class h extends c.Disposable{constructor(C,_,w){super(),this._textarea=C,this._window=_,this.mainDocument=w,this._isFocused=!1,this._cachedIsFocused=void 0,this._screenDprMonitor=new g(this._window),this._onDprChange=this.register(new m.EventEmitter),this.onDprChange=this._onDprChange.event,this._onWindowChange=this.register(new m.EventEmitter),this.onWindowChange=this._onWindowChange.event,this.register(this.onWindowChange(S=>this._screenDprMonitor.setWindow(S))),this.register((0,m.forwardEvent)(this._screenDprMonitor.onDprChange,this._onDprChange)),this._textarea.addEventListener("focus",()=>this._isFocused=!0),this._textarea.addEventListener("blur",()=>this._isFocused=!1)}get window(){return this._window}set window(C){this._window!==C&&(this._window=C,this._onWindowChange.fire(this._window))}get dpr(){return this.window.devicePixelRatio}get isFocused(){return this._cachedIsFocused===void 0&&(this._cachedIsFocused=this._isFocused&&this._textarea.ownerDocument.hasFocus(),queueMicrotask(()=>this._cachedIsFocused=void 0)),this._cachedIsFocused}}r.CoreBrowserService=h;class g extends c.Disposable{constructor(C){super(),this._parentWindow=C,this._windowResizeListener=this.register(new c.MutableDisposable),this._onDprChange=this.register(new m.EventEmitter),this.onDprChange=this._onDprChange.event,this._outerListener=()=>this._setDprAndFireIfDiffers(),this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this._updateDpr(),this._setWindowResizeListener(),this.register((0,c.toDisposable)(()=>this.clearListener()))}setWindow(C){this._parentWindow=C,this._setWindowResizeListener(),this._setDprAndFireIfDiffers()}_setWindowResizeListener(){this._windowResizeListener.value=(0,p.addDisposableDomListener)(this._parentWindow,"resize",()=>this._setDprAndFireIfDiffers())}_setDprAndFireIfDiffers(){this._parentWindow.devicePixelRatio!==this._currentDevicePixelRatio&&this._onDprChange.fire(this._parentWindow.devicePixelRatio),this._updateDpr()}_updateDpr(){this._outerListener&&(this._resolutionMediaMatchList?.removeListener(this._outerListener),this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this._resolutionMediaMatchList=this._parentWindow.matchMedia(`screen and (resolution: ${this._parentWindow.devicePixelRatio}dppx)`),this._resolutionMediaMatchList.addListener(this._outerListener))}clearListener(){this._resolutionMediaMatchList&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._outerListener=void 0)}}},779:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.LinkProviderService=void 0;let c=a(844);class m extends c.Disposable{constructor(){super(),this.linkProviders=[],this.register((0,c.toDisposable)(()=>this.linkProviders.length=0))}registerLinkProvider(h){return this.linkProviders.push(h),{dispose:()=>{let g=this.linkProviders.indexOf(h);g!==-1&&this.linkProviders.splice(g,1)}}}}r.LinkProviderService=m},8934:function(o,r,a){var c=this&&this.__decorate||function(M,C,_,w){var S,y=arguments.length,k=y<3?C:w===null?w=Object.getOwnPropertyDescriptor(C,_):w;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")k=Reflect.decorate(M,C,_,w);else for(var I=M.length-1;I>=0;I--)(S=M[I])&&(k=(y<3?S(k):y>3?S(C,_,k):S(C,_))||k);return y>3&&k&&Object.defineProperty(C,_,k),k},m=this&&this.__param||function(M,C){return function(_,w){C(_,w,M)}};Object.defineProperty(r,"__esModule",{value:!0}),r.MouseService=void 0;let p=a(4725),h=a(9806),g=r.MouseService=class{constructor(M,C){this._renderService=M,this._charSizeService=C}getCoords(M,C,_,w,S){return(0,h.getCoords)(window,M,C,_,w,this._charSizeService.hasValidSize,this._renderService.dimensions.css.cell.width,this._renderService.dimensions.css.cell.height,S)}getMouseReportCoords(M,C){let _=(0,h.getCoordsRelativeToElement)(window,M,C);if(this._charSizeService.hasValidSize)return _[0]=Math.min(Math.max(_[0],0),this._renderService.dimensions.css.canvas.width-1),_[1]=Math.min(Math.max(_[1],0),this._renderService.dimensions.css.canvas.height-1),{col:Math.floor(_[0]/this._renderService.dimensions.css.cell.width),row:Math.floor(_[1]/this._renderService.dimensions.css.cell.height),x:Math.floor(_[0]),y:Math.floor(_[1])}}};r.MouseService=g=c([m(0,p.IRenderService),m(1,p.ICharSizeService)],g)},3230:function(o,r,a){var c=this&&this.__decorate||function(S,y,k,I){var E,N=arguments.length,T=N<3?y:I===null?I=Object.getOwnPropertyDescriptor(y,k):I;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(S,y,k,I);else for(var R=S.length-1;R>=0;R--)(E=S[R])&&(T=(N<3?E(T):N>3?E(y,k,T):E(y,k))||T);return N>3&&T&&Object.defineProperty(y,k,T),T},m=this&&this.__param||function(S,y){return function(k,I){y(k,I,S)}};Object.defineProperty(r,"__esModule",{value:!0}),r.RenderService=void 0;let p=a(6193),h=a(4725),g=a(8460),M=a(844),C=a(7226),_=a(2585),w=r.RenderService=class extends M.Disposable{get dimensions(){return this._renderer.value.dimensions}constructor(S,y,k,I,E,N,T,R){super(),this._rowCount=S,this._charSizeService=I,this._renderer=this.register(new M.MutableDisposable),this._pausedResizeTask=new C.DebouncedIdleTask,this._observerDisposable=this.register(new M.MutableDisposable),this._isPaused=!1,this._needsFullRefresh=!1,this._isNextRenderRedrawOnly=!0,this._needsSelectionRefresh=!1,this._canvasWidth=0,this._canvasHeight=0,this._selectionState={start:void 0,end:void 0,columnSelectMode:!1},this._onDimensionsChange=this.register(new g.EventEmitter),this.onDimensionsChange=this._onDimensionsChange.event,this._onRenderedViewportChange=this.register(new g.EventEmitter),this.onRenderedViewportChange=this._onRenderedViewportChange.event,this._onRender=this.register(new g.EventEmitter),this.onRender=this._onRender.event,this._onRefreshRequest=this.register(new g.EventEmitter),this.onRefreshRequest=this._onRefreshRequest.event,this._renderDebouncer=new p.RenderDebouncer((W,pe)=>this._renderRows(W,pe),T),this.register(this._renderDebouncer),this.register(T.onDprChange(()=>this.handleDevicePixelRatioChange())),this.register(N.onResize(()=>this._fullRefresh())),this.register(N.buffers.onBufferActivate(()=>this._renderer.value?.clear())),this.register(k.onOptionChange(()=>this._handleOptionsChanged())),this.register(this._charSizeService.onCharSizeChange(()=>this.handleCharSizeChanged())),this.register(E.onDecorationRegistered(()=>this._fullRefresh())),this.register(E.onDecorationRemoved(()=>this._fullRefresh())),this.register(k.onMultipleOptionChange(["customGlyphs","drawBoldTextInBrightColors","letterSpacing","lineHeight","fontFamily","fontSize","fontWeight","fontWeightBold","minimumContrastRatio","rescaleOverlappingGlyphs"],()=>{this.clear(),this.handleResize(N.cols,N.rows),this._fullRefresh()})),this.register(k.onMultipleOptionChange(["cursorBlink","cursorStyle"],()=>this.refreshRows(N.buffer.y,N.buffer.y,!0))),this.register(R.onChangeColors(()=>this._fullRefresh())),this._registerIntersectionObserver(T.window,y),this.register(T.onWindowChange(W=>this._registerIntersectionObserver(W,y)))}_registerIntersectionObserver(S,y){if("IntersectionObserver"in S){let k=new S.IntersectionObserver(I=>this._handleIntersectionChange(I[I.length-1]),{threshold:0});k.observe(y),this._observerDisposable.value=(0,M.toDisposable)(()=>k.disconnect())}}_handleIntersectionChange(S){this._isPaused=S.isIntersecting===void 0?S.intersectionRatio===0:!S.isIntersecting,this._isPaused||this._charSizeService.hasValidSize||this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this._pausedResizeTask.flush(),this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)}refreshRows(S,y,k=!1){this._isPaused?this._needsFullRefresh=!0:(k||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(S,y,this._rowCount))}_renderRows(S,y){this._renderer.value&&(S=Math.min(S,this._rowCount-1),y=Math.min(y,this._rowCount-1),this._renderer.value.renderRows(S,y),this._needsSelectionRefresh&&(this._renderer.value.handleSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),this._needsSelectionRefresh=!1),this._isNextRenderRedrawOnly||this._onRenderedViewportChange.fire({start:S,end:y}),this._onRender.fire({start:S,end:y}),this._isNextRenderRedrawOnly=!0)}resize(S,y){this._rowCount=y,this._fireOnCanvasResize()}_handleOptionsChanged(){this._renderer.value&&(this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize())}_fireOnCanvasResize(){this._renderer.value&&(this._renderer.value.dimensions.css.canvas.width===this._canvasWidth&&this._renderer.value.dimensions.css.canvas.height===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.value.dimensions))}hasRenderer(){return!!this._renderer.value}setRenderer(S){this._renderer.value=S,this._renderer.value&&(this._renderer.value.onRequestRedraw(y=>this.refreshRows(y.start,y.end,!0)),this._needsSelectionRefresh=!0,this._fullRefresh())}addRefreshCallback(S){return this._renderDebouncer.addRefreshCallback(S)}_fullRefresh(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)}clearTextureAtlas(){this._renderer.value&&(this._renderer.value.clearTextureAtlas?.(),this._fullRefresh())}handleDevicePixelRatioChange(){this._charSizeService.measure(),this._renderer.value&&(this._renderer.value.handleDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1))}handleResize(S,y){this._renderer.value&&(this._isPaused?this._pausedResizeTask.set(()=>this._renderer.value?.handleResize(S,y)):this._renderer.value.handleResize(S,y),this._fullRefresh())}handleCharSizeChanged(){this._renderer.value?.handleCharSizeChanged()}handleBlur(){this._renderer.value?.handleBlur()}handleFocus(){this._renderer.value?.handleFocus()}handleSelectionChanged(S,y,k){this._selectionState.start=S,this._selectionState.end=y,this._selectionState.columnSelectMode=k,this._renderer.value?.handleSelectionChanged(S,y,k)}handleCursorMove(){this._renderer.value?.handleCursorMove()}clear(){this._renderer.value?.clear()}};r.RenderService=w=c([m(2,_.IOptionsService),m(3,h.ICharSizeService),m(4,_.IDecorationService),m(5,_.IBufferService),m(6,h.ICoreBrowserService),m(7,h.IThemeService)],w)},9312:function(o,r,a){var c=this&&this.__decorate||function(T,R,W,pe){var _e,G=arguments.length,ue=G<3?R:pe===null?pe=Object.getOwnPropertyDescriptor(R,W):pe;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")ue=Reflect.decorate(T,R,W,pe);else for(var ye=T.length-1;ye>=0;ye--)(_e=T[ye])&&(ue=(G<3?_e(ue):G>3?_e(R,W,ue):_e(R,W))||ue);return G>3&&ue&&Object.defineProperty(R,W,ue),ue},m=this&&this.__param||function(T,R){return function(W,pe){R(W,pe,T)}};Object.defineProperty(r,"__esModule",{value:!0}),r.SelectionService=void 0;let p=a(9806),h=a(9504),g=a(456),M=a(4725),C=a(8460),_=a(844),w=a(6114),S=a(4841),y=a(511),k=a(2585),I="\xA0",E=new RegExp(I,"g"),N=r.SelectionService=class extends _.Disposable{constructor(T,R,W,pe,_e,G,ue,ye,ce){super(),this._element=T,this._screenElement=R,this._linkifier=W,this._bufferService=pe,this._coreService=_e,this._mouseService=G,this._optionsService=ue,this._renderService=ye,this._coreBrowserService=ce,this._dragScrollAmount=0,this._enabled=!0,this._workCell=new y.CellData,this._mouseDownTimeStamp=0,this._oldHasSelection=!1,this._oldSelectionStart=void 0,this._oldSelectionEnd=void 0,this._onLinuxMouseSelection=this.register(new C.EventEmitter),this.onLinuxMouseSelection=this._onLinuxMouseSelection.event,this._onRedrawRequest=this.register(new C.EventEmitter),this.onRequestRedraw=this._onRedrawRequest.event,this._onSelectionChange=this.register(new C.EventEmitter),this.onSelectionChange=this._onSelectionChange.event,this._onRequestScrollLines=this.register(new C.EventEmitter),this.onRequestScrollLines=this._onRequestScrollLines.event,this._mouseMoveListener=Ie=>this._handleMouseMove(Ie),this._mouseUpListener=Ie=>this._handleMouseUp(Ie),this._coreService.onUserInput(()=>{this.hasSelection&&this.clearSelection()}),this._trimListener=this._bufferService.buffer.lines.onTrim(Ie=>this._handleTrim(Ie)),this.register(this._bufferService.buffers.onBufferActivate(Ie=>this._handleBufferActivate(Ie))),this.enable(),this._model=new g.SelectionModel(this._bufferService),this._activeSelectionMode=0,this.register((0,_.toDisposable)(()=>{this._removeMouseDownListeners()}))}reset(){this.clearSelection()}disable(){this.clearSelection(),this._enabled=!1}enable(){this._enabled=!0}get selectionStart(){return this._model.finalSelectionStart}get selectionEnd(){return this._model.finalSelectionEnd}get hasSelection(){let T=this._model.finalSelectionStart,R=this._model.finalSelectionEnd;return!(!T||!R||T[0]===R[0]&&T[1]===R[1])}get selectionText(){let T=this._model.finalSelectionStart,R=this._model.finalSelectionEnd;if(!T||!R)return"";let W=this._bufferService.buffer,pe=[];if(this._activeSelectionMode===3){if(T[0]===R[0])return"";let _e=T[0]<R[0]?T[0]:R[0],G=T[0]<R[0]?R[0]:T[0];for(let ue=T[1];ue<=R[1];ue++){let ye=W.translateBufferLineToString(ue,!0,_e,G);pe.push(ye)}}else{let _e=T[1]===R[1]?R[0]:void 0;pe.push(W.translateBufferLineToString(T[1],!0,T[0],_e));for(let G=T[1]+1;G<=R[1]-1;G++){let ue=W.lines.get(G),ye=W.translateBufferLineToString(G,!0);ue?.isWrapped?pe[pe.length-1]+=ye:pe.push(ye)}if(T[1]!==R[1]){let G=W.lines.get(R[1]),ue=W.translateBufferLineToString(R[1],!0,0,R[0]);G&&G.isWrapped?pe[pe.length-1]+=ue:pe.push(ue)}}return pe.map(_e=>_e.replace(E," ")).join(w.isWindows?`\r
|
||
`:`
|
||
`)}clearSelection(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()}refresh(T){this._refreshAnimationFrame||(this._refreshAnimationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._refresh())),w.isLinux&&T&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)}_refresh(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:this._activeSelectionMode===3})}_isClickInSelection(T){let R=this._getMouseBufferCoords(T),W=this._model.finalSelectionStart,pe=this._model.finalSelectionEnd;return!!(W&&pe&&R)&&this._areCoordsInSelection(R,W,pe)}isCellInSelection(T,R){let W=this._model.finalSelectionStart,pe=this._model.finalSelectionEnd;return!(!W||!pe)&&this._areCoordsInSelection([T,R],W,pe)}_areCoordsInSelection(T,R,W){return T[1]>R[1]&&T[1]<W[1]||R[1]===W[1]&&T[1]===R[1]&&T[0]>=R[0]&&T[0]<W[0]||R[1]<W[1]&&T[1]===W[1]&&T[0]<W[0]||R[1]<W[1]&&T[1]===R[1]&&T[0]>=R[0]}_selectWordAtCursor(T,R){let W=this._linkifier.currentLink?.link?.range;if(W)return this._model.selectionStart=[W.start.x-1,W.start.y-1],this._model.selectionStartLength=(0,S.getRangeLength)(W,this._bufferService.cols),this._model.selectionEnd=void 0,!0;let pe=this._getMouseBufferCoords(T);return!!pe&&(this._selectWordAt(pe,R),this._model.selectionEnd=void 0,!0)}selectAll(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()}selectLines(T,R){this._model.clearSelection(),T=Math.max(T,0),R=Math.min(R,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,T],this._model.selectionEnd=[this._bufferService.cols,R],this.refresh(),this._onSelectionChange.fire()}_handleTrim(T){this._model.handleTrim(T)&&this.refresh()}_getMouseBufferCoords(T){let R=this._mouseService.getCoords(T,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(R)return R[0]--,R[1]--,R[1]+=this._bufferService.buffer.ydisp,R}_getMouseEventScrollAmount(T){let R=(0,p.getCoordsRelativeToElement)(this._coreBrowserService.window,T,this._screenElement)[1],W=this._renderService.dimensions.css.canvas.height;return R>=0&&R<=W?0:(R>W&&(R-=W),R=Math.min(Math.max(R,-50),50),R/=50,R/Math.abs(R)+Math.round(14*R))}shouldForceSelection(T){return w.isMac?T.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:T.shiftKey}handleMouseDown(T){if(this._mouseDownTimeStamp=T.timeStamp,(T.button!==2||!this.hasSelection)&&T.button===0){if(!this._enabled){if(!this.shouldForceSelection(T))return;T.stopPropagation()}T.preventDefault(),this._dragScrollAmount=0,this._enabled&&T.shiftKey?this._handleIncrementalClick(T):T.detail===1?this._handleSingleClick(T):T.detail===2?this._handleDoubleClick(T):T.detail===3&&this._handleTripleClick(T),this._addMouseDownListeners(),this.refresh(!0)}}_addMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",this._mouseUpListener)),this._dragScrollIntervalTimer=this._coreBrowserService.window.setInterval(()=>this._dragScroll(),50)}_removeMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener)),this._coreBrowserService.window.clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0}_handleIncrementalClick(T){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(T))}_handleSingleClick(T){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(T)?3:0,this._model.selectionStart=this._getMouseBufferCoords(T),!this._model.selectionStart)return;this._model.selectionEnd=void 0;let R=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);R&&R.length!==this._model.selectionStart[0]&&R.hasWidth(this._model.selectionStart[0])===0&&this._model.selectionStart[0]++}_handleDoubleClick(T){this._selectWordAtCursor(T,!0)&&(this._activeSelectionMode=1)}_handleTripleClick(T){let R=this._getMouseBufferCoords(T);R&&(this._activeSelectionMode=2,this._selectLineAt(R[1]))}shouldColumnSelect(T){return T.altKey&&!(w.isMac&&this._optionsService.rawOptions.macOptionClickForcesSelection)}_handleMouseMove(T){if(T.stopImmediatePropagation(),!this._model.selectionStart)return;let R=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(T),!this._model.selectionEnd)return void this.refresh(!0);this._activeSelectionMode===2?this._model.selectionEnd[1]<this._model.selectionStart[1]?this._model.selectionEnd[0]=0:this._model.selectionEnd[0]=this._bufferService.cols:this._activeSelectionMode===1&&this._selectToWordAt(this._model.selectionEnd),this._dragScrollAmount=this._getMouseEventScrollAmount(T),this._activeSelectionMode!==3&&(this._dragScrollAmount>0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));let W=this._bufferService.buffer;if(this._model.selectionEnd[1]<W.lines.length){let pe=W.lines.get(this._model.selectionEnd[1]);pe&&pe.hasWidth(this._model.selectionEnd[0])===0&&this._model.selectionEnd[0]<this._bufferService.cols&&this._model.selectionEnd[0]++}R&&R[0]===this._model.selectionEnd[0]&&R[1]===this._model.selectionEnd[1]||this.refresh(!0)}_dragScroll(){if(this._model.selectionEnd&&this._model.selectionStart&&this._dragScrollAmount){this._onRequestScrollLines.fire({amount:this._dragScrollAmount,suppressScrollEvent:!1});let T=this._bufferService.buffer;this._dragScrollAmount>0?(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(T.ydisp+this._bufferService.rows,T.lines.length-1)):(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=T.ydisp),this.refresh()}}_handleMouseUp(T){let R=T.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&R<500&&T.altKey&&this._optionsService.rawOptions.altClickMovesCursor){if(this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp){let W=this._mouseService.getCoords(T,this._element,this._bufferService.cols,this._bufferService.rows,!1);if(W&&W[0]!==void 0&&W[1]!==void 0){let pe=(0,h.moveToCellSequence)(W[0]-1,W[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys);this._coreService.triggerDataEvent(pe,!0)}}}else this._fireEventIfSelectionChanged()}_fireEventIfSelectionChanged(){let T=this._model.finalSelectionStart,R=this._model.finalSelectionEnd,W=!(!T||!R||T[0]===R[0]&&T[1]===R[1]);W?T&&R&&(this._oldSelectionStart&&this._oldSelectionEnd&&T[0]===this._oldSelectionStart[0]&&T[1]===this._oldSelectionStart[1]&&R[0]===this._oldSelectionEnd[0]&&R[1]===this._oldSelectionEnd[1]||this._fireOnSelectionChange(T,R,W)):this._oldHasSelection&&this._fireOnSelectionChange(T,R,W)}_fireOnSelectionChange(T,R,W){this._oldSelectionStart=T,this._oldSelectionEnd=R,this._oldHasSelection=W,this._onSelectionChange.fire()}_handleBufferActivate(T){this.clearSelection(),this._trimListener.dispose(),this._trimListener=T.activeBuffer.lines.onTrim(R=>this._handleTrim(R))}_convertViewportColToCharacterIndex(T,R){let W=R;for(let pe=0;R>=pe;pe++){let _e=T.loadCell(pe,this._workCell).getChars().length;this._workCell.getWidth()===0?W--:_e>1&&R!==pe&&(W+=_e-1)}return W}setSelection(T,R,W){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[T,R],this._model.selectionStartLength=W,this.refresh(),this._fireEventIfSelectionChanged()}rightClickSelect(T){this._isClickInSelection(T)||(this._selectWordAtCursor(T,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())}_getWordAt(T,R,W=!0,pe=!0){if(T[0]>=this._bufferService.cols)return;let _e=this._bufferService.buffer,G=_e.lines.get(T[1]);if(!G)return;let ue=_e.translateBufferLineToString(T[1],!1),ye=this._convertViewportColToCharacterIndex(G,T[0]),ce=ye,Ie=T[0]-ye,de=0,V=0,Y=0,ne=0;if(ue.charAt(ye)===" "){for(;ye>0&&ue.charAt(ye-1)===" ";)ye--;for(;ce<ue.length&&ue.charAt(ce+1)===" ";)ce++}else{let $e=T[0],it=T[0];G.getWidth($e)===0&&(de++,$e--),G.getWidth(it)===2&&(V++,it++);let et=G.getString(it).length;for(et>1&&(ne+=et-1,ce+=et-1);$e>0&&ye>0&&!this._isCharWordSeparator(G.loadCell($e-1,this._workCell));){G.loadCell($e-1,this._workCell);let Se=this._workCell.getChars().length;this._workCell.getWidth()===0?(de++,$e--):Se>1&&(Y+=Se-1,ye-=Se-1),ye--,$e--}for(;it<G.length&&ce+1<ue.length&&!this._isCharWordSeparator(G.loadCell(it+1,this._workCell));){G.loadCell(it+1,this._workCell);let Se=this._workCell.getChars().length;this._workCell.getWidth()===2?(V++,it++):Se>1&&(ne+=Se-1,ce+=Se-1),ce++,it++}}ce++;let ie=ye+Ie-de+Y,De=Math.min(this._bufferService.cols,ce-ye+de+V-Y-ne);if(R||ue.slice(ye,ce).trim()!==""){if(W&&ie===0&&G.getCodePoint(0)!==32){let $e=_e.lines.get(T[1]-1);if($e&&G.isWrapped&&$e.getCodePoint(this._bufferService.cols-1)!==32){let it=this._getWordAt([this._bufferService.cols-1,T[1]-1],!1,!0,!1);if(it){let et=this._bufferService.cols-it.start;ie-=et,De+=et}}}if(pe&&ie+De===this._bufferService.cols&&G.getCodePoint(this._bufferService.cols-1)!==32){let $e=_e.lines.get(T[1]+1);if($e?.isWrapped&&$e.getCodePoint(0)!==32){let it=this._getWordAt([0,T[1]+1],!1,!1,!0);it&&(De+=it.length)}}return{start:ie,length:De}}}_selectWordAt(T,R){let W=this._getWordAt(T,R);if(W){for(;W.start<0;)W.start+=this._bufferService.cols,T[1]--;this._model.selectionStart=[W.start,T[1]],this._model.selectionStartLength=W.length}}_selectToWordAt(T){let R=this._getWordAt(T,!0);if(R){let W=T[1];for(;R.start<0;)R.start+=this._bufferService.cols,W--;if(!this._model.areSelectionValuesReversed())for(;R.start+R.length>this._bufferService.cols;)R.length-=this._bufferService.cols,W++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?R.start:R.start+R.length,W]}}_isCharWordSeparator(T){return T.getWidth()!==0&&this._optionsService.rawOptions.wordSeparator.indexOf(T.getChars())>=0}_selectLineAt(T){let R=this._bufferService.buffer.getWrappedRangeForLine(T),W={start:{x:0,y:R.first},end:{x:this._bufferService.cols-1,y:R.last}};this._model.selectionStart=[0,R.first],this._model.selectionEnd=void 0,this._model.selectionStartLength=(0,S.getRangeLength)(W,this._bufferService.cols)}};r.SelectionService=N=c([m(3,k.IBufferService),m(4,k.ICoreService),m(5,M.IMouseService),m(6,k.IOptionsService),m(7,M.IRenderService),m(8,M.ICoreBrowserService)],N)},4725:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ILinkProviderService=r.IThemeService=r.ICharacterJoinerService=r.ISelectionService=r.IRenderService=r.IMouseService=r.ICoreBrowserService=r.ICharSizeService=void 0;let c=a(8343);r.ICharSizeService=(0,c.createDecorator)("CharSizeService"),r.ICoreBrowserService=(0,c.createDecorator)("CoreBrowserService"),r.IMouseService=(0,c.createDecorator)("MouseService"),r.IRenderService=(0,c.createDecorator)("RenderService"),r.ISelectionService=(0,c.createDecorator)("SelectionService"),r.ICharacterJoinerService=(0,c.createDecorator)("CharacterJoinerService"),r.IThemeService=(0,c.createDecorator)("ThemeService"),r.ILinkProviderService=(0,c.createDecorator)("LinkProviderService")},6731:function(o,r,a){var c=this&&this.__decorate||function(N,T,R,W){var pe,_e=arguments.length,G=_e<3?T:W===null?W=Object.getOwnPropertyDescriptor(T,R):W;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")G=Reflect.decorate(N,T,R,W);else for(var ue=N.length-1;ue>=0;ue--)(pe=N[ue])&&(G=(_e<3?pe(G):_e>3?pe(T,R,G):pe(T,R))||G);return _e>3&&G&&Object.defineProperty(T,R,G),G},m=this&&this.__param||function(N,T){return function(R,W){T(R,W,N)}};Object.defineProperty(r,"__esModule",{value:!0}),r.ThemeService=r.DEFAULT_ANSI_COLORS=void 0;let p=a(7239),h=a(8055),g=a(8460),M=a(844),C=a(2585),_=h.css.toColor("#ffffff"),w=h.css.toColor("#000000"),S=h.css.toColor("#ffffff"),y=h.css.toColor("#000000"),k={css:"rgba(255, 255, 255, 0.3)",rgba:4294967117};r.DEFAULT_ANSI_COLORS=Object.freeze((()=>{let N=[h.css.toColor("#2e3436"),h.css.toColor("#cc0000"),h.css.toColor("#4e9a06"),h.css.toColor("#c4a000"),h.css.toColor("#3465a4"),h.css.toColor("#75507b"),h.css.toColor("#06989a"),h.css.toColor("#d3d7cf"),h.css.toColor("#555753"),h.css.toColor("#ef2929"),h.css.toColor("#8ae234"),h.css.toColor("#fce94f"),h.css.toColor("#729fcf"),h.css.toColor("#ad7fa8"),h.css.toColor("#34e2e2"),h.css.toColor("#eeeeec")],T=[0,95,135,175,215,255];for(let R=0;R<216;R++){let W=T[R/36%6|0],pe=T[R/6%6|0],_e=T[R%6];N.push({css:h.channels.toCss(W,pe,_e),rgba:h.channels.toRgba(W,pe,_e)})}for(let R=0;R<24;R++){let W=8+10*R;N.push({css:h.channels.toCss(W,W,W),rgba:h.channels.toRgba(W,W,W)})}return N})());let I=r.ThemeService=class extends M.Disposable{get colors(){return this._colors}constructor(N){super(),this._optionsService=N,this._contrastCache=new p.ColorContrastCache,this._halfContrastCache=new p.ColorContrastCache,this._onChangeColors=this.register(new g.EventEmitter),this.onChangeColors=this._onChangeColors.event,this._colors={foreground:_,background:w,cursor:S,cursorAccent:y,selectionForeground:void 0,selectionBackgroundTransparent:k,selectionBackgroundOpaque:h.color.blend(w,k),selectionInactiveBackgroundTransparent:k,selectionInactiveBackgroundOpaque:h.color.blend(w,k),ansi:r.DEFAULT_ANSI_COLORS.slice(),contrastCache:this._contrastCache,halfContrastCache:this._halfContrastCache},this._updateRestoreColors(),this._setTheme(this._optionsService.rawOptions.theme),this.register(this._optionsService.onSpecificOptionChange("minimumContrastRatio",()=>this._contrastCache.clear())),this.register(this._optionsService.onSpecificOptionChange("theme",()=>this._setTheme(this._optionsService.rawOptions.theme)))}_setTheme(N={}){let T=this._colors;if(T.foreground=E(N.foreground,_),T.background=E(N.background,w),T.cursor=E(N.cursor,S),T.cursorAccent=E(N.cursorAccent,y),T.selectionBackgroundTransparent=E(N.selectionBackground,k),T.selectionBackgroundOpaque=h.color.blend(T.background,T.selectionBackgroundTransparent),T.selectionInactiveBackgroundTransparent=E(N.selectionInactiveBackground,T.selectionBackgroundTransparent),T.selectionInactiveBackgroundOpaque=h.color.blend(T.background,T.selectionInactiveBackgroundTransparent),T.selectionForeground=N.selectionForeground?E(N.selectionForeground,h.NULL_COLOR):void 0,T.selectionForeground===h.NULL_COLOR&&(T.selectionForeground=void 0),h.color.isOpaque(T.selectionBackgroundTransparent)&&(T.selectionBackgroundTransparent=h.color.opacity(T.selectionBackgroundTransparent,.3)),h.color.isOpaque(T.selectionInactiveBackgroundTransparent)&&(T.selectionInactiveBackgroundTransparent=h.color.opacity(T.selectionInactiveBackgroundTransparent,.3)),T.ansi=r.DEFAULT_ANSI_COLORS.slice(),T.ansi[0]=E(N.black,r.DEFAULT_ANSI_COLORS[0]),T.ansi[1]=E(N.red,r.DEFAULT_ANSI_COLORS[1]),T.ansi[2]=E(N.green,r.DEFAULT_ANSI_COLORS[2]),T.ansi[3]=E(N.yellow,r.DEFAULT_ANSI_COLORS[3]),T.ansi[4]=E(N.blue,r.DEFAULT_ANSI_COLORS[4]),T.ansi[5]=E(N.magenta,r.DEFAULT_ANSI_COLORS[5]),T.ansi[6]=E(N.cyan,r.DEFAULT_ANSI_COLORS[6]),T.ansi[7]=E(N.white,r.DEFAULT_ANSI_COLORS[7]),T.ansi[8]=E(N.brightBlack,r.DEFAULT_ANSI_COLORS[8]),T.ansi[9]=E(N.brightRed,r.DEFAULT_ANSI_COLORS[9]),T.ansi[10]=E(N.brightGreen,r.DEFAULT_ANSI_COLORS[10]),T.ansi[11]=E(N.brightYellow,r.DEFAULT_ANSI_COLORS[11]),T.ansi[12]=E(N.brightBlue,r.DEFAULT_ANSI_COLORS[12]),T.ansi[13]=E(N.brightMagenta,r.DEFAULT_ANSI_COLORS[13]),T.ansi[14]=E(N.brightCyan,r.DEFAULT_ANSI_COLORS[14]),T.ansi[15]=E(N.brightWhite,r.DEFAULT_ANSI_COLORS[15]),N.extendedAnsi){let R=Math.min(T.ansi.length-16,N.extendedAnsi.length);for(let W=0;W<R;W++)T.ansi[W+16]=E(N.extendedAnsi[W],r.DEFAULT_ANSI_COLORS[W+16])}this._contrastCache.clear(),this._halfContrastCache.clear(),this._updateRestoreColors(),this._onChangeColors.fire(this.colors)}restoreColor(N){this._restoreColor(N),this._onChangeColors.fire(this.colors)}_restoreColor(N){if(N!==void 0)switch(N){case 256:this._colors.foreground=this._restoreColors.foreground;break;case 257:this._colors.background=this._restoreColors.background;break;case 258:this._colors.cursor=this._restoreColors.cursor;break;default:this._colors.ansi[N]=this._restoreColors.ansi[N]}else for(let T=0;T<this._restoreColors.ansi.length;++T)this._colors.ansi[T]=this._restoreColors.ansi[T]}modifyColors(N){N(this._colors),this._onChangeColors.fire(this.colors)}_updateRestoreColors(){this._restoreColors={foreground:this._colors.foreground,background:this._colors.background,cursor:this._colors.cursor,ansi:this._colors.ansi.slice()}}};function E(N,T){if(N!==void 0)try{return h.css.toColor(N)}catch{}return T}r.ThemeService=I=c([m(0,C.IOptionsService)],I)},6349:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.CircularList=void 0;let c=a(8460),m=a(844);class p extends m.Disposable{constructor(g){super(),this._maxLength=g,this.onDeleteEmitter=this.register(new c.EventEmitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this.register(new c.EventEmitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this.register(new c.EventEmitter),this.onTrim=this.onTrimEmitter.event,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(g){if(this._maxLength===g)return;let M=new Array(g);for(let C=0;C<Math.min(g,this.length);C++)M[C]=this._array[this._getCyclicIndex(C)];this._array=M,this._maxLength=g,this._startIndex=0}get length(){return this._length}set length(g){if(g>this._length)for(let M=this._length;M<g;M++)this._array[M]=void 0;this._length=g}get(g){return this._array[this._getCyclicIndex(g)]}set(g,M){this._array[this._getCyclicIndex(g)]=M}push(g){this._array[this._getCyclicIndex(this._length)]=g,this._length===this._maxLength?(this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1)):this._length++}recycle(){if(this._length!==this._maxLength)throw new Error("Can only recycle when the buffer is full");return this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1),this._array[this._getCyclicIndex(this._length-1)]}get isFull(){return this._length===this._maxLength}pop(){return this._array[this._getCyclicIndex(this._length---1)]}splice(g,M,...C){if(M){for(let _=g;_<this._length-M;_++)this._array[this._getCyclicIndex(_)]=this._array[this._getCyclicIndex(_+M)];this._length-=M,this.onDeleteEmitter.fire({index:g,amount:M})}for(let _=this._length-1;_>=g;_--)this._array[this._getCyclicIndex(_+C.length)]=this._array[this._getCyclicIndex(_)];for(let _=0;_<C.length;_++)this._array[this._getCyclicIndex(g+_)]=C[_];if(C.length&&this.onInsertEmitter.fire({index:g,amount:C.length}),this._length+C.length>this._maxLength){let _=this._length+C.length-this._maxLength;this._startIndex+=_,this._length=this._maxLength,this.onTrimEmitter.fire(_)}else this._length+=C.length}trimStart(g){g>this._length&&(g=this._length),this._startIndex+=g,this._length-=g,this.onTrimEmitter.fire(g)}shiftElements(g,M,C){if(!(M<=0)){if(g<0||g>=this._length)throw new Error("start argument out of range");if(g+C<0)throw new Error("Cannot shift elements in list beyond index 0");if(C>0){for(let w=M-1;w>=0;w--)this.set(g+w+C,this.get(g+w));let _=g+M+C-this._length;if(_>0)for(this._length+=_;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let _=0;_<M;_++)this.set(g+_+C,this.get(g+_))}}_getCyclicIndex(g){return(this._startIndex+g)%this._maxLength}}r.CircularList=p},1439:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.clone=void 0,r.clone=function a(c,m=5){if(typeof c!="object")return c;let p=Array.isArray(c)?[]:{};for(let h in c)p[h]=m<=1?c[h]:c[h]&&a(c[h],m-1);return p}},8055:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.contrastRatio=r.toPaddedHex=r.rgba=r.rgb=r.css=r.color=r.channels=r.NULL_COLOR=void 0;let a=0,c=0,m=0,p=0;var h,g,M,C,_;function w(y){let k=y.toString(16);return k.length<2?"0"+k:k}function S(y,k){return y<k?(k+.05)/(y+.05):(y+.05)/(k+.05)}r.NULL_COLOR={css:"#00000000",rgba:0},(function(y){y.toCss=function(k,I,E,N){return N!==void 0?`#${w(k)}${w(I)}${w(E)}${w(N)}`:`#${w(k)}${w(I)}${w(E)}`},y.toRgba=function(k,I,E,N=255){return(k<<24|I<<16|E<<8|N)>>>0},y.toColor=function(k,I,E,N){return{css:y.toCss(k,I,E,N),rgba:y.toRgba(k,I,E,N)}}})(h||(r.channels=h={})),(function(y){function k(I,E){return p=Math.round(255*E),[a,c,m]=_.toChannels(I.rgba),{css:h.toCss(a,c,m,p),rgba:h.toRgba(a,c,m,p)}}y.blend=function(I,E){if(p=(255&E.rgba)/255,p===1)return{css:E.css,rgba:E.rgba};let N=E.rgba>>24&255,T=E.rgba>>16&255,R=E.rgba>>8&255,W=I.rgba>>24&255,pe=I.rgba>>16&255,_e=I.rgba>>8&255;return a=W+Math.round((N-W)*p),c=pe+Math.round((T-pe)*p),m=_e+Math.round((R-_e)*p),{css:h.toCss(a,c,m),rgba:h.toRgba(a,c,m)}},y.isOpaque=function(I){return(255&I.rgba)==255},y.ensureContrastRatio=function(I,E,N){let T=_.ensureContrastRatio(I.rgba,E.rgba,N);if(T)return h.toColor(T>>24&255,T>>16&255,T>>8&255)},y.opaque=function(I){let E=(255|I.rgba)>>>0;return[a,c,m]=_.toChannels(E),{css:h.toCss(a,c,m),rgba:E}},y.opacity=k,y.multiplyOpacity=function(I,E){return p=255&I.rgba,k(I,p*E/255)},y.toColorRGB=function(I){return[I.rgba>>24&255,I.rgba>>16&255,I.rgba>>8&255]}})(g||(r.color=g={})),(function(y){let k,I;try{let E=document.createElement("canvas");E.width=1,E.height=1;let N=E.getContext("2d",{willReadFrequently:!0});N&&(k=N,k.globalCompositeOperation="copy",I=k.createLinearGradient(0,0,1,1))}catch{}y.toColor=function(E){if(E.match(/#[\da-f]{3,8}/i))switch(E.length){case 4:return a=parseInt(E.slice(1,2).repeat(2),16),c=parseInt(E.slice(2,3).repeat(2),16),m=parseInt(E.slice(3,4).repeat(2),16),h.toColor(a,c,m);case 5:return a=parseInt(E.slice(1,2).repeat(2),16),c=parseInt(E.slice(2,3).repeat(2),16),m=parseInt(E.slice(3,4).repeat(2),16),p=parseInt(E.slice(4,5).repeat(2),16),h.toColor(a,c,m,p);case 7:return{css:E,rgba:(parseInt(E.slice(1),16)<<8|255)>>>0};case 9:return{css:E,rgba:parseInt(E.slice(1),16)>>>0}}let N=E.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(N)return a=parseInt(N[1]),c=parseInt(N[2]),m=parseInt(N[3]),p=Math.round(255*(N[5]===void 0?1:parseFloat(N[5]))),h.toColor(a,c,m,p);if(!k||!I)throw new Error("css.toColor: Unsupported css format");if(k.fillStyle=I,k.fillStyle=E,typeof k.fillStyle!="string")throw new Error("css.toColor: Unsupported css format");if(k.fillRect(0,0,1,1),[a,c,m,p]=k.getImageData(0,0,1,1).data,p!==255)throw new Error("css.toColor: Unsupported css format");return{rgba:h.toRgba(a,c,m,p),css:E}}})(M||(r.css=M={})),(function(y){function k(I,E,N){let T=I/255,R=E/255,W=N/255;return .2126*(T<=.03928?T/12.92:Math.pow((T+.055)/1.055,2.4))+.7152*(R<=.03928?R/12.92:Math.pow((R+.055)/1.055,2.4))+.0722*(W<=.03928?W/12.92:Math.pow((W+.055)/1.055,2.4))}y.relativeLuminance=function(I){return k(I>>16&255,I>>8&255,255&I)},y.relativeLuminance2=k})(C||(r.rgb=C={})),(function(y){function k(E,N,T){let R=E>>24&255,W=E>>16&255,pe=E>>8&255,_e=N>>24&255,G=N>>16&255,ue=N>>8&255,ye=S(C.relativeLuminance2(_e,G,ue),C.relativeLuminance2(R,W,pe));for(;ye<T&&(_e>0||G>0||ue>0);)_e-=Math.max(0,Math.ceil(.1*_e)),G-=Math.max(0,Math.ceil(.1*G)),ue-=Math.max(0,Math.ceil(.1*ue)),ye=S(C.relativeLuminance2(_e,G,ue),C.relativeLuminance2(R,W,pe));return(_e<<24|G<<16|ue<<8|255)>>>0}function I(E,N,T){let R=E>>24&255,W=E>>16&255,pe=E>>8&255,_e=N>>24&255,G=N>>16&255,ue=N>>8&255,ye=S(C.relativeLuminance2(_e,G,ue),C.relativeLuminance2(R,W,pe));for(;ye<T&&(_e<255||G<255||ue<255);)_e=Math.min(255,_e+Math.ceil(.1*(255-_e))),G=Math.min(255,G+Math.ceil(.1*(255-G))),ue=Math.min(255,ue+Math.ceil(.1*(255-ue))),ye=S(C.relativeLuminance2(_e,G,ue),C.relativeLuminance2(R,W,pe));return(_e<<24|G<<16|ue<<8|255)>>>0}y.blend=function(E,N){if(p=(255&N)/255,p===1)return N;let T=N>>24&255,R=N>>16&255,W=N>>8&255,pe=E>>24&255,_e=E>>16&255,G=E>>8&255;return a=pe+Math.round((T-pe)*p),c=_e+Math.round((R-_e)*p),m=G+Math.round((W-G)*p),h.toRgba(a,c,m)},y.ensureContrastRatio=function(E,N,T){let R=C.relativeLuminance(E>>8),W=C.relativeLuminance(N>>8);if(S(R,W)<T){if(W<R){let G=k(E,N,T),ue=S(R,C.relativeLuminance(G>>8));if(ue<T){let ye=I(E,N,T);return ue>S(R,C.relativeLuminance(ye>>8))?G:ye}return G}let pe=I(E,N,T),_e=S(R,C.relativeLuminance(pe>>8));if(_e<T){let G=k(E,N,T);return _e>S(R,C.relativeLuminance(G>>8))?pe:G}return pe}},y.reduceLuminance=k,y.increaseLuminance=I,y.toChannels=function(E){return[E>>24&255,E>>16&255,E>>8&255,255&E]}})(_||(r.rgba=_={})),r.toPaddedHex=w,r.contrastRatio=S},8969:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.CoreTerminal=void 0;let c=a(844),m=a(2585),p=a(4348),h=a(7866),g=a(744),M=a(7302),C=a(6975),_=a(8460),w=a(1753),S=a(1480),y=a(7994),k=a(9282),I=a(5435),E=a(5981),N=a(2660),T=!1;class R extends c.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this.register(new _.EventEmitter),this._onScroll.event(pe=>{this._onScrollApi?.fire(pe.position)})),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(pe){for(let _e in pe)this.optionsService.options[_e]=pe[_e]}constructor(pe){super(),this._windowsWrappingHeuristics=this.register(new c.MutableDisposable),this._onBinary=this.register(new _.EventEmitter),this.onBinary=this._onBinary.event,this._onData=this.register(new _.EventEmitter),this.onData=this._onData.event,this._onLineFeed=this.register(new _.EventEmitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this.register(new _.EventEmitter),this.onResize=this._onResize.event,this._onWriteParsed=this.register(new _.EventEmitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this.register(new _.EventEmitter),this._instantiationService=new p.InstantiationService,this.optionsService=this.register(new M.OptionsService(pe)),this._instantiationService.setService(m.IOptionsService,this.optionsService),this._bufferService=this.register(this._instantiationService.createInstance(g.BufferService)),this._instantiationService.setService(m.IBufferService,this._bufferService),this._logService=this.register(this._instantiationService.createInstance(h.LogService)),this._instantiationService.setService(m.ILogService,this._logService),this.coreService=this.register(this._instantiationService.createInstance(C.CoreService)),this._instantiationService.setService(m.ICoreService,this.coreService),this.coreMouseService=this.register(this._instantiationService.createInstance(w.CoreMouseService)),this._instantiationService.setService(m.ICoreMouseService,this.coreMouseService),this.unicodeService=this.register(this._instantiationService.createInstance(S.UnicodeService)),this._instantiationService.setService(m.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(y.CharsetService),this._instantiationService.setService(m.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(N.OscLinkService),this._instantiationService.setService(m.IOscLinkService,this._oscLinkService),this._inputHandler=this.register(new I.InputHandler(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this.register((0,_.forwardEvent)(this._inputHandler.onLineFeed,this._onLineFeed)),this.register(this._inputHandler),this.register((0,_.forwardEvent)(this._bufferService.onResize,this._onResize)),this.register((0,_.forwardEvent)(this.coreService.onData,this._onData)),this.register((0,_.forwardEvent)(this.coreService.onBinary,this._onBinary)),this.register(this.coreService.onRequestScrollToBottom(()=>this.scrollToBottom())),this.register(this.coreService.onUserInput(()=>this._writeBuffer.handleUserInput())),this.register(this.optionsService.onMultipleOptionChange(["windowsMode","windowsPty"],()=>this._handleWindowsPtyOptionChange())),this.register(this._bufferService.onScroll(_e=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp,source:0}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)})),this.register(this._inputHandler.onScroll(_e=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp,source:0}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)})),this._writeBuffer=this.register(new E.WriteBuffer((_e,G)=>this._inputHandler.parse(_e,G))),this.register((0,_.forwardEvent)(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(pe,_e){this._writeBuffer.write(pe,_e)}writeSync(pe,_e){this._logService.logLevel<=m.LogLevelEnum.WARN&&!T&&(this._logService.warn("writeSync is unreliable and will be removed soon."),T=!0),this._writeBuffer.writeSync(pe,_e)}input(pe,_e=!0){this.coreService.triggerDataEvent(pe,_e)}resize(pe,_e){isNaN(pe)||isNaN(_e)||(pe=Math.max(pe,g.MINIMUM_COLS),_e=Math.max(_e,g.MINIMUM_ROWS),this._bufferService.resize(pe,_e))}scroll(pe,_e=!1){this._bufferService.scroll(pe,_e)}scrollLines(pe,_e,G){this._bufferService.scrollLines(pe,_e,G)}scrollPages(pe){this.scrollLines(pe*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(pe){let _e=pe-this._bufferService.buffer.ydisp;_e!==0&&this.scrollLines(_e)}registerEscHandler(pe,_e){return this._inputHandler.registerEscHandler(pe,_e)}registerDcsHandler(pe,_e){return this._inputHandler.registerDcsHandler(pe,_e)}registerCsiHandler(pe,_e){return this._inputHandler.registerCsiHandler(pe,_e)}registerOscHandler(pe,_e){return this._inputHandler.registerOscHandler(pe,_e)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let pe=!1,_e=this.optionsService.rawOptions.windowsPty;_e&&_e.buildNumber!==void 0&&_e.buildNumber!==void 0?pe=_e.backend==="conpty"&&_e.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(pe=!0),pe?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){let pe=[];pe.push(this.onLineFeed(k.updateWindowsModeWrappedState.bind(null,this._bufferService))),pe.push(this.registerCsiHandler({final:"H"},()=>((0,k.updateWindowsModeWrappedState)(this._bufferService),!1))),this._windowsWrappingHeuristics.value=(0,c.toDisposable)(()=>{for(let _e of pe)_e.dispose()})}}}r.CoreTerminal=R},8460:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.runAndSubscribe=r.forwardEvent=r.EventEmitter=void 0,r.EventEmitter=class{constructor(){this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=a=>(this._listeners.push(a),{dispose:()=>{if(!this._disposed){for(let c=0;c<this._listeners.length;c++)if(this._listeners[c]===a)return void this._listeners.splice(c,1)}}})),this._event}fire(a,c){let m=[];for(let p=0;p<this._listeners.length;p++)m.push(this._listeners[p]);for(let p=0;p<m.length;p++)m[p].call(void 0,a,c)}dispose(){this.clearListeners(),this._disposed=!0}clearListeners(){this._listeners&&(this._listeners.length=0)}},r.forwardEvent=function(a,c){return a(m=>c.fire(m))},r.runAndSubscribe=function(a,c){return c(void 0),a(m=>c(m))}},5435:function(o,r,a){var c=this&&this.__decorate||function(de,V,Y,ne){var ie,De=arguments.length,$e=De<3?V:ne===null?ne=Object.getOwnPropertyDescriptor(V,Y):ne;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")$e=Reflect.decorate(de,V,Y,ne);else for(var it=de.length-1;it>=0;it--)(ie=de[it])&&($e=(De<3?ie($e):De>3?ie(V,Y,$e):ie(V,Y))||$e);return De>3&&$e&&Object.defineProperty(V,Y,$e),$e},m=this&&this.__param||function(de,V){return function(Y,ne){V(Y,ne,de)}};Object.defineProperty(r,"__esModule",{value:!0}),r.InputHandler=r.WindowsOptionsReportType=void 0;let p=a(2584),h=a(7116),g=a(2015),M=a(844),C=a(482),_=a(8437),w=a(8460),S=a(643),y=a(511),k=a(3734),I=a(2585),E=a(1480),N=a(6242),T=a(6351),R=a(5941),W={"(":0,")":1,"*":2,"+":3,"-":1,".":2},pe=131072;function _e(de,V){if(de>24)return V.setWinLines||!1;switch(de){case 1:return!!V.restoreWin;case 2:return!!V.minimizeWin;case 3:return!!V.setWinPosition;case 4:return!!V.setWinSizePixels;case 5:return!!V.raiseWin;case 6:return!!V.lowerWin;case 7:return!!V.refreshWin;case 8:return!!V.setWinSizeChars;case 9:return!!V.maximizeWin;case 10:return!!V.fullscreenWin;case 11:return!!V.getWinState;case 13:return!!V.getWinPosition;case 14:return!!V.getWinSizePixels;case 15:return!!V.getScreenSizePixels;case 16:return!!V.getCellSizePixels;case 18:return!!V.getWinSizeChars;case 19:return!!V.getScreenSizeChars;case 20:return!!V.getIconTitle;case 21:return!!V.getWinTitle;case 22:return!!V.pushTitle;case 23:return!!V.popTitle;case 24:return!!V.setWinLines}return!1}var G;(function(de){de[de.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",de[de.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(G||(r.WindowsOptionsReportType=G={}));let ue=0;class ye extends M.Disposable{getAttrData(){return this._curAttrData}constructor(V,Y,ne,ie,De,$e,it,et,Se=new g.EscapeSequenceParser){super(),this._bufferService=V,this._charsetService=Y,this._coreService=ne,this._logService=ie,this._optionsService=De,this._oscLinkService=$e,this._coreMouseService=it,this._unicodeService=et,this._parser=Se,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new C.StringToUtf32,this._utf8Decoder=new C.Utf8ToUtf32,this._workCell=new y.CellData,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=_.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=_.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this.register(new w.EventEmitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this.register(new w.EventEmitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this.register(new w.EventEmitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this.register(new w.EventEmitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this.register(new w.EventEmitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this.register(new w.EventEmitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this.register(new w.EventEmitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this.register(new w.EventEmitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this.register(new w.EventEmitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this.register(new w.EventEmitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this.register(new w.EventEmitter),this.onScroll=this._onScroll.event,this._onTitleChange=this.register(new w.EventEmitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this.register(new w.EventEmitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this.register(this._parser),this._dirtyRowTracker=new ce(this._bufferService),this._activeBuffer=this._bufferService.buffer,this.register(this._bufferService.buffers.onBufferActivate(q=>this._activeBuffer=q.activeBuffer)),this._parser.setCsiHandlerFallback((q,Oe)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(q),params:Oe.toArray()})}),this._parser.setEscHandlerFallback(q=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(q)})}),this._parser.setExecuteHandlerFallback(q=>{this._logService.debug("Unknown EXECUTE code: ",{code:q})}),this._parser.setOscHandlerFallback((q,Oe,Ke)=>{this._logService.debug("Unknown OSC code: ",{identifier:q,action:Oe,data:Ke})}),this._parser.setDcsHandlerFallback((q,Oe,Ke)=>{Oe==="HOOK"&&(Ke=Ke.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(q),action:Oe,payload:Ke})}),this._parser.setPrintHandler((q,Oe,Ke)=>this.print(q,Oe,Ke)),this._parser.registerCsiHandler({final:"@"},q=>this.insertChars(q)),this._parser.registerCsiHandler({intermediates:" ",final:"@"},q=>this.scrollLeft(q)),this._parser.registerCsiHandler({final:"A"},q=>this.cursorUp(q)),this._parser.registerCsiHandler({intermediates:" ",final:"A"},q=>this.scrollRight(q)),this._parser.registerCsiHandler({final:"B"},q=>this.cursorDown(q)),this._parser.registerCsiHandler({final:"C"},q=>this.cursorForward(q)),this._parser.registerCsiHandler({final:"D"},q=>this.cursorBackward(q)),this._parser.registerCsiHandler({final:"E"},q=>this.cursorNextLine(q)),this._parser.registerCsiHandler({final:"F"},q=>this.cursorPrecedingLine(q)),this._parser.registerCsiHandler({final:"G"},q=>this.cursorCharAbsolute(q)),this._parser.registerCsiHandler({final:"H"},q=>this.cursorPosition(q)),this._parser.registerCsiHandler({final:"I"},q=>this.cursorForwardTab(q)),this._parser.registerCsiHandler({final:"J"},q=>this.eraseInDisplay(q,!1)),this._parser.registerCsiHandler({prefix:"?",final:"J"},q=>this.eraseInDisplay(q,!0)),this._parser.registerCsiHandler({final:"K"},q=>this.eraseInLine(q,!1)),this._parser.registerCsiHandler({prefix:"?",final:"K"},q=>this.eraseInLine(q,!0)),this._parser.registerCsiHandler({final:"L"},q=>this.insertLines(q)),this._parser.registerCsiHandler({final:"M"},q=>this.deleteLines(q)),this._parser.registerCsiHandler({final:"P"},q=>this.deleteChars(q)),this._parser.registerCsiHandler({final:"S"},q=>this.scrollUp(q)),this._parser.registerCsiHandler({final:"T"},q=>this.scrollDown(q)),this._parser.registerCsiHandler({final:"X"},q=>this.eraseChars(q)),this._parser.registerCsiHandler({final:"Z"},q=>this.cursorBackwardTab(q)),this._parser.registerCsiHandler({final:"`"},q=>this.charPosAbsolute(q)),this._parser.registerCsiHandler({final:"a"},q=>this.hPositionRelative(q)),this._parser.registerCsiHandler({final:"b"},q=>this.repeatPrecedingCharacter(q)),this._parser.registerCsiHandler({final:"c"},q=>this.sendDeviceAttributesPrimary(q)),this._parser.registerCsiHandler({prefix:">",final:"c"},q=>this.sendDeviceAttributesSecondary(q)),this._parser.registerCsiHandler({final:"d"},q=>this.linePosAbsolute(q)),this._parser.registerCsiHandler({final:"e"},q=>this.vPositionRelative(q)),this._parser.registerCsiHandler({final:"f"},q=>this.hVPosition(q)),this._parser.registerCsiHandler({final:"g"},q=>this.tabClear(q)),this._parser.registerCsiHandler({final:"h"},q=>this.setMode(q)),this._parser.registerCsiHandler({prefix:"?",final:"h"},q=>this.setModePrivate(q)),this._parser.registerCsiHandler({final:"l"},q=>this.resetMode(q)),this._parser.registerCsiHandler({prefix:"?",final:"l"},q=>this.resetModePrivate(q)),this._parser.registerCsiHandler({final:"m"},q=>this.charAttributes(q)),this._parser.registerCsiHandler({final:"n"},q=>this.deviceStatus(q)),this._parser.registerCsiHandler({prefix:"?",final:"n"},q=>this.deviceStatusPrivate(q)),this._parser.registerCsiHandler({intermediates:"!",final:"p"},q=>this.softReset(q)),this._parser.registerCsiHandler({intermediates:" ",final:"q"},q=>this.setCursorStyle(q)),this._parser.registerCsiHandler({final:"r"},q=>this.setScrollRegion(q)),this._parser.registerCsiHandler({final:"s"},q=>this.saveCursor(q)),this._parser.registerCsiHandler({final:"t"},q=>this.windowOptions(q)),this._parser.registerCsiHandler({final:"u"},q=>this.restoreCursor(q)),this._parser.registerCsiHandler({intermediates:"'",final:"}"},q=>this.insertColumns(q)),this._parser.registerCsiHandler({intermediates:"'",final:"~"},q=>this.deleteColumns(q)),this._parser.registerCsiHandler({intermediates:'"',final:"q"},q=>this.selectProtected(q)),this._parser.registerCsiHandler({intermediates:"$",final:"p"},q=>this.requestMode(q,!0)),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},q=>this.requestMode(q,!1)),this._parser.setExecuteHandler(p.C0.BEL,()=>this.bell()),this._parser.setExecuteHandler(p.C0.LF,()=>this.lineFeed()),this._parser.setExecuteHandler(p.C0.VT,()=>this.lineFeed()),this._parser.setExecuteHandler(p.C0.FF,()=>this.lineFeed()),this._parser.setExecuteHandler(p.C0.CR,()=>this.carriageReturn()),this._parser.setExecuteHandler(p.C0.BS,()=>this.backspace()),this._parser.setExecuteHandler(p.C0.HT,()=>this.tab()),this._parser.setExecuteHandler(p.C0.SO,()=>this.shiftOut()),this._parser.setExecuteHandler(p.C0.SI,()=>this.shiftIn()),this._parser.setExecuteHandler(p.C1.IND,()=>this.index()),this._parser.setExecuteHandler(p.C1.NEL,()=>this.nextLine()),this._parser.setExecuteHandler(p.C1.HTS,()=>this.tabSet()),this._parser.registerOscHandler(0,new N.OscHandler(q=>(this.setTitle(q),this.setIconName(q),!0))),this._parser.registerOscHandler(1,new N.OscHandler(q=>this.setIconName(q))),this._parser.registerOscHandler(2,new N.OscHandler(q=>this.setTitle(q))),this._parser.registerOscHandler(4,new N.OscHandler(q=>this.setOrReportIndexedColor(q))),this._parser.registerOscHandler(8,new N.OscHandler(q=>this.setHyperlink(q))),this._parser.registerOscHandler(10,new N.OscHandler(q=>this.setOrReportFgColor(q))),this._parser.registerOscHandler(11,new N.OscHandler(q=>this.setOrReportBgColor(q))),this._parser.registerOscHandler(12,new N.OscHandler(q=>this.setOrReportCursorColor(q))),this._parser.registerOscHandler(104,new N.OscHandler(q=>this.restoreIndexedColor(q))),this._parser.registerOscHandler(110,new N.OscHandler(q=>this.restoreFgColor(q))),this._parser.registerOscHandler(111,new N.OscHandler(q=>this.restoreBgColor(q))),this._parser.registerOscHandler(112,new N.OscHandler(q=>this.restoreCursorColor(q))),this._parser.registerEscHandler({final:"7"},()=>this.saveCursor()),this._parser.registerEscHandler({final:"8"},()=>this.restoreCursor()),this._parser.registerEscHandler({final:"D"},()=>this.index()),this._parser.registerEscHandler({final:"E"},()=>this.nextLine()),this._parser.registerEscHandler({final:"H"},()=>this.tabSet()),this._parser.registerEscHandler({final:"M"},()=>this.reverseIndex()),this._parser.registerEscHandler({final:"="},()=>this.keypadApplicationMode()),this._parser.registerEscHandler({final:">"},()=>this.keypadNumericMode()),this._parser.registerEscHandler({final:"c"},()=>this.fullReset()),this._parser.registerEscHandler({final:"n"},()=>this.setgLevel(2)),this._parser.registerEscHandler({final:"o"},()=>this.setgLevel(3)),this._parser.registerEscHandler({final:"|"},()=>this.setgLevel(3)),this._parser.registerEscHandler({final:"}"},()=>this.setgLevel(2)),this._parser.registerEscHandler({final:"~"},()=>this.setgLevel(1)),this._parser.registerEscHandler({intermediates:"%",final:"@"},()=>this.selectDefaultCharset()),this._parser.registerEscHandler({intermediates:"%",final:"G"},()=>this.selectDefaultCharset());for(let q in h.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:q},()=>this.selectCharset("("+q)),this._parser.registerEscHandler({intermediates:")",final:q},()=>this.selectCharset(")"+q)),this._parser.registerEscHandler({intermediates:"*",final:q},()=>this.selectCharset("*"+q)),this._parser.registerEscHandler({intermediates:"+",final:q},()=>this.selectCharset("+"+q)),this._parser.registerEscHandler({intermediates:"-",final:q},()=>this.selectCharset("-"+q)),this._parser.registerEscHandler({intermediates:".",final:q},()=>this.selectCharset("."+q)),this._parser.registerEscHandler({intermediates:"/",final:q},()=>this.selectCharset("/"+q));this._parser.registerEscHandler({intermediates:"#",final:"8"},()=>this.screenAlignmentPattern()),this._parser.setErrorHandler(q=>(this._logService.error("Parsing error: ",q),q)),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new T.DcsHandler((q,Oe)=>this.requestStatusString(q,Oe)))}_preserveStack(V,Y,ne,ie){this._parseStack.paused=!0,this._parseStack.cursorStartX=V,this._parseStack.cursorStartY=Y,this._parseStack.decodedLength=ne,this._parseStack.position=ie}_logSlowResolvingAsync(V){this._logService.logLevel<=I.LogLevelEnum.WARN&&Promise.race([V,new Promise((Y,ne)=>setTimeout(()=>ne("#SLOW_TIMEOUT"),5e3))]).catch(Y=>{if(Y!=="#SLOW_TIMEOUT")throw Y;console.warn("async parser handler taking longer than 5000 ms")})}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(V,Y){let ne,ie=this._activeBuffer.x,De=this._activeBuffer.y,$e=0,it=this._parseStack.paused;if(it){if(ne=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,Y))return this._logSlowResolvingAsync(ne),ne;ie=this._parseStack.cursorStartX,De=this._parseStack.cursorStartY,this._parseStack.paused=!1,V.length>pe&&($e=this._parseStack.position+pe)}if(this._logService.logLevel<=I.LogLevelEnum.DEBUG&&this._logService.debug("parsing data"+(typeof V=="string"?` "${V}"`:` "${Array.prototype.map.call(V,q=>String.fromCharCode(q)).join("")}"`),typeof V=="string"?V.split("").map(q=>q.charCodeAt(0)):V),this._parseBuffer.length<V.length&&this._parseBuffer.length<pe&&(this._parseBuffer=new Uint32Array(Math.min(V.length,pe))),it||this._dirtyRowTracker.clearRange(),V.length>pe)for(let q=$e;q<V.length;q+=pe){let Oe=q+pe<V.length?q+pe:V.length,Ke=typeof V=="string"?this._stringDecoder.decode(V.substring(q,Oe),this._parseBuffer):this._utf8Decoder.decode(V.subarray(q,Oe),this._parseBuffer);if(ne=this._parser.parse(this._parseBuffer,Ke))return this._preserveStack(ie,De,Ke,q),this._logSlowResolvingAsync(ne),ne}else if(!it){let q=typeof V=="string"?this._stringDecoder.decode(V,this._parseBuffer):this._utf8Decoder.decode(V,this._parseBuffer);if(ne=this._parser.parse(this._parseBuffer,q))return this._preserveStack(ie,De,q,0),this._logSlowResolvingAsync(ne),ne}this._activeBuffer.x===ie&&this._activeBuffer.y===De||this._onCursorMove.fire();let et=this._dirtyRowTracker.end+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp),Se=this._dirtyRowTracker.start+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp);Se<this._bufferService.rows&&this._onRequestRefreshRows.fire(Math.min(Se,this._bufferService.rows-1),Math.min(et,this._bufferService.rows-1))}print(V,Y,ne){let ie,De,$e=this._charsetService.charset,it=this._optionsService.rawOptions.screenReaderMode,et=this._bufferService.cols,Se=this._coreService.decPrivateModes.wraparound,q=this._coreService.modes.insertMode,Oe=this._curAttrData,Ke=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._activeBuffer.x&&ne-Y>0&&Ke.getWidth(this._activeBuffer.x-1)===2&&Ke.setCellFromCodepoint(this._activeBuffer.x-1,0,1,Oe);let Ct=this._parser.precedingJoinState;for(let Rt=Y;Rt<ne;++Rt){if(ie=V[Rt],ie<127&&$e){let Kr=$e[String.fromCharCode(ie)];Kr&&(ie=Kr.charCodeAt(0))}let ni=this._unicodeService.charProperties(ie,Ct);De=E.UnicodeService.extractWidth(ni);let Uo=E.UnicodeService.extractShouldJoin(ni),Eo=Uo?E.UnicodeService.extractWidth(Ct):0;if(Ct=ni,it&&this._onA11yChar.fire((0,C.stringFromCodePoint)(ie)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+De-Eo>et){if(Se){let Kr=Ke,An=this._activeBuffer.x-Eo;for(this._activeBuffer.x=Eo,this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData(),!0)):(this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),Ke=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),Eo>0&&Ke instanceof _.BufferLine&&Ke.copyCellsFrom(Kr,An,0,Eo,!1);An<et;)Kr.setCellFromCodepoint(An++,0,1,Oe)}else if(this._activeBuffer.x=et-1,De===2)continue}if(Uo&&this._activeBuffer.x){let Kr=Ke.getWidth(this._activeBuffer.x-1)?1:2;Ke.addCodepointToCell(this._activeBuffer.x-Kr,ie,De);for(let An=De-Eo;--An>=0;)Ke.setCellFromCodepoint(this._activeBuffer.x++,0,0,Oe)}else if(q&&(Ke.insertCells(this._activeBuffer.x,De-Eo,this._activeBuffer.getNullCell(Oe)),Ke.getWidth(et-1)===2&&Ke.setCellFromCodepoint(et-1,S.NULL_CELL_CODE,S.NULL_CELL_WIDTH,Oe)),Ke.setCellFromCodepoint(this._activeBuffer.x++,ie,De,Oe),De>0)for(;--De;)Ke.setCellFromCodepoint(this._activeBuffer.x++,0,0,Oe)}this._parser.precedingJoinState=Ct,this._activeBuffer.x<et&&ne-Y>0&&Ke.getWidth(this._activeBuffer.x)===0&&!Ke.hasContent(this._activeBuffer.x)&&Ke.setCellFromCodepoint(this._activeBuffer.x,0,1,Oe),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(V,Y){return V.final!=="t"||V.prefix||V.intermediates?this._parser.registerCsiHandler(V,Y):this._parser.registerCsiHandler(V,ne=>!_e(ne.params[0],this._optionsService.rawOptions.windowOptions)||Y(ne))}registerDcsHandler(V,Y){return this._parser.registerDcsHandler(V,new T.DcsHandler(Y))}registerEscHandler(V,Y){return this._parser.registerEscHandler(V,Y)}registerOscHandler(V,Y){return this._parser.registerOscHandler(V,new N.OscHandler(Y))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)?.isWrapped){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;let V=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);V.hasWidth(this._activeBuffer.x)&&!V.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let V=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-V),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(V=this._bufferService.cols-1){this._activeBuffer.x=Math.min(V,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(V,Y){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=V,this._activeBuffer.y=this._activeBuffer.scrollTop+Y):(this._activeBuffer.x=V,this._activeBuffer.y=Y),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(V,Y){this._restrictCursor(),this._setCursor(this._activeBuffer.x+V,this._activeBuffer.y+Y)}cursorUp(V){let Y=this._activeBuffer.y-this._activeBuffer.scrollTop;return Y>=0?this._moveCursor(0,-Math.min(Y,V.params[0]||1)):this._moveCursor(0,-(V.params[0]||1)),!0}cursorDown(V){let Y=this._activeBuffer.scrollBottom-this._activeBuffer.y;return Y>=0?this._moveCursor(0,Math.min(Y,V.params[0]||1)):this._moveCursor(0,V.params[0]||1),!0}cursorForward(V){return this._moveCursor(V.params[0]||1,0),!0}cursorBackward(V){return this._moveCursor(-(V.params[0]||1),0),!0}cursorNextLine(V){return this.cursorDown(V),this._activeBuffer.x=0,!0}cursorPrecedingLine(V){return this.cursorUp(V),this._activeBuffer.x=0,!0}cursorCharAbsolute(V){return this._setCursor((V.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(V){return this._setCursor(V.length>=2?(V.params[1]||1)-1:0,(V.params[0]||1)-1),!0}charPosAbsolute(V){return this._setCursor((V.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(V){return this._moveCursor(V.params[0]||1,0),!0}linePosAbsolute(V){return this._setCursor(this._activeBuffer.x,(V.params[0]||1)-1),!0}vPositionRelative(V){return this._moveCursor(0,V.params[0]||1),!0}hVPosition(V){return this.cursorPosition(V),!0}tabClear(V){let Y=V.params[0];return Y===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:Y===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(V){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let Y=V.params[0]||1;for(;Y--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(V){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let Y=V.params[0]||1;for(;Y--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(V){let Y=V.params[0];return Y===1&&(this._curAttrData.bg|=536870912),Y!==2&&Y!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(V,Y,ne,ie=!1,De=!1){let $e=this._activeBuffer.lines.get(this._activeBuffer.ybase+V);$e.replaceCells(Y,ne,this._activeBuffer.getNullCell(this._eraseAttrData()),De),ie&&($e.isWrapped=!1)}_resetBufferLine(V,Y=!1){let ne=this._activeBuffer.lines.get(this._activeBuffer.ybase+V);ne&&(ne.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),Y),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+V),ne.isWrapped=!1)}eraseInDisplay(V,Y=!1){let ne;switch(this._restrictCursor(this._bufferService.cols),V.params[0]){case 0:for(ne=this._activeBuffer.y,this._dirtyRowTracker.markDirty(ne),this._eraseInBufferLine(ne++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,Y);ne<this._bufferService.rows;ne++)this._resetBufferLine(ne,Y);this._dirtyRowTracker.markDirty(ne);break;case 1:for(ne=this._activeBuffer.y,this._dirtyRowTracker.markDirty(ne),this._eraseInBufferLine(ne,0,this._activeBuffer.x+1,!0,Y),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(ne+1).isWrapped=!1);ne--;)this._resetBufferLine(ne,Y);this._dirtyRowTracker.markDirty(0);break;case 2:for(ne=this._bufferService.rows,this._dirtyRowTracker.markDirty(ne-1);ne--;)this._resetBufferLine(ne,Y);this._dirtyRowTracker.markDirty(0);break;case 3:let ie=this._activeBuffer.lines.length-this._bufferService.rows;ie>0&&(this._activeBuffer.lines.trimStart(ie),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-ie,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-ie,0),this._onScroll.fire(0))}return!0}eraseInLine(V,Y=!1){switch(this._restrictCursor(this._bufferService.cols),V.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,Y);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,Y);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,Y)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(V){this._restrictCursor();let Y=V.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let ne=this._activeBuffer.ybase+this._activeBuffer.y,ie=this._bufferService.rows-1-this._activeBuffer.scrollBottom,De=this._bufferService.rows-1+this._activeBuffer.ybase-ie+1;for(;Y--;)this._activeBuffer.lines.splice(De-1,1),this._activeBuffer.lines.splice(ne,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}deleteLines(V){this._restrictCursor();let Y=V.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let ne=this._activeBuffer.ybase+this._activeBuffer.y,ie;for(ie=this._bufferService.rows-1-this._activeBuffer.scrollBottom,ie=this._bufferService.rows-1+this._activeBuffer.ybase-ie;Y--;)this._activeBuffer.lines.splice(ne,1),this._activeBuffer.lines.splice(ie,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}insertChars(V){this._restrictCursor();let Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return Y&&(Y.insertCells(this._activeBuffer.x,V.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}deleteChars(V){this._restrictCursor();let Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return Y&&(Y.deleteCells(this._activeBuffer.x,V.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(V){let Y=V.params[0]||1;for(;Y--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollDown(V){let Y=V.params[0]||1;for(;Y--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(_.DEFAULT_ATTR_DATA));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(V){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let Y=V.params[0]||1;for(let ne=this._activeBuffer.scrollTop;ne<=this._activeBuffer.scrollBottom;++ne){let ie=this._activeBuffer.lines.get(this._activeBuffer.ybase+ne);ie.deleteCells(0,Y,this._activeBuffer.getNullCell(this._eraseAttrData())),ie.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollRight(V){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let Y=V.params[0]||1;for(let ne=this._activeBuffer.scrollTop;ne<=this._activeBuffer.scrollBottom;++ne){let ie=this._activeBuffer.lines.get(this._activeBuffer.ybase+ne);ie.insertCells(0,Y,this._activeBuffer.getNullCell(this._eraseAttrData())),ie.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}insertColumns(V){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let Y=V.params[0]||1;for(let ne=this._activeBuffer.scrollTop;ne<=this._activeBuffer.scrollBottom;++ne){let ie=this._activeBuffer.lines.get(this._activeBuffer.ybase+ne);ie.insertCells(this._activeBuffer.x,Y,this._activeBuffer.getNullCell(this._eraseAttrData())),ie.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}deleteColumns(V){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;let Y=V.params[0]||1;for(let ne=this._activeBuffer.scrollTop;ne<=this._activeBuffer.scrollBottom;++ne){let ie=this._activeBuffer.lines.get(this._activeBuffer.ybase+ne);ie.deleteCells(this._activeBuffer.x,Y,this._activeBuffer.getNullCell(this._eraseAttrData())),ie.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(V){this._restrictCursor();let Y=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return Y&&(Y.replaceCells(this._activeBuffer.x,this._activeBuffer.x+(V.params[0]||1),this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}repeatPrecedingCharacter(V){let Y=this._parser.precedingJoinState;if(!Y)return!0;let ne=V.params[0]||1,ie=E.UnicodeService.extractWidth(Y),De=this._activeBuffer.x-ie,$e=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString(De),it=new Uint32Array($e.length*ne),et=0;for(let q=0;q<$e.length;){let Oe=$e.codePointAt(q)||0;it[et++]=Oe,q+=Oe>65535?2:1}let Se=et;for(let q=1;q<ne;++q)it.copyWithin(Se,0,et),Se+=et;return this.print(it,0,Se),!0}sendDeviceAttributesPrimary(V){return V.params[0]>0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(p.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(p.C0.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(V){return V.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(p.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(p.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(V.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(p.C0.ESC+"[>83;40003;0c")),!0}_is(V){return(this._optionsService.rawOptions.termName+"").indexOf(V)===0}setMode(V){for(let Y=0;Y<V.length;Y++)switch(V.params[Y]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0}return!0}setModePrivate(V){for(let Y=0;Y<V.length;Y++)switch(V.params[Y]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,h.DEFAULT_CHARSET),this._charsetService.setgCharset(1,h.DEFAULT_CHARSET),this._charsetService.setgCharset(2,h.DEFAULT_CHARSET),this._charsetService.setgCharset(3,h.DEFAULT_CHARSET);break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(132,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!0,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!0;break;case 12:this._optionsService.options.cursorBlink=!0;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!0;break;case 66:this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire();break;case 9:this._coreMouseService.activeProtocol="X10";break;case 1e3:this._coreMouseService.activeProtocol="VT200";break;case 1002:this._coreMouseService.activeProtocol="DRAG";break;case 1003:this._coreMouseService.activeProtocol="ANY";break;case 1004:this._coreService.decPrivateModes.sendFocus=!0,this._onRequestSendFocus.fire();break;case 1005:this._logService.debug("DECSET 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="SGR";break;case 1015:this._logService.debug("DECSET 1015 not supported (see #2507)");break;case 1016:this._coreMouseService.activeEncoding="SGR_PIXELS";break;case 25:this._coreService.isCursorHidden=!1;break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(0,this._bufferService.rows-1),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!0}return!0}resetMode(V){for(let Y=0;Y<V.length;Y++)switch(V.params[Y]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1}return!0}resetModePrivate(V){for(let Y=0;Y<V.length;Y++)switch(V.params[Y]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!1;break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(80,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!1,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!1;break;case 12:this._optionsService.options.cursorBlink=!1;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!1;break;case 66:this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire();break;case 9:case 1e3:case 1002:case 1003:this._coreMouseService.activeProtocol="NONE";break;case 1004:this._coreService.decPrivateModes.sendFocus=!1;break;case 1005:this._logService.debug("DECRST 1005 not supported (see #2507)");break;case 1006:case 1016:this._coreMouseService.activeEncoding="DEFAULT";break;case 1015:this._logService.debug("DECRST 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer(),V.params[Y]===1049&&this.restoreCursor(),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(0,this._bufferService.rows-1),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!1}return!0}requestMode(V,Y){let ne=this._coreService.decPrivateModes,{activeProtocol:ie,activeEncoding:De}=this._coreMouseService,$e=this._coreService,{buffers:it,cols:et}=this._bufferService,{active:Se,alt:q}=it,Oe=this._optionsService.rawOptions,Ke=Uo=>Uo?1:2,Ct=V.params[0];return Rt=Ct,ni=Y?Ct===2?4:Ct===4?Ke($e.modes.insertMode):Ct===12?3:Ct===20?Ke(Oe.convertEol):0:Ct===1?Ke(ne.applicationCursorKeys):Ct===3?Oe.windowOptions.setWinLines?et===80?2:et===132?1:0:0:Ct===6?Ke(ne.origin):Ct===7?Ke(ne.wraparound):Ct===8?3:Ct===9?Ke(ie==="X10"):Ct===12?Ke(Oe.cursorBlink):Ct===25?Ke(!$e.isCursorHidden):Ct===45?Ke(ne.reverseWraparound):Ct===66?Ke(ne.applicationKeypad):Ct===67?4:Ct===1e3?Ke(ie==="VT200"):Ct===1002?Ke(ie==="DRAG"):Ct===1003?Ke(ie==="ANY"):Ct===1004?Ke(ne.sendFocus):Ct===1005?4:Ct===1006?Ke(De==="SGR"):Ct===1015?4:Ct===1016?Ke(De==="SGR_PIXELS"):Ct===1048?1:Ct===47||Ct===1047||Ct===1049?Ke(Se===q):Ct===2004?Ke(ne.bracketedPasteMode):0,$e.triggerDataEvent(`${p.C0.ESC}[${Y?"":"?"}${Rt};${ni}$y`),!0;var Rt,ni}_updateAttrColor(V,Y,ne,ie,De){return Y===2?(V|=50331648,V&=-16777216,V|=k.AttributeData.fromColorRGB([ne,ie,De])):Y===5&&(V&=-50331904,V|=33554432|255&ne),V}_extractColor(V,Y,ne){let ie=[0,0,-1,0,0,0],De=0,$e=0;do{if(ie[$e+De]=V.params[Y+$e],V.hasSubParams(Y+$e)){let it=V.getSubParams(Y+$e),et=0;do ie[1]===5&&(De=1),ie[$e+et+1+De]=it[et];while(++et<it.length&&et+$e+1+De<ie.length);break}if(ie[1]===5&&$e+De>=2||ie[1]===2&&$e+De>=5)break;ie[1]&&(De=1)}while(++$e+Y<V.length&&$e+De<ie.length);for(let it=2;it<ie.length;++it)ie[it]===-1&&(ie[it]=0);switch(ie[0]){case 38:ne.fg=this._updateAttrColor(ne.fg,ie[1],ie[3],ie[4],ie[5]);break;case 48:ne.bg=this._updateAttrColor(ne.bg,ie[1],ie[3],ie[4],ie[5]);break;case 58:ne.extended=ne.extended.clone(),ne.extended.underlineColor=this._updateAttrColor(ne.extended.underlineColor,ie[1],ie[3],ie[4],ie[5])}return $e}_processUnderline(V,Y){Y.extended=Y.extended.clone(),(!~V||V>5)&&(V=1),Y.extended.underlineStyle=V,Y.fg|=268435456,V===0&&(Y.fg&=-268435457),Y.updateExtended()}_processSGR0(V){V.fg=_.DEFAULT_ATTR_DATA.fg,V.bg=_.DEFAULT_ATTR_DATA.bg,V.extended=V.extended.clone(),V.extended.underlineStyle=0,V.extended.underlineColor&=-67108864,V.updateExtended()}charAttributes(V){if(V.length===1&&V.params[0]===0)return this._processSGR0(this._curAttrData),!0;let Y=V.length,ne,ie=this._curAttrData;for(let De=0;De<Y;De++)ne=V.params[De],ne>=30&&ne<=37?(ie.fg&=-50331904,ie.fg|=16777216|ne-30):ne>=40&&ne<=47?(ie.bg&=-50331904,ie.bg|=16777216|ne-40):ne>=90&&ne<=97?(ie.fg&=-50331904,ie.fg|=16777224|ne-90):ne>=100&&ne<=107?(ie.bg&=-50331904,ie.bg|=16777224|ne-100):ne===0?this._processSGR0(ie):ne===1?ie.fg|=134217728:ne===3?ie.bg|=67108864:ne===4?(ie.fg|=268435456,this._processUnderline(V.hasSubParams(De)?V.getSubParams(De)[0]:1,ie)):ne===5?ie.fg|=536870912:ne===7?ie.fg|=67108864:ne===8?ie.fg|=1073741824:ne===9?ie.fg|=2147483648:ne===2?ie.bg|=134217728:ne===21?this._processUnderline(2,ie):ne===22?(ie.fg&=-134217729,ie.bg&=-134217729):ne===23?ie.bg&=-67108865:ne===24?(ie.fg&=-268435457,this._processUnderline(0,ie)):ne===25?ie.fg&=-536870913:ne===27?ie.fg&=-67108865:ne===28?ie.fg&=-1073741825:ne===29?ie.fg&=2147483647:ne===39?(ie.fg&=-67108864,ie.fg|=16777215&_.DEFAULT_ATTR_DATA.fg):ne===49?(ie.bg&=-67108864,ie.bg|=16777215&_.DEFAULT_ATTR_DATA.bg):ne===38||ne===48||ne===58?De+=this._extractColor(V,De,ie):ne===53?ie.bg|=1073741824:ne===55?ie.bg&=-1073741825:ne===59?(ie.extended=ie.extended.clone(),ie.extended.underlineColor=-1,ie.updateExtended()):ne===100?(ie.fg&=-67108864,ie.fg|=16777215&_.DEFAULT_ATTR_DATA.fg,ie.bg&=-67108864,ie.bg|=16777215&_.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",ne);return!0}deviceStatus(V){switch(V.params[0]){case 5:this._coreService.triggerDataEvent(`${p.C0.ESC}[0n`);break;case 6:let Y=this._activeBuffer.y+1,ne=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${p.C0.ESC}[${Y};${ne}R`)}return!0}deviceStatusPrivate(V){if(V.params[0]===6){let Y=this._activeBuffer.y+1,ne=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${p.C0.ESC}[?${Y};${ne}R`)}return!0}softReset(V){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=_.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(V){let Y=V.params[0]||1;switch(Y){case 1:case 2:this._optionsService.options.cursorStyle="block";break;case 3:case 4:this._optionsService.options.cursorStyle="underline";break;case 5:case 6:this._optionsService.options.cursorStyle="bar"}let ne=Y%2==1;return this._optionsService.options.cursorBlink=ne,!0}setScrollRegion(V){let Y=V.params[0]||1,ne;return(V.length<2||(ne=V.params[1])>this._bufferService.rows||ne===0)&&(ne=this._bufferService.rows),ne>Y&&(this._activeBuffer.scrollTop=Y-1,this._activeBuffer.scrollBottom=ne-1,this._setCursor(0,0)),!0}windowOptions(V){if(!_e(V.params[0],this._optionsService.rawOptions.windowOptions))return!0;let Y=V.length>1?V.params[1]:0;switch(V.params[0]){case 14:Y!==2&&this._onRequestWindowsOptionsReport.fire(G.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(G.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${p.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:Y!==0&&Y!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),Y!==0&&Y!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:Y!==0&&Y!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),Y!==0&&Y!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(V){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(V){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(V){return this._windowTitle=V,this._onTitleChange.fire(V),!0}setIconName(V){return this._iconName=V,!0}setOrReportIndexedColor(V){let Y=[],ne=V.split(";");for(;ne.length>1;){let ie=ne.shift(),De=ne.shift();if(/^\d+$/.exec(ie)){let $e=parseInt(ie);if(Ie($e))if(De==="?")Y.push({type:0,index:$e});else{let it=(0,R.parseColor)(De);it&&Y.push({type:1,index:$e,color:it})}}}return Y.length&&this._onColor.fire(Y),!0}setHyperlink(V){let Y=V.split(";");return!(Y.length<2)&&(Y[1]?this._createHyperlink(Y[0],Y[1]):!Y[0]&&this._finishHyperlink())}_createHyperlink(V,Y){this._getCurrentLinkId()&&this._finishHyperlink();let ne=V.split(":"),ie,De=ne.findIndex($e=>$e.startsWith("id="));return De!==-1&&(ie=ne[De].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:ie,uri:Y}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(V,Y){let ne=V.split(";");for(let ie=0;ie<ne.length&&!(Y>=this._specialColors.length);++ie,++Y)if(ne[ie]==="?")this._onColor.fire([{type:0,index:this._specialColors[Y]}]);else{let De=(0,R.parseColor)(ne[ie]);De&&this._onColor.fire([{type:1,index:this._specialColors[Y],color:De}])}return!0}setOrReportFgColor(V){return this._setOrReportSpecialColor(V,0)}setOrReportBgColor(V){return this._setOrReportSpecialColor(V,1)}setOrReportCursorColor(V){return this._setOrReportSpecialColor(V,2)}restoreIndexedColor(V){if(!V)return this._onColor.fire([{type:2}]),!0;let Y=[],ne=V.split(";");for(let ie=0;ie<ne.length;++ie)if(/^\d+$/.exec(ne[ie])){let De=parseInt(ne[ie]);Ie(De)&&Y.push({type:2,index:De})}return Y.length&&this._onColor.fire(Y),!0}restoreFgColor(V){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(V){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(V){return this._onColor.fire([{type:2,index:258}]),!0}nextLine(){return this._activeBuffer.x=0,this.index(),!0}keypadApplicationMode(){return this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0}keypadNumericMode(){return this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0}selectDefaultCharset(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,h.DEFAULT_CHARSET),!0}selectCharset(V){return V.length!==2?(this.selectDefaultCharset(),!0):(V[0]==="/"||this._charsetService.setgCharset(W[V[0]],h.CHARSETS[V[1]]||h.DEFAULT_CHARSET),!0)}index(){return this._restrictCursor(),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){let V=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,V,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=_.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=_.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(V){return this._charsetService.setgLevel(V),!0}screenAlignmentPattern(){let V=new y.CellData;V.content=4194373,V.fg=this._curAttrData.fg,V.bg=this._curAttrData.bg,this._setCursor(0,0);for(let Y=0;Y<this._bufferService.rows;++Y){let ne=this._activeBuffer.ybase+this._activeBuffer.y+Y,ie=this._activeBuffer.lines.get(ne);ie&&(ie.fill(V),ie.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(V,Y){let ne=this._bufferService.buffer,ie=this._optionsService.rawOptions;return(De=>(this._coreService.triggerDataEvent(`${p.C0.ESC}${De}${p.C0.ESC}\\`),!0))(V==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:V==='"p'?'P1$r61;1"p':V==="r"?`P1$r${ne.scrollTop+1};${ne.scrollBottom+1}r`:V==="m"?"P1$r0m":V===" q"?`P1$r${{block:2,underline:4,bar:6}[ie.cursorStyle]-(ie.cursorBlink?1:0)} q`:"P0$r")}markRangeDirty(V,Y){this._dirtyRowTracker.markRangeDirty(V,Y)}}r.InputHandler=ye;let ce=class{constructor(de){this._bufferService=de,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(de){de<this.start?this.start=de:de>this.end&&(this.end=de)}markRangeDirty(de,V){de>V&&(ue=de,de=V,V=ue),de<this.start&&(this.start=de),V>this.end&&(this.end=V)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function Ie(de){return 0<=de&&de<256}ce=c([m(0,I.IBufferService)],ce)},844:(o,r)=>{function a(c){for(let m of c)m.dispose();c.length=0}Object.defineProperty(r,"__esModule",{value:!0}),r.getDisposeArrayDisposable=r.disposeArray=r.toDisposable=r.MutableDisposable=r.Disposable=void 0,r.Disposable=class{constructor(){this._disposables=[],this._isDisposed=!1}dispose(){this._isDisposed=!0;for(let c of this._disposables)c.dispose();this._disposables.length=0}register(c){return this._disposables.push(c),c}unregister(c){let m=this._disposables.indexOf(c);m!==-1&&this._disposables.splice(m,1)}},r.MutableDisposable=class{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(c){this._isDisposed||c===this._value||(this._value?.dispose(),this._value=c)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,this._value?.dispose(),this._value=void 0}},r.toDisposable=function(c){return{dispose:c}},r.disposeArray=a,r.getDisposeArrayDisposable=function(c){return{dispose:()=>a(c)}}},1505:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.FourKeyMap=r.TwoKeyMap=void 0;class a{constructor(){this._data={}}set(m,p,h){this._data[m]||(this._data[m]={}),this._data[m][p]=h}get(m,p){return this._data[m]?this._data[m][p]:void 0}clear(){this._data={}}}r.TwoKeyMap=a,r.FourKeyMap=class{constructor(){this._data=new a}set(c,m,p,h,g){this._data.get(c,m)||this._data.set(c,m,new a),this._data.get(c,m).set(p,h,g)}get(c,m,p,h){return this._data.get(c,m)?.get(p,h)}clear(){this._data.clear()}}},6114:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.isChromeOS=r.isLinux=r.isWindows=r.isIphone=r.isIpad=r.isMac=r.getSafariVersion=r.isSafari=r.isLegacyEdge=r.isFirefox=r.isNode=void 0,r.isNode=typeof process<"u"&&"title"in process;let a=r.isNode?"node":navigator.userAgent,c=r.isNode?"node":navigator.platform;r.isFirefox=a.includes("Firefox"),r.isLegacyEdge=a.includes("Edge"),r.isSafari=/^((?!chrome|android).)*safari/i.test(a),r.getSafariVersion=function(){if(!r.isSafari)return 0;let m=a.match(/Version\/(\d+)/);return m===null||m.length<2?0:parseInt(m[1])},r.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(c),r.isIpad=c==="iPad",r.isIphone=c==="iPhone",r.isWindows=["Windows","Win16","Win32","WinCE"].includes(c),r.isLinux=c.indexOf("Linux")>=0,r.isChromeOS=/\bCrOS\b/.test(a)},6106:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.SortedList=void 0;let a=0;r.SortedList=class{constructor(c){this._getKey=c,this._array=[]}clear(){this._array.length=0}insert(c){this._array.length!==0?(a=this._search(this._getKey(c)),this._array.splice(a,0,c)):this._array.push(c)}delete(c){if(this._array.length===0)return!1;let m=this._getKey(c);if(m===void 0||(a=this._search(m),a===-1)||this._getKey(this._array[a])!==m)return!1;do if(this._array[a]===c)return this._array.splice(a,1),!0;while(++a<this._array.length&&this._getKey(this._array[a])===m);return!1}*getKeyIterator(c){if(this._array.length!==0&&(a=this._search(c),!(a<0||a>=this._array.length)&&this._getKey(this._array[a])===c))do yield this._array[a];while(++a<this._array.length&&this._getKey(this._array[a])===c)}forEachByKey(c,m){if(this._array.length!==0&&(a=this._search(c),!(a<0||a>=this._array.length)&&this._getKey(this._array[a])===c))do m(this._array[a]);while(++a<this._array.length&&this._getKey(this._array[a])===c)}values(){return[...this._array].values()}_search(c){let m=0,p=this._array.length-1;for(;p>=m;){let h=m+p>>1,g=this._getKey(this._array[h]);if(g>c)p=h-1;else{if(!(g<c)){for(;h>0&&this._getKey(this._array[h-1])===c;)h--;return h}m=h+1}}return m}}},7226:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.DebouncedIdleTask=r.IdleTaskQueue=r.PriorityTaskQueue=void 0;let c=a(6114);class m{constructor(){this._tasks=[],this._i=0}enqueue(g){this._tasks.push(g),this._start()}flush(){for(;this._i<this._tasks.length;)this._tasks[this._i]()||this._i++;this.clear()}clear(){this._idleCallback&&(this._cancelCallback(this._idleCallback),this._idleCallback=void 0),this._i=0,this._tasks.length=0}_start(){this._idleCallback||(this._idleCallback=this._requestCallback(this._process.bind(this)))}_process(g){this._idleCallback=void 0;let M=0,C=0,_=g.timeRemaining(),w=0;for(;this._i<this._tasks.length;){if(M=Date.now(),this._tasks[this._i]()||this._i++,M=Math.max(1,Date.now()-M),C=Math.max(M,C),w=g.timeRemaining(),1.5*C>w)return _-M<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(_-M))}ms`),void this._start();_=w}this.clear()}}class p extends m{_requestCallback(g){return setTimeout(()=>g(this._createDeadline(16)))}_cancelCallback(g){clearTimeout(g)}_createDeadline(g){let M=Date.now()+g;return{timeRemaining:()=>Math.max(0,M-Date.now())}}}r.PriorityTaskQueue=p,r.IdleTaskQueue=!c.isNode&&"requestIdleCallback"in window?class extends m{_requestCallback(h){return requestIdleCallback(h)}_cancelCallback(h){cancelIdleCallback(h)}}:p,r.DebouncedIdleTask=class{constructor(){this._queue=new r.IdleTaskQueue}set(h){this._queue.clear(),this._queue.enqueue(h)}flush(){this._queue.flush()}}},9282:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.updateWindowsModeWrappedState=void 0;let c=a(643);r.updateWindowsModeWrappedState=function(m){let p=m.buffer.lines.get(m.buffer.ybase+m.buffer.y-1),h=p?.get(m.cols-1),g=m.buffer.lines.get(m.buffer.ybase+m.buffer.y);g&&h&&(g.isWrapped=h[c.CHAR_DATA_CODE_INDEX]!==c.NULL_CELL_CODE&&h[c.CHAR_DATA_CODE_INDEX]!==c.WHITESPACE_CELL_CODE)}},3734:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ExtendedAttrs=r.AttributeData=void 0;class a{constructor(){this.fg=0,this.bg=0,this.extended=new c}static toColorRGB(p){return[p>>>16&255,p>>>8&255,255&p]}static fromColorRGB(p){return(255&p[0])<<16|(255&p[1])<<8|255&p[2]}clone(){let p=new a;return p.fg=this.fg,p.bg=this.bg,p.extended=this.extended.clone(),p}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return(50331648&this.fg)==50331648}isBgRGB(){return(50331648&this.bg)==50331648}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return(50331648&this.fg)==0}isBgDefault(){return(50331648&this.bg)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==0:this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}}r.AttributeData=a;class c{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(p){this._ext=p}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(p){this._ext&=-469762049,this._ext|=p<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(p){this._ext&=-67108864,this._ext|=67108863&p}get urlId(){return this._urlId}set urlId(p){this._urlId=p}get underlineVariantOffset(){let p=(3758096384&this._ext)>>29;return p<0?4294967288^p:p}set underlineVariantOffset(p){this._ext&=536870911,this._ext|=p<<29&3758096384}constructor(p=0,h=0){this._ext=0,this._urlId=0,this._ext=p,this._urlId=h}clone(){return new c(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}r.ExtendedAttrs=c},9092:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.Buffer=r.MAX_BUFFER_SIZE=void 0;let c=a(6349),m=a(7226),p=a(3734),h=a(8437),g=a(4634),M=a(511),C=a(643),_=a(4863),w=a(7116);r.MAX_BUFFER_SIZE=4294967295,r.Buffer=class{constructor(S,y,k){this._hasScrollback=S,this._optionsService=y,this._bufferService=k,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=h.DEFAULT_ATTR_DATA.clone(),this.savedCharset=w.DEFAULT_CHARSET,this.markers=[],this._nullCell=M.CellData.fromCharData([0,C.NULL_CELL_CHAR,C.NULL_CELL_WIDTH,C.NULL_CELL_CODE]),this._whitespaceCell=M.CellData.fromCharData([0,C.WHITESPACE_CELL_CHAR,C.WHITESPACE_CELL_WIDTH,C.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._memoryCleanupQueue=new m.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new c.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(S){return S?(this._nullCell.fg=S.fg,this._nullCell.bg=S.bg,this._nullCell.extended=S.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new p.ExtendedAttrs),this._nullCell}getWhitespaceCell(S){return S?(this._whitespaceCell.fg=S.fg,this._whitespaceCell.bg=S.bg,this._whitespaceCell.extended=S.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new p.ExtendedAttrs),this._whitespaceCell}getBlankLine(S,y){return new h.BufferLine(this._bufferService.cols,this.getNullCell(S),y)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){let S=this.ybase+this.y-this.ydisp;return S>=0&&S<this._rows}_getCorrectBufferLength(S){if(!this._hasScrollback)return S;let y=S+this._optionsService.rawOptions.scrollback;return y>r.MAX_BUFFER_SIZE?r.MAX_BUFFER_SIZE:y}fillViewportRows(S){if(this.lines.length===0){S===void 0&&(S=h.DEFAULT_ATTR_DATA);let y=this._rows;for(;y--;)this.lines.push(this.getBlankLine(S))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new c.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(S,y){let k=this.getNullCell(h.DEFAULT_ATTR_DATA),I=0,E=this._getCorrectBufferLength(y);if(E>this.lines.maxLength&&(this.lines.maxLength=E),this.lines.length>0){if(this._cols<S)for(let T=0;T<this.lines.length;T++)I+=+this.lines.get(T).resize(S,k);let N=0;if(this._rows<y)for(let T=this._rows;T<y;T++)this.lines.length<y+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new h.BufferLine(S,k)):this.ybase>0&&this.lines.length<=this.ybase+this.y+N+1?(this.ybase--,N++,this.ydisp>0&&this.ydisp--):this.lines.push(new h.BufferLine(S,k)));else for(let T=this._rows;T>y;T--)this.lines.length>y+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(E<this.lines.maxLength){let T=this.lines.length-E;T>0&&(this.lines.trimStart(T),this.ybase=Math.max(this.ybase-T,0),this.ydisp=Math.max(this.ydisp-T,0),this.savedY=Math.max(this.savedY-T,0)),this.lines.maxLength=E}this.x=Math.min(this.x,S-1),this.y=Math.min(this.y,y-1),N&&(this.y+=N),this.savedX=Math.min(this.savedX,S-1),this.scrollTop=0}if(this.scrollBottom=y-1,this._isReflowEnabled&&(this._reflow(S,y),this._cols>S))for(let N=0;N<this.lines.length;N++)I+=+this.lines.get(N).resize(S,k);this._cols=S,this._rows=y,this._memoryCleanupQueue.clear(),I>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue(()=>this._batchedMemoryCleanup()))}_batchedMemoryCleanup(){let S=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,S=!1);let y=0;for(;this._memoryCleanupPosition<this.lines.length;)if(y+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),y>100)return!0;return S}get _isReflowEnabled(){let S=this._optionsService.rawOptions.windowsPty;return S&&S.buildNumber?this._hasScrollback&&S.backend==="conpty"&&S.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(S,y){this._cols!==S&&(S>this._cols?this._reflowLarger(S,y):this._reflowSmaller(S,y))}_reflowLarger(S,y){let k=(0,g.reflowLargerGetLinesToRemove)(this.lines,this._cols,S,this.ybase+this.y,this.getNullCell(h.DEFAULT_ATTR_DATA));if(k.length>0){let I=(0,g.reflowLargerCreateNewLayout)(this.lines,k);(0,g.reflowLargerApplyNewLayout)(this.lines,I.layout),this._reflowLargerAdjustViewport(S,y,I.countRemoved)}}_reflowLargerAdjustViewport(S,y,k){let I=this.getNullCell(h.DEFAULT_ATTR_DATA),E=k;for(;E-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<y&&this.lines.push(new h.BufferLine(S,I))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-k,0)}_reflowSmaller(S,y){let k=this.getNullCell(h.DEFAULT_ATTR_DATA),I=[],E=0;for(let N=this.lines.length-1;N>=0;N--){let T=this.lines.get(N);if(!T||!T.isWrapped&&T.getTrimmedLength()<=S)continue;let R=[T];for(;T.isWrapped&&N>0;)T=this.lines.get(--N),R.unshift(T);let W=this.ybase+this.y;if(W>=N&&W<N+R.length)continue;let pe=R[R.length-1].getTrimmedLength(),_e=(0,g.reflowSmallerGetNewLineLengths)(R,this._cols,S),G=_e.length-R.length,ue;ue=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+G):Math.max(0,this.lines.length-this.lines.maxLength+G);let ye=[];for(let ne=0;ne<G;ne++){let ie=this.getBlankLine(h.DEFAULT_ATTR_DATA,!0);ye.push(ie)}ye.length>0&&(I.push({start:N+R.length+E,newLines:ye}),E+=ye.length),R.push(...ye);let ce=_e.length-1,Ie=_e[ce];Ie===0&&(ce--,Ie=_e[ce]);let de=R.length-G-1,V=pe;for(;de>=0;){let ne=Math.min(V,Ie);if(R[ce]===void 0)break;if(R[ce].copyCellsFrom(R[de],V-ne,Ie-ne,ne,!0),Ie-=ne,Ie===0&&(ce--,Ie=_e[ce]),V-=ne,V===0){de--;let ie=Math.max(de,0);V=(0,g.getWrappedLineTrimmedLength)(R,ie,this._cols)}}for(let ne=0;ne<R.length;ne++)_e[ne]<S&&R[ne].setCell(_e[ne],k);let Y=G-ue;for(;Y-- >0;)this.ybase===0?this.y<y-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+E)-y&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+G,this.ybase+y-1)}if(I.length>0){let N=[],T=[];for(let ce=0;ce<this.lines.length;ce++)T.push(this.lines.get(ce));let R=this.lines.length,W=R-1,pe=0,_e=I[pe];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+E);let G=0;for(let ce=Math.min(this.lines.maxLength-1,R+E-1);ce>=0;ce--)if(_e&&_e.start>W+G){for(let Ie=_e.newLines.length-1;Ie>=0;Ie--)this.lines.set(ce--,_e.newLines[Ie]);ce++,N.push({index:W+1,amount:_e.newLines.length}),G+=_e.newLines.length,_e=I[++pe]}else this.lines.set(ce,T[W--]);let ue=0;for(let ce=N.length-1;ce>=0;ce--)N[ce].index+=ue,this.lines.onInsertEmitter.fire(N[ce]),ue+=N[ce].amount;let ye=Math.max(0,R+E-this.lines.maxLength);ye>0&&this.lines.onTrimEmitter.fire(ye)}}translateBufferLineToString(S,y,k=0,I){let E=this.lines.get(S);return E?E.translateToString(y,k,I):""}getWrappedRangeForLine(S){let y=S,k=S;for(;y>0&&this.lines.get(y).isWrapped;)y--;for(;k+1<this.lines.length&&this.lines.get(k+1).isWrapped;)k++;return{first:y,last:k}}setupTabStops(S){for(S!=null?this.tabs[S]||(S=this.prevStop(S)):(this.tabs={},S=0);S<this._cols;S+=this._optionsService.rawOptions.tabStopWidth)this.tabs[S]=!0}prevStop(S){for(S==null&&(S=this.x);!this.tabs[--S]&&S>0;);return S>=this._cols?this._cols-1:S<0?0:S}nextStop(S){for(S==null&&(S=this.x);!this.tabs[++S]&&S<this._cols;);return S>=this._cols?this._cols-1:S<0?0:S}clearMarkers(S){this._isClearing=!0;for(let y=0;y<this.markers.length;y++)this.markers[y].line===S&&(this.markers[y].dispose(),this.markers.splice(y--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let S=0;S<this.markers.length;S++)this.markers[S].dispose(),this.markers.splice(S--,1);this._isClearing=!1}addMarker(S){let y=new _.Marker(S);return this.markers.push(y),y.register(this.lines.onTrim(k=>{y.line-=k,y.line<0&&y.dispose()})),y.register(this.lines.onInsert(k=>{y.line>=k.index&&(y.line+=k.amount)})),y.register(this.lines.onDelete(k=>{y.line>=k.index&&y.line<k.index+k.amount&&y.dispose(),y.line>k.index&&(y.line-=k.amount)})),y.register(y.onDispose(()=>this._removeMarker(y))),y}_removeMarker(S){this._isClearing||this.markers.splice(this.markers.indexOf(S),1)}}},8437:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.BufferLine=r.DEFAULT_ATTR_DATA=void 0;let c=a(3734),m=a(511),p=a(643),h=a(482);r.DEFAULT_ATTR_DATA=Object.freeze(new c.AttributeData);let g=0;class M{constructor(_,w,S=!1){this.isWrapped=S,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*_);let y=w||m.CellData.fromCharData([0,p.NULL_CELL_CHAR,p.NULL_CELL_WIDTH,p.NULL_CELL_CODE]);for(let k=0;k<_;++k)this.setCell(k,y);this.length=_}get(_){let w=this._data[3*_+0],S=2097151&w;return[this._data[3*_+1],2097152&w?this._combined[_]:S?(0,h.stringFromCodePoint)(S):"",w>>22,2097152&w?this._combined[_].charCodeAt(this._combined[_].length-1):S]}set(_,w){this._data[3*_+1]=w[p.CHAR_DATA_ATTR_INDEX],w[p.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[_]=w[1],this._data[3*_+0]=2097152|_|w[p.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*_+0]=w[p.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|w[p.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(_){return this._data[3*_+0]>>22}hasWidth(_){return 12582912&this._data[3*_+0]}getFg(_){return this._data[3*_+1]}getBg(_){return this._data[3*_+2]}hasContent(_){return 4194303&this._data[3*_+0]}getCodePoint(_){let w=this._data[3*_+0];return 2097152&w?this._combined[_].charCodeAt(this._combined[_].length-1):2097151&w}isCombined(_){return 2097152&this._data[3*_+0]}getString(_){let w=this._data[3*_+0];return 2097152&w?this._combined[_]:2097151&w?(0,h.stringFromCodePoint)(2097151&w):""}isProtected(_){return 536870912&this._data[3*_+2]}loadCell(_,w){return g=3*_,w.content=this._data[g+0],w.fg=this._data[g+1],w.bg=this._data[g+2],2097152&w.content&&(w.combinedData=this._combined[_]),268435456&w.bg&&(w.extended=this._extendedAttrs[_]),w}setCell(_,w){2097152&w.content&&(this._combined[_]=w.combinedData),268435456&w.bg&&(this._extendedAttrs[_]=w.extended),this._data[3*_+0]=w.content,this._data[3*_+1]=w.fg,this._data[3*_+2]=w.bg}setCellFromCodepoint(_,w,S,y){268435456&y.bg&&(this._extendedAttrs[_]=y.extended),this._data[3*_+0]=w|S<<22,this._data[3*_+1]=y.fg,this._data[3*_+2]=y.bg}addCodepointToCell(_,w,S){let y=this._data[3*_+0];2097152&y?this._combined[_]+=(0,h.stringFromCodePoint)(w):2097151&y?(this._combined[_]=(0,h.stringFromCodePoint)(2097151&y)+(0,h.stringFromCodePoint)(w),y&=-2097152,y|=2097152):y=w|4194304,S&&(y&=-12582913,y|=S<<22),this._data[3*_+0]=y}insertCells(_,w,S){if((_%=this.length)&&this.getWidth(_-1)===2&&this.setCellFromCodepoint(_-1,0,1,S),w<this.length-_){let y=new m.CellData;for(let k=this.length-_-w-1;k>=0;--k)this.setCell(_+w+k,this.loadCell(_+k,y));for(let k=0;k<w;++k)this.setCell(_+k,S)}else for(let y=_;y<this.length;++y)this.setCell(y,S);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,S)}deleteCells(_,w,S){if(_%=this.length,w<this.length-_){let y=new m.CellData;for(let k=0;k<this.length-_-w;++k)this.setCell(_+k,this.loadCell(_+w+k,y));for(let k=this.length-w;k<this.length;++k)this.setCell(k,S)}else for(let y=_;y<this.length;++y)this.setCell(y,S);_&&this.getWidth(_-1)===2&&this.setCellFromCodepoint(_-1,0,1,S),this.getWidth(_)!==0||this.hasContent(_)||this.setCellFromCodepoint(_,0,1,S)}replaceCells(_,w,S,y=!1){if(y)for(_&&this.getWidth(_-1)===2&&!this.isProtected(_-1)&&this.setCellFromCodepoint(_-1,0,1,S),w<this.length&&this.getWidth(w-1)===2&&!this.isProtected(w)&&this.setCellFromCodepoint(w,0,1,S);_<w&&_<this.length;)this.isProtected(_)||this.setCell(_,S),_++;else for(_&&this.getWidth(_-1)===2&&this.setCellFromCodepoint(_-1,0,1,S),w<this.length&&this.getWidth(w-1)===2&&this.setCellFromCodepoint(w,0,1,S);_<w&&_<this.length;)this.setCell(_++,S)}resize(_,w){if(_===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;let S=3*_;if(_>this.length){if(this._data.buffer.byteLength>=4*S)this._data=new Uint32Array(this._data.buffer,0,S);else{let y=new Uint32Array(S);y.set(this._data),this._data=y}for(let y=this.length;y<_;++y)this.setCell(y,w)}else{this._data=this._data.subarray(0,S);let y=Object.keys(this._combined);for(let I=0;I<y.length;I++){let E=parseInt(y[I],10);E>=_&&delete this._combined[E]}let k=Object.keys(this._extendedAttrs);for(let I=0;I<k.length;I++){let E=parseInt(k[I],10);E>=_&&delete this._extendedAttrs[E]}}return this.length=_,4*S*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){let _=new Uint32Array(this._data.length);return _.set(this._data),this._data=_,1}return 0}fill(_,w=!1){if(w)for(let S=0;S<this.length;++S)this.isProtected(S)||this.setCell(S,_);else{this._combined={},this._extendedAttrs={};for(let S=0;S<this.length;++S)this.setCell(S,_)}}copyFrom(_){this.length!==_.length?this._data=new Uint32Array(_._data):this._data.set(_._data),this.length=_.length,this._combined={};for(let w in _._combined)this._combined[w]=_._combined[w];this._extendedAttrs={};for(let w in _._extendedAttrs)this._extendedAttrs[w]=_._extendedAttrs[w];this.isWrapped=_.isWrapped}clone(){let _=new M(0);_._data=new Uint32Array(this._data),_.length=this.length;for(let w in this._combined)_._combined[w]=this._combined[w];for(let w in this._extendedAttrs)_._extendedAttrs[w]=this._extendedAttrs[w];return _.isWrapped=this.isWrapped,_}getTrimmedLength(){for(let _=this.length-1;_>=0;--_)if(4194303&this._data[3*_+0])return _+(this._data[3*_+0]>>22);return 0}getNoBgTrimmedLength(){for(let _=this.length-1;_>=0;--_)if(4194303&this._data[3*_+0]||50331648&this._data[3*_+2])return _+(this._data[3*_+0]>>22);return 0}copyCellsFrom(_,w,S,y,k){let I=_._data;if(k)for(let N=y-1;N>=0;N--){for(let T=0;T<3;T++)this._data[3*(S+N)+T]=I[3*(w+N)+T];268435456&I[3*(w+N)+2]&&(this._extendedAttrs[S+N]=_._extendedAttrs[w+N])}else for(let N=0;N<y;N++){for(let T=0;T<3;T++)this._data[3*(S+N)+T]=I[3*(w+N)+T];268435456&I[3*(w+N)+2]&&(this._extendedAttrs[S+N]=_._extendedAttrs[w+N])}let E=Object.keys(_._combined);for(let N=0;N<E.length;N++){let T=parseInt(E[N],10);T>=w&&(this._combined[T-w+S]=_._combined[T])}}translateToString(_,w,S,y){w=w??0,S=S??this.length,_&&(S=Math.min(S,this.getTrimmedLength())),y&&(y.length=0);let k="";for(;w<S;){let I=this._data[3*w+0],E=2097151&I,N=2097152&I?this._combined[w]:E?(0,h.stringFromCodePoint)(E):p.WHITESPACE_CELL_CHAR;if(k+=N,y)for(let T=0;T<N.length;++T)y.push(w);w+=I>>22||1}return y&&y.push(w),k}}r.BufferLine=M},4841:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.getRangeLength=void 0,r.getRangeLength=function(a,c){if(a.start.y>a.end.y)throw new Error(`Buffer range end (${a.end.x}, ${a.end.y}) cannot be before start (${a.start.x}, ${a.start.y})`);return c*(a.end.y-a.start.y)+(a.end.x-a.start.x+1)}},4634:(o,r)=>{function a(c,m,p){if(m===c.length-1)return c[m].getTrimmedLength();let h=!c[m].hasContent(p-1)&&c[m].getWidth(p-1)===1,g=c[m+1].getWidth(0)===2;return h&&g?p-1:p}Object.defineProperty(r,"__esModule",{value:!0}),r.getWrappedLineTrimmedLength=r.reflowSmallerGetNewLineLengths=r.reflowLargerApplyNewLayout=r.reflowLargerCreateNewLayout=r.reflowLargerGetLinesToRemove=void 0,r.reflowLargerGetLinesToRemove=function(c,m,p,h,g){let M=[];for(let C=0;C<c.length-1;C++){let _=C,w=c.get(++_);if(!w.isWrapped)continue;let S=[c.get(C)];for(;_<c.length&&w.isWrapped;)S.push(w),w=c.get(++_);if(h>=C&&h<_){C+=S.length-1;continue}let y=0,k=a(S,y,m),I=1,E=0;for(;I<S.length;){let T=a(S,I,m),R=T-E,W=p-k,pe=Math.min(R,W);S[y].copyCellsFrom(S[I],E,k,pe,!1),k+=pe,k===p&&(y++,k=0),E+=pe,E===T&&(I++,E=0),k===0&&y!==0&&S[y-1].getWidth(p-1)===2&&(S[y].copyCellsFrom(S[y-1],p-1,k++,1,!1),S[y-1].setCell(p-1,g))}S[y].replaceCells(k,p,g);let N=0;for(let T=S.length-1;T>0&&(T>y||S[T].getTrimmedLength()===0);T--)N++;N>0&&(M.push(C+S.length-N),M.push(N)),C+=S.length-1}return M},r.reflowLargerCreateNewLayout=function(c,m){let p=[],h=0,g=m[h],M=0;for(let C=0;C<c.length;C++)if(g===C){let _=m[++h];c.onDeleteEmitter.fire({index:C-M,amount:_}),C+=_-1,M+=_,g=m[++h]}else p.push(C);return{layout:p,countRemoved:M}},r.reflowLargerApplyNewLayout=function(c,m){let p=[];for(let h=0;h<m.length;h++)p.push(c.get(m[h]));for(let h=0;h<p.length;h++)c.set(h,p[h]);c.length=m.length},r.reflowSmallerGetNewLineLengths=function(c,m,p){let h=[],g=c.map((w,S)=>a(c,S,m)).reduce((w,S)=>w+S),M=0,C=0,_=0;for(;_<g;){if(g-_<p){h.push(g-_);break}M+=p;let w=a(c,C,m);M>w&&(M-=w,C++);let S=c[C].getWidth(M-1)===2;S&&M--;let y=S?p-1:p;h.push(y),_+=y}return h},r.getWrappedLineTrimmedLength=a},5295:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.BufferSet=void 0;let c=a(8460),m=a(844),p=a(9092);class h extends m.Disposable{constructor(M,C){super(),this._optionsService=M,this._bufferService=C,this._onBufferActivate=this.register(new c.EventEmitter),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this.register(this._optionsService.onSpecificOptionChange("scrollback",()=>this.resize(this._bufferService.cols,this._bufferService.rows))),this.register(this._optionsService.onSpecificOptionChange("tabStopWidth",()=>this.setupTabStops()))}reset(){this._normal=new p.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new p.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(M){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(M),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(M,C){this._normal.resize(M,C),this._alt.resize(M,C),this.setupTabStops(M)}setupTabStops(M){this._normal.setupTabStops(M),this._alt.setupTabStops(M)}}r.BufferSet=h},511:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.CellData=void 0;let c=a(482),m=a(643),p=a(3734);class h extends p.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new p.ExtendedAttrs,this.combinedData=""}static fromCharData(M){let C=new h;return C.setFromCharData(M),C}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,c.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(M){this.fg=M[m.CHAR_DATA_ATTR_INDEX],this.bg=0;let C=!1;if(M[m.CHAR_DATA_CHAR_INDEX].length>2)C=!0;else if(M[m.CHAR_DATA_CHAR_INDEX].length===2){let _=M[m.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=_&&_<=56319){let w=M[m.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=w&&w<=57343?this.content=1024*(_-55296)+w-56320+65536|M[m.CHAR_DATA_WIDTH_INDEX]<<22:C=!0}else C=!0}else this.content=M[m.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|M[m.CHAR_DATA_WIDTH_INDEX]<<22;C&&(this.combinedData=M[m.CHAR_DATA_CHAR_INDEX],this.content=2097152|M[m.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}r.CellData=h},643:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.WHITESPACE_CELL_CODE=r.WHITESPACE_CELL_WIDTH=r.WHITESPACE_CELL_CHAR=r.NULL_CELL_CODE=r.NULL_CELL_WIDTH=r.NULL_CELL_CHAR=r.CHAR_DATA_CODE_INDEX=r.CHAR_DATA_WIDTH_INDEX=r.CHAR_DATA_CHAR_INDEX=r.CHAR_DATA_ATTR_INDEX=r.DEFAULT_EXT=r.DEFAULT_ATTR=r.DEFAULT_COLOR=void 0,r.DEFAULT_COLOR=0,r.DEFAULT_ATTR=256|r.DEFAULT_COLOR<<9,r.DEFAULT_EXT=0,r.CHAR_DATA_ATTR_INDEX=0,r.CHAR_DATA_CHAR_INDEX=1,r.CHAR_DATA_WIDTH_INDEX=2,r.CHAR_DATA_CODE_INDEX=3,r.NULL_CELL_CHAR="",r.NULL_CELL_WIDTH=1,r.NULL_CELL_CODE=0,r.WHITESPACE_CELL_CHAR=" ",r.WHITESPACE_CELL_WIDTH=1,r.WHITESPACE_CELL_CODE=32},4863:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.Marker=void 0;let c=a(8460),m=a(844);class p{get id(){return this._id}constructor(g){this.line=g,this.isDisposed=!1,this._disposables=[],this._id=p._nextId++,this._onDispose=this.register(new c.EventEmitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,m.disposeArray)(this._disposables),this._disposables.length=0)}register(g){return this._disposables.push(g),g}}r.Marker=p,p._nextId=1},7116:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.DEFAULT_CHARSET=r.CHARSETS=void 0,r.CHARSETS={},r.DEFAULT_CHARSET=r.CHARSETS.B,r.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},r.CHARSETS.A={"#":"\xA3"},r.CHARSETS.B=void 0,r.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},r.CHARSETS.C=r.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},r.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},r.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},r.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},r.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},r.CHARSETS.E=r.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},r.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},r.CHARSETS.H=r.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},r.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},2584:(o,r)=>{var a,c,m;Object.defineProperty(r,"__esModule",{value:!0}),r.C1_ESCAPED=r.C1=r.C0=void 0,(function(p){p.NUL="\0",p.SOH="",p.STX="",p.ETX="",p.EOT="",p.ENQ="",p.ACK="",p.BEL="\x07",p.BS="\b",p.HT=" ",p.LF=`
|
||
`,p.VT="\v",p.FF="\f",p.CR="\r",p.SO="",p.SI="",p.DLE="",p.DC1="",p.DC2="",p.DC3="",p.DC4="",p.NAK="",p.SYN="",p.ETB="",p.CAN="",p.EM="",p.SUB="",p.ESC="\x1B",p.FS="",p.GS="",p.RS="",p.US="",p.SP=" ",p.DEL="\x7F"})(a||(r.C0=a={})),(function(p){p.PAD="\x80",p.HOP="\x81",p.BPH="\x82",p.NBH="\x83",p.IND="\x84",p.NEL="\x85",p.SSA="\x86",p.ESA="\x87",p.HTS="\x88",p.HTJ="\x89",p.VTS="\x8A",p.PLD="\x8B",p.PLU="\x8C",p.RI="\x8D",p.SS2="\x8E",p.SS3="\x8F",p.DCS="\x90",p.PU1="\x91",p.PU2="\x92",p.STS="\x93",p.CCH="\x94",p.MW="\x95",p.SPA="\x96",p.EPA="\x97",p.SOS="\x98",p.SGCI="\x99",p.SCI="\x9A",p.CSI="\x9B",p.ST="\x9C",p.OSC="\x9D",p.PM="\x9E",p.APC="\x9F"})(c||(r.C1=c={})),(function(p){p.ST=`${a.ESC}\\`})(m||(r.C1_ESCAPED=m={}))},7399:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.evaluateKeyboardEvent=void 0;let c=a(2584),m={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"']};r.evaluateKeyboardEvent=function(p,h,g,M){let C={type:0,cancel:!1,key:void 0},_=(p.shiftKey?1:0)|(p.altKey?2:0)|(p.ctrlKey?4:0)|(p.metaKey?8:0);switch(p.keyCode){case 0:p.key==="UIKeyInputUpArrow"?C.key=h?c.C0.ESC+"OA":c.C0.ESC+"[A":p.key==="UIKeyInputLeftArrow"?C.key=h?c.C0.ESC+"OD":c.C0.ESC+"[D":p.key==="UIKeyInputRightArrow"?C.key=h?c.C0.ESC+"OC":c.C0.ESC+"[C":p.key==="UIKeyInputDownArrow"&&(C.key=h?c.C0.ESC+"OB":c.C0.ESC+"[B");break;case 8:C.key=p.ctrlKey?"\b":c.C0.DEL,p.altKey&&(C.key=c.C0.ESC+C.key);break;case 9:if(p.shiftKey){C.key=c.C0.ESC+"[Z";break}C.key=c.C0.HT,C.cancel=!0;break;case 13:C.key=p.altKey?c.C0.ESC+c.C0.CR:c.C0.CR,C.cancel=!0;break;case 27:C.key=c.C0.ESC,p.altKey&&(C.key=c.C0.ESC+c.C0.ESC),C.cancel=!0;break;case 37:if(p.metaKey)break;_?(C.key=c.C0.ESC+"[1;"+(_+1)+"D",C.key===c.C0.ESC+"[1;3D"&&(C.key=c.C0.ESC+(g?"b":"[1;5D"))):C.key=h?c.C0.ESC+"OD":c.C0.ESC+"[D";break;case 39:if(p.metaKey)break;_?(C.key=c.C0.ESC+"[1;"+(_+1)+"C",C.key===c.C0.ESC+"[1;3C"&&(C.key=c.C0.ESC+(g?"f":"[1;5C"))):C.key=h?c.C0.ESC+"OC":c.C0.ESC+"[C";break;case 38:if(p.metaKey)break;_?(C.key=c.C0.ESC+"[1;"+(_+1)+"A",g||C.key!==c.C0.ESC+"[1;3A"||(C.key=c.C0.ESC+"[1;5A")):C.key=h?c.C0.ESC+"OA":c.C0.ESC+"[A";break;case 40:if(p.metaKey)break;_?(C.key=c.C0.ESC+"[1;"+(_+1)+"B",g||C.key!==c.C0.ESC+"[1;3B"||(C.key=c.C0.ESC+"[1;5B")):C.key=h?c.C0.ESC+"OB":c.C0.ESC+"[B";break;case 45:p.shiftKey||p.ctrlKey||(C.key=c.C0.ESC+"[2~");break;case 46:C.key=_?c.C0.ESC+"[3;"+(_+1)+"~":c.C0.ESC+"[3~";break;case 36:C.key=_?c.C0.ESC+"[1;"+(_+1)+"H":h?c.C0.ESC+"OH":c.C0.ESC+"[H";break;case 35:C.key=_?c.C0.ESC+"[1;"+(_+1)+"F":h?c.C0.ESC+"OF":c.C0.ESC+"[F";break;case 33:p.shiftKey?C.type=2:p.ctrlKey?C.key=c.C0.ESC+"[5;"+(_+1)+"~":C.key=c.C0.ESC+"[5~";break;case 34:p.shiftKey?C.type=3:p.ctrlKey?C.key=c.C0.ESC+"[6;"+(_+1)+"~":C.key=c.C0.ESC+"[6~";break;case 112:C.key=_?c.C0.ESC+"[1;"+(_+1)+"P":c.C0.ESC+"OP";break;case 113:C.key=_?c.C0.ESC+"[1;"+(_+1)+"Q":c.C0.ESC+"OQ";break;case 114:C.key=_?c.C0.ESC+"[1;"+(_+1)+"R":c.C0.ESC+"OR";break;case 115:C.key=_?c.C0.ESC+"[1;"+(_+1)+"S":c.C0.ESC+"OS";break;case 116:C.key=_?c.C0.ESC+"[15;"+(_+1)+"~":c.C0.ESC+"[15~";break;case 117:C.key=_?c.C0.ESC+"[17;"+(_+1)+"~":c.C0.ESC+"[17~";break;case 118:C.key=_?c.C0.ESC+"[18;"+(_+1)+"~":c.C0.ESC+"[18~";break;case 119:C.key=_?c.C0.ESC+"[19;"+(_+1)+"~":c.C0.ESC+"[19~";break;case 120:C.key=_?c.C0.ESC+"[20;"+(_+1)+"~":c.C0.ESC+"[20~";break;case 121:C.key=_?c.C0.ESC+"[21;"+(_+1)+"~":c.C0.ESC+"[21~";break;case 122:C.key=_?c.C0.ESC+"[23;"+(_+1)+"~":c.C0.ESC+"[23~";break;case 123:C.key=_?c.C0.ESC+"[24;"+(_+1)+"~":c.C0.ESC+"[24~";break;default:if(!p.ctrlKey||p.shiftKey||p.altKey||p.metaKey)if(g&&!M||!p.altKey||p.metaKey)!g||p.altKey||p.ctrlKey||p.shiftKey||!p.metaKey?p.key&&!p.ctrlKey&&!p.altKey&&!p.metaKey&&p.keyCode>=48&&p.key.length===1?C.key=p.key:p.key&&p.ctrlKey&&(p.key==="_"&&(C.key=c.C0.US),p.key==="@"&&(C.key=c.C0.NUL)):p.keyCode===65&&(C.type=1);else{let w=m[p.keyCode],S=w?.[p.shiftKey?1:0];if(S)C.key=c.C0.ESC+S;else if(p.keyCode>=65&&p.keyCode<=90){let y=p.ctrlKey?p.keyCode-64:p.keyCode+32,k=String.fromCharCode(y);p.shiftKey&&(k=k.toUpperCase()),C.key=c.C0.ESC+k}else if(p.keyCode===32)C.key=c.C0.ESC+(p.ctrlKey?c.C0.NUL:" ");else if(p.key==="Dead"&&p.code.startsWith("Key")){let y=p.code.slice(3,4);p.shiftKey||(y=y.toLowerCase()),C.key=c.C0.ESC+y,C.cancel=!0}}else p.keyCode>=65&&p.keyCode<=90?C.key=String.fromCharCode(p.keyCode-64):p.keyCode===32?C.key=c.C0.NUL:p.keyCode>=51&&p.keyCode<=55?C.key=String.fromCharCode(p.keyCode-51+27):p.keyCode===56?C.key=c.C0.DEL:p.keyCode===219?C.key=c.C0.ESC:p.keyCode===220?C.key=c.C0.FS:p.keyCode===221&&(C.key=c.C0.GS)}return C}},482:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.Utf8ToUtf32=r.StringToUtf32=r.utf32ToString=r.stringFromCodePoint=void 0,r.stringFromCodePoint=function(a){return a>65535?(a-=65536,String.fromCharCode(55296+(a>>10))+String.fromCharCode(a%1024+56320)):String.fromCharCode(a)},r.utf32ToString=function(a,c=0,m=a.length){let p="";for(let h=c;h<m;++h){let g=a[h];g>65535?(g-=65536,p+=String.fromCharCode(55296+(g>>10))+String.fromCharCode(g%1024+56320)):p+=String.fromCharCode(g)}return p},r.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(a,c){let m=a.length;if(!m)return 0;let p=0,h=0;if(this._interim){let g=a.charCodeAt(h++);56320<=g&&g<=57343?c[p++]=1024*(this._interim-55296)+g-56320+65536:(c[p++]=this._interim,c[p++]=g),this._interim=0}for(let g=h;g<m;++g){let M=a.charCodeAt(g);if(55296<=M&&M<=56319){if(++g>=m)return this._interim=M,p;let C=a.charCodeAt(g);56320<=C&&C<=57343?c[p++]=1024*(M-55296)+C-56320+65536:(c[p++]=M,c[p++]=C)}else M!==65279&&(c[p++]=M)}return p}},r.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(a,c){let m=a.length;if(!m)return 0;let p,h,g,M,C=0,_=0,w=0;if(this.interim[0]){let k=!1,I=this.interim[0];I&=(224&I)==192?31:(240&I)==224?15:7;let E,N=0;for(;(E=63&this.interim[++N])&&N<4;)I<<=6,I|=E;let T=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,R=T-N;for(;w<R;){if(w>=m)return 0;if(E=a[w++],(192&E)!=128){w--,k=!0;break}this.interim[N++]=E,I<<=6,I|=63&E}k||(T===2?I<128?w--:c[C++]=I:T===3?I<2048||I>=55296&&I<=57343||I===65279||(c[C++]=I):I<65536||I>1114111||(c[C++]=I)),this.interim.fill(0)}let S=m-4,y=w;for(;y<m;){for(;!(!(y<S)||128&(p=a[y])||128&(h=a[y+1])||128&(g=a[y+2])||128&(M=a[y+3]));)c[C++]=p,c[C++]=h,c[C++]=g,c[C++]=M,y+=4;if(p=a[y++],p<128)c[C++]=p;else if((224&p)==192){if(y>=m)return this.interim[0]=p,C;if(h=a[y++],(192&h)!=128){y--;continue}if(_=(31&p)<<6|63&h,_<128){y--;continue}c[C++]=_}else if((240&p)==224){if(y>=m)return this.interim[0]=p,C;if(h=a[y++],(192&h)!=128){y--;continue}if(y>=m)return this.interim[0]=p,this.interim[1]=h,C;if(g=a[y++],(192&g)!=128){y--;continue}if(_=(15&p)<<12|(63&h)<<6|63&g,_<2048||_>=55296&&_<=57343||_===65279)continue;c[C++]=_}else if((248&p)==240){if(y>=m)return this.interim[0]=p,C;if(h=a[y++],(192&h)!=128){y--;continue}if(y>=m)return this.interim[0]=p,this.interim[1]=h,C;if(g=a[y++],(192&g)!=128){y--;continue}if(y>=m)return this.interim[0]=p,this.interim[1]=h,this.interim[2]=g,C;if(M=a[y++],(192&M)!=128){y--;continue}if(_=(7&p)<<18|(63&h)<<12|(63&g)<<6|63&M,_<65536||_>1114111)continue;c[C++]=_}}return C}}},225:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.UnicodeV6=void 0;let c=a(1480),m=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],p=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],h;r.UnicodeV6=class{constructor(){if(this.version="6",!h){h=new Uint8Array(65536),h.fill(1),h[0]=0,h.fill(0,1,32),h.fill(0,127,160),h.fill(2,4352,4448),h[9001]=2,h[9002]=2,h.fill(2,11904,42192),h[12351]=1,h.fill(2,44032,55204),h.fill(2,63744,64256),h.fill(2,65040,65050),h.fill(2,65072,65136),h.fill(2,65280,65377),h.fill(2,65504,65511);for(let g=0;g<m.length;++g)h.fill(0,m[g][0],m[g][1]+1)}}wcwidth(g){return g<32?0:g<127?1:g<65536?h[g]:(function(M,C){let _,w=0,S=C.length-1;if(M<C[0][0]||M>C[S][1])return!1;for(;S>=w;)if(_=w+S>>1,M>C[_][1])w=_+1;else{if(!(M<C[_][0]))return!0;S=_-1}return!1})(g,p)?0:g>=131072&&g<=196605||g>=196608&&g<=262141?2:1}charProperties(g,M){let C=this.wcwidth(g),_=C===0&&M!==0;if(_){let w=c.UnicodeService.extractWidth(M);w===0?_=!1:w>C&&(C=w)}return c.UnicodeService.createPropertyValue(0,C,_)}}},5981:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.WriteBuffer=void 0;let c=a(8460),m=a(844);class p extends m.Disposable{constructor(g){super(),this._action=g,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this.register(new c.EventEmitter),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(g,M){if(M!==void 0&&this._syncCalls>M)return void(this._syncCalls=0);if(this._pendingData+=g.length,this._writeBuffer.push(g),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let C;for(this._isSyncWriting=!0;C=this._writeBuffer.shift();){this._action(C);let _=this._callbacks.shift();_&&_()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(g,M){if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput)return this._didUserInput=!1,this._pendingData+=g.length,this._writeBuffer.push(g),this._callbacks.push(M),void this._innerWrite();setTimeout(()=>this._innerWrite())}this._pendingData+=g.length,this._writeBuffer.push(g),this._callbacks.push(M)}_innerWrite(g=0,M=!0){let C=g||Date.now();for(;this._writeBuffer.length>this._bufferOffset;){let _=this._writeBuffer[this._bufferOffset],w=this._action(_,M);if(w){let y=k=>Date.now()-C>=12?setTimeout(()=>this._innerWrite(0,k)):this._innerWrite(C,k);return void w.catch(k=>(queueMicrotask(()=>{throw k}),Promise.resolve(!1))).then(y)}let S=this._callbacks[this._bufferOffset];if(S&&S(),this._bufferOffset++,this._pendingData-=_.length,Date.now()-C>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout(()=>this._innerWrite())):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}r.WriteBuffer=p},5941:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.toRgbString=r.parseColor=void 0;let a=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,c=/^[\da-f]+$/;function m(p,h){let g=p.toString(16),M=g.length<2?"0"+g:g;switch(h){case 4:return g[0];case 8:return M;case 12:return(M+M).slice(0,3);default:return M+M}}r.parseColor=function(p){if(!p)return;let h=p.toLowerCase();if(h.indexOf("rgb:")===0){h=h.slice(4);let g=a.exec(h);if(g){let M=g[1]?15:g[4]?255:g[7]?4095:65535;return[Math.round(parseInt(g[1]||g[4]||g[7]||g[10],16)/M*255),Math.round(parseInt(g[2]||g[5]||g[8]||g[11],16)/M*255),Math.round(parseInt(g[3]||g[6]||g[9]||g[12],16)/M*255)]}}else if(h.indexOf("#")===0&&(h=h.slice(1),c.exec(h)&&[3,6,9,12].includes(h.length))){let g=h.length/3,M=[0,0,0];for(let C=0;C<3;++C){let _=parseInt(h.slice(g*C,g*C+g),16);M[C]=g===1?_<<4:g===2?_:g===3?_>>4:_>>8}return M}},r.toRgbString=function(p,h=16){let[g,M,C]=p;return`rgb:${m(g,h)}/${m(M,h)}/${m(C,h)}`}},5770:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.PAYLOAD_LIMIT=void 0,r.PAYLOAD_LIMIT=1e7},6351:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.DcsHandler=r.DcsParser=void 0;let c=a(482),m=a(8742),p=a(5770),h=[];r.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=h,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=h}registerHandler(M,C){this._handlers[M]===void 0&&(this._handlers[M]=[]);let _=this._handlers[M];return _.push(C),{dispose:()=>{let w=_.indexOf(C);w!==-1&&_.splice(w,1)}}}clearHandler(M){this._handlers[M]&&delete this._handlers[M]}setHandlerFallback(M){this._handlerFb=M}reset(){if(this._active.length)for(let M=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;M>=0;--M)this._active[M].unhook(!1);this._stack.paused=!1,this._active=h,this._ident=0}hook(M,C){if(this.reset(),this._ident=M,this._active=this._handlers[M]||h,this._active.length)for(let _=this._active.length-1;_>=0;_--)this._active[_].hook(C);else this._handlerFb(this._ident,"HOOK",C)}put(M,C,_){if(this._active.length)for(let w=this._active.length-1;w>=0;w--)this._active[w].put(M,C,_);else this._handlerFb(this._ident,"PUT",(0,c.utf32ToString)(M,C,_))}unhook(M,C=!0){if(this._active.length){let _=!1,w=this._active.length-1,S=!1;if(this._stack.paused&&(w=this._stack.loopPosition-1,_=C,S=this._stack.fallThrough,this._stack.paused=!1),!S&&_===!1){for(;w>=0&&(_=this._active[w].unhook(M),_!==!0);w--)if(_ instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=w,this._stack.fallThrough=!1,_;w--}for(;w>=0;w--)if(_=this._active[w].unhook(!1),_ instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=w,this._stack.fallThrough=!0,_}else this._handlerFb(this._ident,"UNHOOK",M);this._active=h,this._ident=0}};let g=new m.Params;g.addParam(0),r.DcsHandler=class{constructor(M){this._handler=M,this._data="",this._params=g,this._hitLimit=!1}hook(M){this._params=M.length>1||M.params[0]?M.clone():g,this._data="",this._hitLimit=!1}put(M,C,_){this._hitLimit||(this._data+=(0,c.utf32ToString)(M,C,_),this._data.length>p.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}unhook(M){let C=!1;if(this._hitLimit)C=!1;else if(M&&(C=this._handler(this._data,this._params),C instanceof Promise))return C.then(_=>(this._params=g,this._data="",this._hitLimit=!1,_));return this._params=g,this._data="",this._hitLimit=!1,C}}},2015:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.EscapeSequenceParser=r.VT500_TRANSITION_TABLE=r.TransitionTable=void 0;let c=a(844),m=a(8742),p=a(6242),h=a(6351);class g{constructor(w){this.table=new Uint8Array(w)}setDefault(w,S){this.table.fill(w<<4|S)}add(w,S,y,k){this.table[S<<8|w]=y<<4|k}addMany(w,S,y,k){for(let I=0;I<w.length;I++)this.table[S<<8|w[I]]=y<<4|k}}r.TransitionTable=g;let M=160;r.VT500_TRANSITION_TABLE=(function(){let _=new g(4095),w=Array.apply(null,Array(256)).map((N,T)=>T),S=(N,T)=>w.slice(N,T),y=S(32,127),k=S(0,24);k.push(25),k.push.apply(k,S(28,32));let I=S(0,14),E;for(E in _.setDefault(1,0),_.addMany(y,0,2,0),I)_.addMany([24,26,153,154],E,3,0),_.addMany(S(128,144),E,3,0),_.addMany(S(144,152),E,3,0),_.add(156,E,0,0),_.add(27,E,11,1),_.add(157,E,4,8),_.addMany([152,158,159],E,0,7),_.add(155,E,11,3),_.add(144,E,11,9);return _.addMany(k,0,3,0),_.addMany(k,1,3,1),_.add(127,1,0,1),_.addMany(k,8,0,8),_.addMany(k,3,3,3),_.add(127,3,0,3),_.addMany(k,4,3,4),_.add(127,4,0,4),_.addMany(k,6,3,6),_.addMany(k,5,3,5),_.add(127,5,0,5),_.addMany(k,2,3,2),_.add(127,2,0,2),_.add(93,1,4,8),_.addMany(y,8,5,8),_.add(127,8,5,8),_.addMany([156,27,24,26,7],8,6,0),_.addMany(S(28,32),8,0,8),_.addMany([88,94,95],1,0,7),_.addMany(y,7,0,7),_.addMany(k,7,0,7),_.add(156,7,0,0),_.add(127,7,0,7),_.add(91,1,11,3),_.addMany(S(64,127),3,7,0),_.addMany(S(48,60),3,8,4),_.addMany([60,61,62,63],3,9,4),_.addMany(S(48,60),4,8,4),_.addMany(S(64,127),4,7,0),_.addMany([60,61,62,63],4,0,6),_.addMany(S(32,64),6,0,6),_.add(127,6,0,6),_.addMany(S(64,127),6,0,0),_.addMany(S(32,48),3,9,5),_.addMany(S(32,48),5,9,5),_.addMany(S(48,64),5,0,6),_.addMany(S(64,127),5,7,0),_.addMany(S(32,48),4,9,5),_.addMany(S(32,48),1,9,2),_.addMany(S(32,48),2,9,2),_.addMany(S(48,127),2,10,0),_.addMany(S(48,80),1,10,0),_.addMany(S(81,88),1,10,0),_.addMany([89,90,92],1,10,0),_.addMany(S(96,127),1,10,0),_.add(80,1,11,9),_.addMany(k,9,0,9),_.add(127,9,0,9),_.addMany(S(28,32),9,0,9),_.addMany(S(32,48),9,9,12),_.addMany(S(48,60),9,8,10),_.addMany([60,61,62,63],9,9,10),_.addMany(k,11,0,11),_.addMany(S(32,128),11,0,11),_.addMany(S(28,32),11,0,11),_.addMany(k,10,0,10),_.add(127,10,0,10),_.addMany(S(28,32),10,0,10),_.addMany(S(48,60),10,8,10),_.addMany([60,61,62,63],10,0,11),_.addMany(S(32,48),10,9,12),_.addMany(k,12,0,12),_.add(127,12,0,12),_.addMany(S(28,32),12,0,12),_.addMany(S(32,48),12,9,12),_.addMany(S(48,64),12,0,11),_.addMany(S(64,127),12,12,13),_.addMany(S(64,127),10,12,13),_.addMany(S(64,127),9,12,13),_.addMany(k,13,13,13),_.addMany(y,13,13,13),_.add(127,13,0,13),_.addMany([27,156,24,26],13,14,0),_.add(M,0,2,0),_.add(M,8,5,8),_.add(M,6,0,6),_.add(M,11,0,11),_.add(M,13,13,13),_})();class C extends c.Disposable{constructor(w=r.VT500_TRANSITION_TABLE){super(),this._transitions=w,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new m.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(S,y,k)=>{},this._executeHandlerFb=S=>{},this._csiHandlerFb=(S,y)=>{},this._escHandlerFb=S=>{},this._errorHandlerFb=S=>S,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this.register((0,c.toDisposable)(()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)})),this._oscParser=this.register(new p.OscParser),this._dcsParser=this.register(new h.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},()=>!0)}_identifier(w,S=[64,126]){let y=0;if(w.prefix){if(w.prefix.length>1)throw new Error("only one byte as prefix supported");if(y=w.prefix.charCodeAt(0),y&&60>y||y>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(w.intermediates){if(w.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let I=0;I<w.intermediates.length;++I){let E=w.intermediates.charCodeAt(I);if(32>E||E>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");y<<=8,y|=E}}if(w.final.length!==1)throw new Error("final must be a single byte");let k=w.final.charCodeAt(0);if(S[0]>k||k>S[1])throw new Error(`final must be in range ${S[0]} .. ${S[1]}`);return y<<=8,y|=k,y}identToString(w){let S=[];for(;w;)S.push(String.fromCharCode(255&w)),w>>=8;return S.reverse().join("")}setPrintHandler(w){this._printHandler=w}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(w,S){let y=this._identifier(w,[48,126]);this._escHandlers[y]===void 0&&(this._escHandlers[y]=[]);let k=this._escHandlers[y];return k.push(S),{dispose:()=>{let I=k.indexOf(S);I!==-1&&k.splice(I,1)}}}clearEscHandler(w){this._escHandlers[this._identifier(w,[48,126])]&&delete this._escHandlers[this._identifier(w,[48,126])]}setEscHandlerFallback(w){this._escHandlerFb=w}setExecuteHandler(w,S){this._executeHandlers[w.charCodeAt(0)]=S}clearExecuteHandler(w){this._executeHandlers[w.charCodeAt(0)]&&delete this._executeHandlers[w.charCodeAt(0)]}setExecuteHandlerFallback(w){this._executeHandlerFb=w}registerCsiHandler(w,S){let y=this._identifier(w);this._csiHandlers[y]===void 0&&(this._csiHandlers[y]=[]);let k=this._csiHandlers[y];return k.push(S),{dispose:()=>{let I=k.indexOf(S);I!==-1&&k.splice(I,1)}}}clearCsiHandler(w){this._csiHandlers[this._identifier(w)]&&delete this._csiHandlers[this._identifier(w)]}setCsiHandlerFallback(w){this._csiHandlerFb=w}registerDcsHandler(w,S){return this._dcsParser.registerHandler(this._identifier(w),S)}clearDcsHandler(w){this._dcsParser.clearHandler(this._identifier(w))}setDcsHandlerFallback(w){this._dcsParser.setHandlerFallback(w)}registerOscHandler(w,S){return this._oscParser.registerHandler(w,S)}clearOscHandler(w){this._oscParser.clearHandler(w)}setOscHandlerFallback(w){this._oscParser.setHandlerFallback(w)}setErrorHandler(w){this._errorHandler=w}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(w,S,y,k,I){this._parseStack.state=w,this._parseStack.handlers=S,this._parseStack.handlerPos=y,this._parseStack.transition=k,this._parseStack.chunkPos=I}parse(w,S,y){let k,I=0,E=0,N=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,N=this._parseStack.chunkPos+1;else{if(y===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");let T=this._parseStack.handlers,R=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(y===!1&&R>-1){for(;R>=0&&(k=T[R](this._params),k!==!0);R--)if(k instanceof Promise)return this._parseStack.handlerPos=R,k}this._parseStack.handlers=[];break;case 4:if(y===!1&&R>-1){for(;R>=0&&(k=T[R](),k!==!0);R--)if(k instanceof Promise)return this._parseStack.handlerPos=R,k}this._parseStack.handlers=[];break;case 6:if(I=w[this._parseStack.chunkPos],k=this._dcsParser.unhook(I!==24&&I!==26,y),k)return k;I===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(I=w[this._parseStack.chunkPos],k=this._oscParser.end(I!==24&&I!==26,y),k)return k;I===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,N=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=15&this._parseStack.transition}for(let T=N;T<S;++T){switch(I=w[T],E=this._transitions.table[this.currentState<<8|(I<160?I:M)],E>>4){case 2:for(let G=T+1;;++G){if(G>=S||(I=w[G])<32||I>126&&I<M){this._printHandler(w,T,G),T=G-1;break}if(++G>=S||(I=w[G])<32||I>126&&I<M){this._printHandler(w,T,G),T=G-1;break}if(++G>=S||(I=w[G])<32||I>126&&I<M){this._printHandler(w,T,G),T=G-1;break}if(++G>=S||(I=w[G])<32||I>126&&I<M){this._printHandler(w,T,G),T=G-1;break}}break;case 3:this._executeHandlers[I]?this._executeHandlers[I]():this._executeHandlerFb(I),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:T,code:I,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:let R=this._csiHandlers[this._collect<<8|I],W=R?R.length-1:-1;for(;W>=0&&(k=R[W](this._params),k!==!0);W--)if(k instanceof Promise)return this._preserveStack(3,R,W,E,T),k;W<0&&this._csiHandlerFb(this._collect<<8|I,this._params),this.precedingJoinState=0;break;case 8:do switch(I){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(I-48)}while(++T<S&&(I=w[T])>47&&I<60);T--;break;case 9:this._collect<<=8,this._collect|=I;break;case 10:let pe=this._escHandlers[this._collect<<8|I],_e=pe?pe.length-1:-1;for(;_e>=0&&(k=pe[_e](),k!==!0);_e--)if(k instanceof Promise)return this._preserveStack(4,pe,_e,E,T),k;_e<0&&this._escHandlerFb(this._collect<<8|I),this.precedingJoinState=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|I,this._params);break;case 13:for(let G=T+1;;++G)if(G>=S||(I=w[G])===24||I===26||I===27||I>127&&I<M){this._dcsParser.put(w,T,G),T=G-1;break}break;case 14:if(k=this._dcsParser.unhook(I!==24&&I!==26),k)return this._preserveStack(6,[],0,E,T),k;I===27&&(E|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0;break;case 4:this._oscParser.start();break;case 5:for(let G=T+1;;G++)if(G>=S||(I=w[G])<32||I>127&&I<M){this._oscParser.put(w,T,G),T=G-1;break}break;case 6:if(k=this._oscParser.end(I!==24&&I!==26),k)return this._preserveStack(5,[],0,E,T),k;I===27&&(E|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&E}}}r.EscapeSequenceParser=C},6242:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.OscHandler=r.OscParser=void 0;let c=a(5770),m=a(482),p=[];r.OscParser=class{constructor(){this._state=0,this._active=p,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(h,g){this._handlers[h]===void 0&&(this._handlers[h]=[]);let M=this._handlers[h];return M.push(g),{dispose:()=>{let C=M.indexOf(g);C!==-1&&M.splice(C,1)}}}clearHandler(h){this._handlers[h]&&delete this._handlers[h]}setHandlerFallback(h){this._handlerFb=h}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=p}reset(){if(this._state===2)for(let h=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;h>=0;--h)this._active[h].end(!1);this._stack.paused=!1,this._active=p,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||p,this._active.length)for(let h=this._active.length-1;h>=0;h--)this._active[h].start();else this._handlerFb(this._id,"START")}_put(h,g,M){if(this._active.length)for(let C=this._active.length-1;C>=0;C--)this._active[C].put(h,g,M);else this._handlerFb(this._id,"PUT",(0,m.utf32ToString)(h,g,M))}start(){this.reset(),this._state=1}put(h,g,M){if(this._state!==3){if(this._state===1)for(;g<M;){let C=h[g++];if(C===59){this._state=2,this._start();break}if(C<48||57<C)return void(this._state=3);this._id===-1&&(this._id=0),this._id=10*this._id+C-48}this._state===2&&M-g>0&&this._put(h,g,M)}}end(h,g=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){let M=!1,C=this._active.length-1,_=!1;if(this._stack.paused&&(C=this._stack.loopPosition-1,M=g,_=this._stack.fallThrough,this._stack.paused=!1),!_&&M===!1){for(;C>=0&&(M=this._active[C].end(h),M!==!0);C--)if(M instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=C,this._stack.fallThrough=!1,M;C--}for(;C>=0;C--)if(M=this._active[C].end(!1),M instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=C,this._stack.fallThrough=!0,M}else this._handlerFb(this._id,"END",h);this._active=p,this._id=-1,this._state=0}}},r.OscHandler=class{constructor(h){this._handler=h,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(h,g,M){this._hitLimit||(this._data+=(0,m.utf32ToString)(h,g,M),this._data.length>c.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(h){let g=!1;if(this._hitLimit)g=!1;else if(h&&(g=this._handler(this._data),g instanceof Promise))return g.then(M=>(this._data="",this._hitLimit=!1,M));return this._data="",this._hitLimit=!1,g}}},8742:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.Params=void 0;let a=2147483647;class c{static fromArray(p){let h=new c;if(!p.length)return h;for(let g=Array.isArray(p[0])?1:0;g<p.length;++g){let M=p[g];if(Array.isArray(M))for(let C=0;C<M.length;++C)h.addSubParam(M[C]);else h.addParam(M)}return h}constructor(p=32,h=32){if(this.maxLength=p,this.maxSubParamsLength=h,h>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(p),this.length=0,this._subParams=new Int32Array(h),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(p),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){let p=new c(this.maxLength,this.maxSubParamsLength);return p.params.set(this.params),p.length=this.length,p._subParams.set(this._subParams),p._subParamsLength=this._subParamsLength,p._subParamsIdx.set(this._subParamsIdx),p._rejectDigits=this._rejectDigits,p._rejectSubDigits=this._rejectSubDigits,p._digitIsSub=this._digitIsSub,p}toArray(){let p=[];for(let h=0;h<this.length;++h){p.push(this.params[h]);let g=this._subParamsIdx[h]>>8,M=255&this._subParamsIdx[h];M-g>0&&p.push(Array.prototype.slice.call(this._subParams,g,M))}return p}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(p){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(p<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=p>a?a:p}}addSubParam(p){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(p<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=p>a?a:p,this._subParamsIdx[this.length-1]++}}hasSubParams(p){return(255&this._subParamsIdx[p])-(this._subParamsIdx[p]>>8)>0}getSubParams(p){let h=this._subParamsIdx[p]>>8,g=255&this._subParamsIdx[p];return g-h>0?this._subParams.subarray(h,g):null}getSubParamsAll(){let p={};for(let h=0;h<this.length;++h){let g=this._subParamsIdx[h]>>8,M=255&this._subParamsIdx[h];M-g>0&&(p[h]=this._subParams.slice(g,M))}return p}addDigit(p){let h;if(this._rejectDigits||!(h=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;let g=this._digitIsSub?this._subParams:this.params,M=g[h-1];g[h-1]=~M?Math.min(10*M+p,a):p}}r.Params=c},5741:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.AddonManager=void 0,r.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let a=this._addons.length-1;a>=0;a--)this._addons[a].instance.dispose()}loadAddon(a,c){let m={instance:c,dispose:c.dispose,isDisposed:!1};this._addons.push(m),c.dispose=()=>this._wrappedAddonDispose(m),c.activate(a)}_wrappedAddonDispose(a){if(a.isDisposed)return;let c=-1;for(let m=0;m<this._addons.length;m++)if(this._addons[m]===a){c=m;break}if(c===-1)throw new Error("Could not dispose an addon that has not been loaded");a.isDisposed=!0,a.dispose.apply(a.instance),this._addons.splice(c,1)}}},8771:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.BufferApiView=void 0;let c=a(3785),m=a(511);r.BufferApiView=class{constructor(p,h){this._buffer=p,this.type=h}init(p){return this._buffer=p,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(p){let h=this._buffer.lines.get(p);if(h)return new c.BufferLineApiView(h)}getNullCell(){return new m.CellData}}},3785:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.BufferLineApiView=void 0;let c=a(511);r.BufferLineApiView=class{constructor(m){this._line=m}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(m,p){if(!(m<0||m>=this._line.length))return p?(this._line.loadCell(m,p),p):this._line.loadCell(m,new c.CellData)}translateToString(m,p,h){return this._line.translateToString(m,p,h)}}},8285:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.BufferNamespaceApi=void 0;let c=a(8771),m=a(8460),p=a(844);class h extends p.Disposable{constructor(M){super(),this._core=M,this._onBufferChange=this.register(new m.EventEmitter),this.onBufferChange=this._onBufferChange.event,this._normal=new c.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new c.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate(()=>this._onBufferChange.fire(this.active))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}r.BufferNamespaceApi=h},7975:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ParserApi=void 0,r.ParserApi=class{constructor(a){this._core=a}registerCsiHandler(a,c){return this._core.registerCsiHandler(a,m=>c(m.toArray()))}addCsiHandler(a,c){return this.registerCsiHandler(a,c)}registerDcsHandler(a,c){return this._core.registerDcsHandler(a,(m,p)=>c(m,p.toArray()))}addDcsHandler(a,c){return this.registerDcsHandler(a,c)}registerEscHandler(a,c){return this._core.registerEscHandler(a,c)}addEscHandler(a,c){return this.registerEscHandler(a,c)}registerOscHandler(a,c){return this._core.registerOscHandler(a,c)}addOscHandler(a,c){return this.registerOscHandler(a,c)}}},7090:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.UnicodeApi=void 0,r.UnicodeApi=class{constructor(a){this._core=a}register(a){this._core.unicodeService.register(a)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(a){this._core.unicodeService.activeVersion=a}}},744:function(o,r,a){var c=this&&this.__decorate||function(_,w,S,y){var k,I=arguments.length,E=I<3?w:y===null?y=Object.getOwnPropertyDescriptor(w,S):y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")E=Reflect.decorate(_,w,S,y);else for(var N=_.length-1;N>=0;N--)(k=_[N])&&(E=(I<3?k(E):I>3?k(w,S,E):k(w,S))||E);return I>3&&E&&Object.defineProperty(w,S,E),E},m=this&&this.__param||function(_,w){return function(S,y){w(S,y,_)}};Object.defineProperty(r,"__esModule",{value:!0}),r.BufferService=r.MINIMUM_ROWS=r.MINIMUM_COLS=void 0;let p=a(8460),h=a(844),g=a(5295),M=a(2585);r.MINIMUM_COLS=2,r.MINIMUM_ROWS=1;let C=r.BufferService=class extends h.Disposable{get buffer(){return this.buffers.active}constructor(_){super(),this.isUserScrolling=!1,this._onResize=this.register(new p.EventEmitter),this.onResize=this._onResize.event,this._onScroll=this.register(new p.EventEmitter),this.onScroll=this._onScroll.event,this.cols=Math.max(_.rawOptions.cols||0,r.MINIMUM_COLS),this.rows=Math.max(_.rawOptions.rows||0,r.MINIMUM_ROWS),this.buffers=this.register(new g.BufferSet(_,this))}resize(_,w){this.cols=_,this.rows=w,this.buffers.resize(_,w),this._onResize.fire({cols:_,rows:w})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(_,w=!1){let S=this.buffer,y;y=this._cachedBlankLine,y&&y.length===this.cols&&y.getFg(0)===_.fg&&y.getBg(0)===_.bg||(y=S.getBlankLine(_,w),this._cachedBlankLine=y),y.isWrapped=w;let k=S.ybase+S.scrollTop,I=S.ybase+S.scrollBottom;if(S.scrollTop===0){let E=S.lines.isFull;I===S.lines.length-1?E?S.lines.recycle().copyFrom(y):S.lines.push(y.clone()):S.lines.splice(I+1,0,y.clone()),E?this.isUserScrolling&&(S.ydisp=Math.max(S.ydisp-1,0)):(S.ybase++,this.isUserScrolling||S.ydisp++)}else{let E=I-k+1;S.lines.shiftElements(k+1,E-1,-1),S.lines.set(I,y.clone())}this.isUserScrolling||(S.ydisp=S.ybase),this._onScroll.fire(S.ydisp)}scrollLines(_,w,S){let y=this.buffer;if(_<0){if(y.ydisp===0)return;this.isUserScrolling=!0}else _+y.ydisp>=y.ybase&&(this.isUserScrolling=!1);let k=y.ydisp;y.ydisp=Math.max(Math.min(y.ydisp+_,y.ybase),0),k!==y.ydisp&&(w||this._onScroll.fire(y.ydisp))}};r.BufferService=C=c([m(0,M.IOptionsService)],C)},7994:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.CharsetService=void 0,r.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(a){this.glevel=a,this.charset=this._charsets[a]}setgCharset(a,c){this._charsets[a]=c,this.glevel===a&&(this.charset=c)}}},1753:function(o,r,a){var c=this&&this.__decorate||function(y,k,I,E){var N,T=arguments.length,R=T<3?k:E===null?E=Object.getOwnPropertyDescriptor(k,I):E;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")R=Reflect.decorate(y,k,I,E);else for(var W=y.length-1;W>=0;W--)(N=y[W])&&(R=(T<3?N(R):T>3?N(k,I,R):N(k,I))||R);return T>3&&R&&Object.defineProperty(k,I,R),R},m=this&&this.__param||function(y,k){return function(I,E){k(I,E,y)}};Object.defineProperty(r,"__esModule",{value:!0}),r.CoreMouseService=void 0;let p=a(2585),h=a(8460),g=a(844),M={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:y=>y.button!==4&&y.action===1&&(y.ctrl=!1,y.alt=!1,y.shift=!1,!0)},VT200:{events:19,restrict:y=>y.action!==32},DRAG:{events:23,restrict:y=>y.action!==32||y.button!==3},ANY:{events:31,restrict:y=>!0}};function C(y,k){let I=(y.ctrl?16:0)|(y.shift?4:0)|(y.alt?8:0);return y.button===4?(I|=64,I|=y.action):(I|=3&y.button,4&y.button&&(I|=64),8&y.button&&(I|=128),y.action===32?I|=32:y.action!==0||k||(I|=3)),I}let _=String.fromCharCode,w={DEFAULT:y=>{let k=[C(y,!1)+32,y.col+32,y.row+32];return k[0]>255||k[1]>255||k[2]>255?"":`\x1B[M${_(k[0])}${_(k[1])}${_(k[2])}`},SGR:y=>{let k=y.action===0&&y.button!==4?"m":"M";return`\x1B[<${C(y,!0)};${y.col};${y.row}${k}`},SGR_PIXELS:y=>{let k=y.action===0&&y.button!==4?"m":"M";return`\x1B[<${C(y,!0)};${y.x};${y.y}${k}`}},S=r.CoreMouseService=class extends g.Disposable{constructor(y,k){super(),this._bufferService=y,this._coreService=k,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._lastEvent=null,this._onProtocolChange=this.register(new h.EventEmitter),this.onProtocolChange=this._onProtocolChange.event;for(let I of Object.keys(M))this.addProtocol(I,M[I]);for(let I of Object.keys(w))this.addEncoding(I,w[I]);this.reset()}addProtocol(y,k){this._protocols[y]=k}addEncoding(y,k){this._encodings[y]=k}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(y){if(!this._protocols[y])throw new Error(`unknown protocol "${y}"`);this._activeProtocol=y,this._onProtocolChange.fire(this._protocols[y].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(y){if(!this._encodings[y])throw new Error(`unknown encoding "${y}"`);this._activeEncoding=y}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null}triggerMouseEvent(y){if(y.col<0||y.col>=this._bufferService.cols||y.row<0||y.row>=this._bufferService.rows||y.button===4&&y.action===32||y.button===3&&y.action!==32||y.button!==4&&(y.action===2||y.action===3)||(y.col++,y.row++,y.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,y,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(y))return!1;let k=this._encodings[this._activeEncoding](y);return k&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(k):this._coreService.triggerDataEvent(k,!0)),this._lastEvent=y,!0}explainEvents(y){return{down:!!(1&y),up:!!(2&y),drag:!!(4&y),move:!!(8&y),wheel:!!(16&y)}}_equalEvents(y,k,I){if(I){if(y.x!==k.x||y.y!==k.y)return!1}else if(y.col!==k.col||y.row!==k.row)return!1;return y.button===k.button&&y.action===k.action&&y.ctrl===k.ctrl&&y.alt===k.alt&&y.shift===k.shift}};r.CoreMouseService=S=c([m(0,p.IBufferService),m(1,p.ICoreService)],S)},6975:function(o,r,a){var c=this&&this.__decorate||function(S,y,k,I){var E,N=arguments.length,T=N<3?y:I===null?I=Object.getOwnPropertyDescriptor(y,k):I;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(S,y,k,I);else for(var R=S.length-1;R>=0;R--)(E=S[R])&&(T=(N<3?E(T):N>3?E(y,k,T):E(y,k))||T);return N>3&&T&&Object.defineProperty(y,k,T),T},m=this&&this.__param||function(S,y){return function(k,I){y(k,I,S)}};Object.defineProperty(r,"__esModule",{value:!0}),r.CoreService=void 0;let p=a(1439),h=a(8460),g=a(844),M=a(2585),C=Object.freeze({insertMode:!1}),_=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,origin:!1,reverseWraparound:!1,sendFocus:!1,wraparound:!0}),w=r.CoreService=class extends g.Disposable{constructor(S,y,k){super(),this._bufferService=S,this._logService=y,this._optionsService=k,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this.register(new h.EventEmitter),this.onData=this._onData.event,this._onUserInput=this.register(new h.EventEmitter),this.onUserInput=this._onUserInput.event,this._onBinary=this.register(new h.EventEmitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this.register(new h.EventEmitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,p.clone)(C),this.decPrivateModes=(0,p.clone)(_)}reset(){this.modes=(0,p.clone)(C),this.decPrivateModes=(0,p.clone)(_)}triggerDataEvent(S,y=!1){if(this._optionsService.rawOptions.disableStdin)return;let k=this._bufferService.buffer;y&&this._optionsService.rawOptions.scrollOnUserInput&&k.ybase!==k.ydisp&&this._onRequestScrollToBottom.fire(),y&&this._onUserInput.fire(),this._logService.debug(`sending data "${S}"`,()=>S.split("").map(I=>I.charCodeAt(0))),this._onData.fire(S)}triggerBinaryEvent(S){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${S}"`,()=>S.split("").map(y=>y.charCodeAt(0))),this._onBinary.fire(S))}};r.CoreService=w=c([m(0,M.IBufferService),m(1,M.ILogService),m(2,M.IOptionsService)],w)},9074:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.DecorationService=void 0;let c=a(8055),m=a(8460),p=a(844),h=a(6106),g=0,M=0;class C extends p.Disposable{get decorations(){return this._decorations.values()}constructor(){super(),this._decorations=new h.SortedList(S=>S?.marker.line),this._onDecorationRegistered=this.register(new m.EventEmitter),this.onDecorationRegistered=this._onDecorationRegistered.event,this._onDecorationRemoved=this.register(new m.EventEmitter),this.onDecorationRemoved=this._onDecorationRemoved.event,this.register((0,p.toDisposable)(()=>this.reset()))}registerDecoration(S){if(S.marker.isDisposed)return;let y=new _(S);if(y){let k=y.marker.onDispose(()=>y.dispose());y.onDispose(()=>{y&&(this._decorations.delete(y)&&this._onDecorationRemoved.fire(y),k.dispose())}),this._decorations.insert(y),this._onDecorationRegistered.fire(y)}return y}reset(){for(let S of this._decorations.values())S.dispose();this._decorations.clear()}*getDecorationsAtCell(S,y,k){let I=0,E=0;for(let N of this._decorations.getKeyIterator(y))I=N.options.x??0,E=I+(N.options.width??1),S>=I&&S<E&&(!k||(N.options.layer??"bottom")===k)&&(yield N)}forEachDecorationAtCell(S,y,k,I){this._decorations.forEachByKey(y,E=>{g=E.options.x??0,M=g+(E.options.width??1),S>=g&&S<M&&(!k||(E.options.layer??"bottom")===k)&&I(E)})}}r.DecorationService=C;class _ extends p.Disposable{get isDisposed(){return this._isDisposed}get backgroundColorRGB(){return this._cachedBg===null&&(this.options.backgroundColor?this._cachedBg=c.css.toColor(this.options.backgroundColor):this._cachedBg=void 0),this._cachedBg}get foregroundColorRGB(){return this._cachedFg===null&&(this.options.foregroundColor?this._cachedFg=c.css.toColor(this.options.foregroundColor):this._cachedFg=void 0),this._cachedFg}constructor(S){super(),this.options=S,this.onRenderEmitter=this.register(new m.EventEmitter),this.onRender=this.onRenderEmitter.event,this._onDispose=this.register(new m.EventEmitter),this.onDispose=this._onDispose.event,this._cachedBg=null,this._cachedFg=null,this.marker=S.marker,this.options.overviewRulerOptions&&!this.options.overviewRulerOptions.position&&(this.options.overviewRulerOptions.position="full")}dispose(){this._onDispose.fire(),super.dispose()}}},4348:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.InstantiationService=r.ServiceCollection=void 0;let c=a(2585),m=a(8343);class p{constructor(...g){this._entries=new Map;for(let[M,C]of g)this.set(M,C)}set(g,M){let C=this._entries.get(g);return this._entries.set(g,M),C}forEach(g){for(let[M,C]of this._entries.entries())g(M,C)}has(g){return this._entries.has(g)}get(g){return this._entries.get(g)}}r.ServiceCollection=p,r.InstantiationService=class{constructor(){this._services=new p,this._services.set(c.IInstantiationService,this)}setService(h,g){this._services.set(h,g)}getService(h){return this._services.get(h)}createInstance(h,...g){let M=(0,m.getServiceDependencies)(h).sort((w,S)=>w.index-S.index),C=[];for(let w of M){let S=this._services.get(w.id);if(!S)throw new Error(`[createInstance] ${h.name} depends on UNKNOWN service ${w.id}.`);C.push(S)}let _=M.length>0?M[0].index:g.length;if(g.length!==_)throw new Error(`[createInstance] First service dependency of ${h.name} at position ${_+1} conflicts with ${g.length} static arguments`);return new h(...g,...C)}}},7866:function(o,r,a){var c=this&&this.__decorate||function(_,w,S,y){var k,I=arguments.length,E=I<3?w:y===null?y=Object.getOwnPropertyDescriptor(w,S):y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")E=Reflect.decorate(_,w,S,y);else for(var N=_.length-1;N>=0;N--)(k=_[N])&&(E=(I<3?k(E):I>3?k(w,S,E):k(w,S))||E);return I>3&&E&&Object.defineProperty(w,S,E),E},m=this&&this.__param||function(_,w){return function(S,y){w(S,y,_)}};Object.defineProperty(r,"__esModule",{value:!0}),r.traceCall=r.setTraceLogger=r.LogService=void 0;let p=a(844),h=a(2585),g={trace:h.LogLevelEnum.TRACE,debug:h.LogLevelEnum.DEBUG,info:h.LogLevelEnum.INFO,warn:h.LogLevelEnum.WARN,error:h.LogLevelEnum.ERROR,off:h.LogLevelEnum.OFF},M,C=r.LogService=class extends p.Disposable{get logLevel(){return this._logLevel}constructor(_){super(),this._optionsService=_,this._logLevel=h.LogLevelEnum.OFF,this._updateLogLevel(),this.register(this._optionsService.onSpecificOptionChange("logLevel",()=>this._updateLogLevel())),M=this}_updateLogLevel(){this._logLevel=g[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(_){for(let w=0;w<_.length;w++)typeof _[w]=="function"&&(_[w]=_[w]())}_log(_,w,S){this._evalLazyOptionalParams(S),_.call(console,(this._optionsService.options.logger?"":"xterm.js: ")+w,...S)}trace(_,...w){this._logLevel<=h.LogLevelEnum.TRACE&&this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger)??console.log,_,w)}debug(_,...w){this._logLevel<=h.LogLevelEnum.DEBUG&&this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger)??console.log,_,w)}info(_,...w){this._logLevel<=h.LogLevelEnum.INFO&&this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger)??console.info,_,w)}warn(_,...w){this._logLevel<=h.LogLevelEnum.WARN&&this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger)??console.warn,_,w)}error(_,...w){this._logLevel<=h.LogLevelEnum.ERROR&&this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger)??console.error,_,w)}};r.LogService=C=c([m(0,h.IOptionsService)],C),r.setTraceLogger=function(_){M=_},r.traceCall=function(_,w,S){if(typeof S.value!="function")throw new Error("not supported");let y=S.value;S.value=function(...k){if(M.logLevel!==h.LogLevelEnum.TRACE)return y.apply(this,k);M.trace(`GlyphRenderer#${y.name}(${k.map(E=>JSON.stringify(E)).join(", ")})`);let I=y.apply(this,k);return M.trace(`GlyphRenderer#${y.name} return`,I),I}}},7302:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.OptionsService=r.DEFAULT_OPTIONS=void 0;let c=a(8460),m=a(844),p=a(6114);r.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,cursorInactiveStyle:"outline",customGlyphs:!0,drawBoldTextInBrightColors:!0,documentOverride:null,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"courier-new, courier, monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",logger:null,scrollback:1e3,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},rescaleOverlappingGlyphs:!1,rightClickSelectsWord:p.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRulerWidth:0};let h=["normal","bold","100","200","300","400","500","600","700","800","900"];class g extends m.Disposable{constructor(C){super(),this._onOptionChange=this.register(new c.EventEmitter),this.onOptionChange=this._onOptionChange.event;let _=H({},r.DEFAULT_OPTIONS);for(let w in C)if(w in _)try{let S=C[w];_[w]=this._sanitizeAndValidateOption(w,S)}catch(S){console.error(S)}this.rawOptions=_,this.options=H({},_),this._setupOptions(),this.register((0,m.toDisposable)(()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null}))}onSpecificOptionChange(C,_){return this.onOptionChange(w=>{w===C&&_(this.rawOptions[C])})}onMultipleOptionChange(C,_){return this.onOptionChange(w=>{C.indexOf(w)!==-1&&_()})}_setupOptions(){let C=w=>{if(!(w in r.DEFAULT_OPTIONS))throw new Error(`No option with key "${w}"`);return this.rawOptions[w]},_=(w,S)=>{if(!(w in r.DEFAULT_OPTIONS))throw new Error(`No option with key "${w}"`);S=this._sanitizeAndValidateOption(w,S),this.rawOptions[w]!==S&&(this.rawOptions[w]=S,this._onOptionChange.fire(w))};for(let w in this.rawOptions){let S={get:C.bind(this,w),set:_.bind(this,w)};Object.defineProperty(this.options,w,S)}}_sanitizeAndValidateOption(C,_){switch(C){case"cursorStyle":if(_||(_=r.DEFAULT_OPTIONS[C]),!(function(w){return w==="block"||w==="underline"||w==="bar"})(_))throw new Error(`"${_}" is not a valid value for ${C}`);break;case"wordSeparator":_||(_=r.DEFAULT_OPTIONS[C]);break;case"fontWeight":case"fontWeightBold":if(typeof _=="number"&&1<=_&&_<=1e3)break;_=h.includes(_)?_:r.DEFAULT_OPTIONS[C];break;case"cursorWidth":_=Math.floor(_);case"lineHeight":case"tabStopWidth":if(_<1)throw new Error(`${C} cannot be less than 1, value: ${_}`);break;case"minimumContrastRatio":_=Math.max(1,Math.min(21,Math.round(10*_)/10));break;case"scrollback":if((_=Math.min(_,4294967295))<0)throw new Error(`${C} cannot be less than 0, value: ${_}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(_<=0)throw new Error(`${C} cannot be less than or equal to 0, value: ${_}`);break;case"rows":case"cols":if(!_&&_!==0)throw new Error(`${C} must be numeric, value: ${_}`);break;case"windowsPty":_=_??{}}return _}}r.OptionsService=g},2660:function(o,r,a){var c=this&&this.__decorate||function(g,M,C,_){var w,S=arguments.length,y=S<3?M:_===null?_=Object.getOwnPropertyDescriptor(M,C):_;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")y=Reflect.decorate(g,M,C,_);else for(var k=g.length-1;k>=0;k--)(w=g[k])&&(y=(S<3?w(y):S>3?w(M,C,y):w(M,C))||y);return S>3&&y&&Object.defineProperty(M,C,y),y},m=this&&this.__param||function(g,M){return function(C,_){M(C,_,g)}};Object.defineProperty(r,"__esModule",{value:!0}),r.OscLinkService=void 0;let p=a(2585),h=r.OscLinkService=class{constructor(g){this._bufferService=g,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(g){let M=this._bufferService.buffer;if(g.id===void 0){let k=M.addMarker(M.ybase+M.y),I={data:g,id:this._nextId++,lines:[k]};return k.onDispose(()=>this._removeMarkerFromLink(I,k)),this._dataByLinkId.set(I.id,I),I.id}let C=g,_=this._getEntryIdKey(C),w=this._entriesWithId.get(_);if(w)return this.addLineToLink(w.id,M.ybase+M.y),w.id;let S=M.addMarker(M.ybase+M.y),y={id:this._nextId++,key:this._getEntryIdKey(C),data:C,lines:[S]};return S.onDispose(()=>this._removeMarkerFromLink(y,S)),this._entriesWithId.set(y.key,y),this._dataByLinkId.set(y.id,y),y.id}addLineToLink(g,M){let C=this._dataByLinkId.get(g);if(C&&C.lines.every(_=>_.line!==M)){let _=this._bufferService.buffer.addMarker(M);C.lines.push(_),_.onDispose(()=>this._removeMarkerFromLink(C,_))}}getLinkData(g){return this._dataByLinkId.get(g)?.data}_getEntryIdKey(g){return`${g.id};;${g.uri}`}_removeMarkerFromLink(g,M){let C=g.lines.indexOf(M);C!==-1&&(g.lines.splice(C,1),g.lines.length===0&&(g.data.id!==void 0&&this._entriesWithId.delete(g.key),this._dataByLinkId.delete(g.id)))}};r.OscLinkService=h=c([m(0,p.IBufferService)],h)},8343:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.createDecorator=r.getServiceDependencies=r.serviceRegistry=void 0;let a="di$target",c="di$dependencies";r.serviceRegistry=new Map,r.getServiceDependencies=function(m){return m[c]||[]},r.createDecorator=function(m){if(r.serviceRegistry.has(m))return r.serviceRegistry.get(m);let p=function(h,g,M){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");(function(C,_,w){_[a]===_?_[c].push({id:C,index:w}):(_[c]=[{id:C,index:w}],_[a]=_)})(p,h,M)};return p.toString=()=>m,r.serviceRegistry.set(m,p),p}},2585:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.IDecorationService=r.IUnicodeService=r.IOscLinkService=r.IOptionsService=r.ILogService=r.LogLevelEnum=r.IInstantiationService=r.ICharsetService=r.ICoreService=r.ICoreMouseService=r.IBufferService=void 0;let c=a(8343);var m;r.IBufferService=(0,c.createDecorator)("BufferService"),r.ICoreMouseService=(0,c.createDecorator)("CoreMouseService"),r.ICoreService=(0,c.createDecorator)("CoreService"),r.ICharsetService=(0,c.createDecorator)("CharsetService"),r.IInstantiationService=(0,c.createDecorator)("InstantiationService"),(function(p){p[p.TRACE=0]="TRACE",p[p.DEBUG=1]="DEBUG",p[p.INFO=2]="INFO",p[p.WARN=3]="WARN",p[p.ERROR=4]="ERROR",p[p.OFF=5]="OFF"})(m||(r.LogLevelEnum=m={})),r.ILogService=(0,c.createDecorator)("LogService"),r.IOptionsService=(0,c.createDecorator)("OptionsService"),r.IOscLinkService=(0,c.createDecorator)("OscLinkService"),r.IUnicodeService=(0,c.createDecorator)("UnicodeService"),r.IDecorationService=(0,c.createDecorator)("DecorationService")},1480:(o,r,a)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.UnicodeService=void 0;let c=a(8460),m=a(225);class p{static extractShouldJoin(g){return(1&g)!=0}static extractWidth(g){return g>>1&3}static extractCharKind(g){return g>>3}static createPropertyValue(g,M,C=!1){return(16777215&g)<<3|(3&M)<<1|(C?1:0)}constructor(){this._providers=Object.create(null),this._active="",this._onChange=new c.EventEmitter,this.onChange=this._onChange.event;let g=new m.UnicodeV6;this.register(g),this._active=g.version,this._activeProvider=g}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(g){if(!this._providers[g])throw new Error(`unknown Unicode version "${g}"`);this._active=g,this._activeProvider=this._providers[g],this._onChange.fire(g)}register(g){this._providers[g.version]=g}wcwidth(g){return this._activeProvider.wcwidth(g)}getStringCellWidth(g){let M=0,C=0,_=g.length;for(let w=0;w<_;++w){let S=g.charCodeAt(w);if(55296<=S&&S<=56319){if(++w>=_)return M+this.wcwidth(S);let I=g.charCodeAt(w);56320<=I&&I<=57343?S=1024*(S-55296)+I-56320+65536:M+=this.wcwidth(I)}let y=this.charProperties(S,C),k=p.extractWidth(y);p.extractShouldJoin(y)&&(k-=p.extractWidth(C)),M+=k,C=y}return M}charProperties(g,M){return this._activeProvider.charProperties(g,M)}}r.UnicodeService=p}},i={};function e(o){var r=i[o];if(r!==void 0)return r.exports;var a=i[o]={exports:{}};return t[o].call(a.exports,a,a.exports,e),a.exports}var n={};return(()=>{var o=n;Object.defineProperty(o,"__esModule",{value:!0}),o.Terminal=void 0;let r=e(9042),a=e(3236),c=e(844),m=e(5741),p=e(8285),h=e(7975),g=e(7090),M=["cols","rows"];class C extends c.Disposable{constructor(w){super(),this._core=this.register(new a.Terminal(w)),this._addonManager=this.register(new m.AddonManager),this._publicOptions=H({},this._core.options);let S=k=>this._core.options[k],y=(k,I)=>{this._checkReadonlyOptions(k),this._core.options[k]=I};for(let k in this._core.options){let I={get:S.bind(this,k),set:y.bind(this,k)};Object.defineProperty(this._publicOptions,k,I)}}_checkReadonlyOptions(w){if(M.includes(w))throw new Error(`Option "${w}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.rawOptions.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onKey(){return this._core.onKey}get onLineFeed(){return this._core.onLineFeed}get onRender(){return this._core.onRender}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onSelectionChange(){return this._core.onSelectionChange}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get element(){return this._core.element}get parser(){return this._parser||(this._parser=new h.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new g.UnicodeApi(this._core)}get textarea(){return this._core.textarea}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._buffer||(this._buffer=this.register(new p.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){let w=this._core.coreService.decPrivateModes,S="none";switch(this._core.coreMouseService.activeProtocol){case"X10":S="x10";break;case"VT200":S="vt200";break;case"DRAG":S="drag";break;case"ANY":S="any"}return{applicationCursorKeysMode:w.applicationCursorKeys,applicationKeypadMode:w.applicationKeypad,bracketedPasteMode:w.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:S,originMode:w.origin,reverseWraparoundMode:w.reverseWraparound,sendFocusMode:w.sendFocus,wraparoundMode:w.wraparound}}get options(){return this._publicOptions}set options(w){for(let S in w)this._publicOptions[S]=w[S]}blur(){this._core.blur()}focus(){this._core.focus()}input(w,S=!0){this._core.input(w,S)}resize(w,S){this._verifyIntegers(w,S),this._core.resize(w,S)}open(w){this._core.open(w)}attachCustomKeyEventHandler(w){this._core.attachCustomKeyEventHandler(w)}attachCustomWheelEventHandler(w){this._core.attachCustomWheelEventHandler(w)}registerLinkProvider(w){return this._core.registerLinkProvider(w)}registerCharacterJoiner(w){return this._checkProposedApi(),this._core.registerCharacterJoiner(w)}deregisterCharacterJoiner(w){this._checkProposedApi(),this._core.deregisterCharacterJoiner(w)}registerMarker(w=0){return this._verifyIntegers(w),this._core.registerMarker(w)}registerDecoration(w){return this._checkProposedApi(),this._verifyPositiveIntegers(w.x??0,w.width??0,w.height??0),this._core.registerDecoration(w)}hasSelection(){return this._core.hasSelection()}select(w,S,y){this._verifyIntegers(w,S,y),this._core.select(w,S,y)}getSelection(){return this._core.getSelection()}getSelectionPosition(){return this._core.getSelectionPosition()}clearSelection(){this._core.clearSelection()}selectAll(){this._core.selectAll()}selectLines(w,S){this._verifyIntegers(w,S),this._core.selectLines(w,S)}dispose(){super.dispose()}scrollLines(w){this._verifyIntegers(w),this._core.scrollLines(w)}scrollPages(w){this._verifyIntegers(w),this._core.scrollPages(w)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(w){this._verifyIntegers(w),this._core.scrollToLine(w)}clear(){this._core.clear()}write(w,S){this._core.write(w,S)}writeln(w,S){this._core.write(w),this._core.write(`\r
|
||
`,S)}paste(w){this._core.paste(w)}refresh(w,S){this._verifyIntegers(w,S),this._core.refresh(w,S)}reset(){this._core.reset()}clearTextureAtlas(){this._core.clearTextureAtlas()}loadAddon(w){this._addonManager.loadAddon(this,w)}static get strings(){return r}_verifyIntegers(...w){for(let S of w)if(S===1/0||isNaN(S)||S%1!=0)throw new Error("This API only accepts integers")}_verifyPositiveIntegers(...w){for(let S of w)if(S&&(S===1/0||isNaN(S)||S%1!=0||S<0))throw new Error("This API only accepts positive integers")}}o.Terminal=C})(),n})())});var ZN=Is((Vk,KN)=>{(function(t,i){typeof Vk=="object"&&typeof KN=="object"?KN.exports=i():typeof define=="function"&&define.amd?define([],i):typeof Vk=="object"?Vk.AttachAddon=i():t.AttachAddon=i()})(self,()=>(()=>{"use strict";var t={};return(()=>{var i=t;function e(n,o,r){return n.addEventListener(o,r),{dispose:()=>{r&&n.removeEventListener(o,r)}}}Object.defineProperty(i,"__esModule",{value:!0}),i.AttachAddon=void 0,i.AttachAddon=class{constructor(n,o){this._disposables=[],this._socket=n,this._socket.binaryType="arraybuffer",this._bidirectional=!(o&&o.bidirectional===!1)}activate(n){this._disposables.push(e(this._socket,"message",o=>{let r=o.data;n.write(typeof r=="string"?r:new Uint8Array(r))})),this._bidirectional&&(this._disposables.push(n.onData(o=>this._sendData(o))),this._disposables.push(n.onBinary(o=>this._sendBinary(o)))),this._disposables.push(e(this._socket,"close",()=>this.dispose())),this._disposables.push(e(this._socket,"error",()=>this.dispose()))}dispose(){for(let n of this._disposables)n.dispose()}_sendData(n){this._checkOpenSocket()&&this._socket.send(n)}_sendBinary(n){if(!this._checkOpenSocket())return;let o=new Uint8Array(n.length);for(let r=0;r<n.length;++r)o[r]=255&n.charCodeAt(r);this._socket.send(o)}_checkOpenSocket(){switch(this._socket.readyState){case WebSocket.OPEN:return!0;case WebSocket.CONNECTING:throw new Error("Attach addon was loaded before socket was open");case WebSocket.CLOSING:return console.warn("Attach addon socket is closing"),!1;case WebSocket.CLOSED:throw new Error("Attach addon socket is closed");default:throw new Error("Unexpected socket state")}}}})(),t})())});var e5=Is((zk,JN)=>{(function(t,i){typeof zk=="object"&&typeof JN=="object"?JN.exports=i():typeof define=="function"&&define.amd?define([],i):typeof zk=="object"?zk.FitAddon=i():t.FitAddon=i()})(self,()=>(()=>{"use strict";var t={};return(()=>{var i=t;Object.defineProperty(i,"__esModule",{value:!0}),i.FitAddon=void 0,i.FitAddon=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let n=this._terminal._core;this._terminal.rows===e.rows&&this._terminal.cols===e.cols||(n._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core,n=e._renderService.dimensions;if(n.css.cell.width===0||n.css.cell.height===0)return;let o=this._terminal.options.scrollback===0?0:e.viewport.scrollBarWidth,r=window.getComputedStyle(this._terminal.element.parentElement),a=parseInt(r.getPropertyValue("height")),c=Math.max(0,parseInt(r.getPropertyValue("width"))),m=window.getComputedStyle(this._terminal.element),p=a-(parseInt(m.getPropertyValue("padding-top"))+parseInt(m.getPropertyValue("padding-bottom"))),h=c-(parseInt(m.getPropertyValue("padding-right"))+parseInt(m.getPropertyValue("padding-left")))-o;return{cols:Math.max(2,Math.floor(h/n.css.cell.width)),rows:Math.max(1,Math.floor(p/n.css.cell.height))}}}})(),t})())});var RR=new RegExp(`(\\:not\\()|(([\\.\\#]?)[-\\w]+)|(?:\\[([-.\\w*\\\\$]+)(?:=(["']?)([^\\]"']*)\\5)?\\])|(\\))|(\\s*,\\s*)`,"g"),of=class t{element=null;classNames=[];attrs=[];notSelectors=[];static parse(i){let e=[],n=(m,p)=>{p.notSelectors.length>0&&!p.element&&p.classNames.length==0&&p.attrs.length==0&&(p.element="*"),m.push(p)},o=new t,r,a=o,c=!1;for(RR.lastIndex=0;r=RR.exec(i);){if(r[1]){if(c)throw new Error("Nesting :not in a selector is not allowed");c=!0,a=new t,o.notSelectors.push(a)}let m=r[2];if(m){let h=r[3];h==="#"?a.addAttribute("id",m.slice(1)):h==="."?a.addClassName(m.slice(1)):a.setElement(m)}let p=r[4];if(p&&a.addAttribute(a.unescapeAttribute(p),r[6]),r[7]&&(c=!1,a=o),r[8]){if(c)throw new Error("Multiple selectors in :not are not supported");n(e,o),o=a=new t}}return n(e,o),e}unescapeAttribute(i){let e="",n=!1;for(let o=0;o<i.length;o++){let r=i.charAt(o);if(r==="\\"){n=!0;continue}if(r==="$"&&!n)throw new Error(`Error in attribute selector "${i}". Unescaped "$" is not supported. Please escape with "\\$".`);n=!1,e+=r}return e}escapeAttribute(i){return i.replace(/\\/g,"\\\\").replace(/\$/g,"\\$")}isElementSelector(){return this.hasElementSelector()&&this.classNames.length==0&&this.attrs.length==0&&this.notSelectors.length===0}hasElementSelector(){return!!this.element}setElement(i=null){this.element=i}getAttrs(){let i=[];return this.classNames.length>0&&i.push("class",this.classNames.join(" ")),i.concat(this.attrs)}addAttribute(i,e=""){this.attrs.push(i,e&&e.toLowerCase()||"")}addClassName(i){this.classNames.push(i.toLowerCase())}toString(){let i=this.element||"";if(this.classNames&&this.classNames.forEach(e=>i+=`.${e}`),this.attrs)for(let e=0;e<this.attrs.length;e+=2){let n=this.escapeAttribute(this.attrs[e]),o=this.attrs[e+1];i+=`[${n}${o?"="+o:""}]`}return this.notSelectors.forEach(e=>i+=`:not(${e})`),i}},hx=class t{static createNotMatcher(i){let e=new t;return e.addSelectables(i,null),e}_elementMap=new Map;_elementPartialMap=new Map;_classMap=new Map;_classPartialMap=new Map;_attrValueMap=new Map;_attrValuePartialMap=new Map;_listContexts=[];addSelectables(i,e){let n=null;i.length>1&&(n=new YE(i),this._listContexts.push(n));for(let o=0;o<i.length;o++)this._addSelectable(i[o],e,n)}_addSelectable(i,e,n){let o=this,r=i.element,a=i.classNames,c=i.attrs,m=new KE(i,e,n);if(r&&(c.length===0&&a.length===0?this._addTerminal(o._elementMap,r,m):o=this._addPartial(o._elementPartialMap,r)),a)for(let p=0;p<a.length;p++){let h=c.length===0&&p===a.length-1,g=a[p];h?this._addTerminal(o._classMap,g,m):o=this._addPartial(o._classPartialMap,g)}if(c)for(let p=0;p<c.length;p+=2){let h=p===c.length-2,g=c[p],M=c[p+1];if(h){let C=o._attrValueMap,_=C.get(g);_||(_=new Map,C.set(g,_)),this._addTerminal(_,M,m)}else{let C=o._attrValuePartialMap,_=C.get(g);_||(_=new Map,C.set(g,_)),o=this._addPartial(_,M)}}}_addTerminal(i,e,n){let o=i.get(e);o||(o=[],i.set(e,o)),o.push(n)}_addPartial(i,e){let n=i.get(e);return n||(n=new t,i.set(e,n)),n}match(i,e){let n=!1,o=i.element,r=i.classNames,a=i.attrs;for(let c=0;c<this._listContexts.length;c++)this._listContexts[c].alreadyMatched=!1;if(n=this._matchTerminal(this._elementMap,o,i,e)||n,n=this._matchPartial(this._elementPartialMap,o,i,e)||n,r)for(let c=0;c<r.length;c++){let m=r[c];n=this._matchTerminal(this._classMap,m,i,e)||n,n=this._matchPartial(this._classPartialMap,m,i,e)||n}if(a)for(let c=0;c<a.length;c+=2){let m=a[c],p=a[c+1],h=this._attrValueMap.get(m);p&&(n=this._matchTerminal(h,"",i,e)||n),n=this._matchTerminal(h,p,i,e)||n;let g=this._attrValuePartialMap.get(m);p&&(n=this._matchPartial(g,"",i,e)||n),n=this._matchPartial(g,p,i,e)||n}return n}_matchTerminal(i,e,n,o){if(!i||typeof e!="string")return!1;let r=i.get(e)||[],a=i.get("*");if(a&&(r=r.concat(a)),r.length===0)return!1;let c,m=!1;for(let p=0;p<r.length;p++)c=r[p],m=c.finalize(n,o)||m;return m}_matchPartial(i,e,n,o){if(!i||typeof e!="string")return!1;let r=i.get(e);return r?r.match(n,o):!1}},YE=class{selectors;alreadyMatched=!1;constructor(i){this.selectors=i}},KE=class{selector;cbContext;listContext;notSelectors;constructor(i,e,n){this.selector=i,this.cbContext=e,this.listContext=n,this.notSelectors=i.notSelectors}finalize(i,e){let n=!0;return this.notSelectors.length>0&&(!this.listContext||!this.listContext.alreadyMatched)&&(n=!hx.createNotMatcher(this.notSelectors).match(i,null)),n&&e&&(!this.listContext||!this.listContext.alreadyMatched)&&(this.listContext&&(this.listContext.alreadyMatched=!0),e(this.selector,this.cbContext)),n}},fx=class{registry;constructor(i){this.registry=i}match(i){return this.registry.has(i)?this.registry.get(i):[]}};var iu=(function(t){return t[t.Emulated=0]="Emulated",t[t.None=2]="None",t[t.ShadowDom=3]="ShadowDom",t[t.ExperimentalIsolatedShadowDom=4]="ExperimentalIsolatedShadowDom",t})(iu||{}),kP=(function(t){return t[t.OnPush=0]="OnPush",t[t.Default=1]="Default",t[t.Eager=1]="Eager",t})(kP||{}),t0=(function(t){return t[t.None=0]="None",t[t.SignalBased=1]="SignalBased",t[t.HasDecoratorInputTransform=2]="HasDecoratorInputTransform",t})(t0||{}),FR={name:"custom-elements"},LR={name:"no-errors-schema"};var uo=(function(t){return t[t.NONE=0]="NONE",t[t.HTML=1]="HTML",t[t.STYLE=2]="STYLE",t[t.SCRIPT=3]="SCRIPT",t[t.URL=4]="URL",t[t.RESOURCE_URL=5]="RESOURCE_URL",t[t.ATTRIBUTE_NO_BINDING=6]="ATTRIBUTE_NO_BINDING",t})(uo||{});function qG(t){let i=t.classNames&&t.classNames.length?[8,...t.classNames]:[];return[t.element&&t.element!=="*"?t.element:"",...t.attrs,...i]}function XG(t){let i=t.classNames&&t.classNames.length?[8,...t.classNames]:[];return t.element?[5,t.element,...t.attrs,...i]:t.attrs.length?[3,...t.attrs,...i]:t.classNames&&t.classNames.length?[9,...t.classNames]:[]}function QG(t){let i=qG(t),e=t.notSelectors&&t.notSelectors.length?t.notSelectors.map(n=>XG(n)):[];return i.concat(...e)}function TP(t){return t?of.parse(t).map(QG):[]}var Td=(function(t){return t[t.Directive=0]="Directive",t[t.Component=1]="Component",t[t.Injectable=2]="Injectable",t[t.Pipe=3]="Pipe",t[t.NgModule=4]="NgModule",t})(Td||{});var gx;function YG(t){return eW(JG(t.nodes).join("")+`[${t.meaning}]`)}function KG(t){return t.id||P6(t)}function P6(t){let i=new ZE,e=t.nodes.map(n=>n.visit(i,null));return I6(e.join(""),t.meaning)}var _x=class{visitText(i,e){return i.value}visitContainer(i,e){return`[${i.children.map(n=>n.visit(this)).join(", ")}]`}visitIcu(i,e){let n=Object.keys(i.cases).map(o=>`${o} {${i.cases[o].visit(this)}}`);return`{${i.expression}, ${i.type}, ${n.join(", ")}}`}visitTagPlaceholder(i,e){return i.isVoid?`<ph tag name="${i.startName}"/>`:`<ph tag name="${i.startName}">${i.children.map(n=>n.visit(this)).join(", ")}</ph name="${i.closeName}">`}visitPlaceholder(i,e){return i.value?`<ph name="${i.name}">${i.value}</ph>`:`<ph name="${i.name}"/>`}visitIcuPlaceholder(i,e){return`<ph icu name="${i.name}">${i.value.visit(this)}</ph>`}visitBlockPlaceholder(i,e){return`<ph block name="${i.startName}">${i.children.map(n=>n.visit(this)).join(", ")}</ph name="${i.closeName}">`}},ZG=new _x;function JG(t){return t.map(i=>i.visit(ZG,null))}var ZE=class extends _x{visitIcu(i){let e=Object.keys(i.cases).map(n=>`${n} {${i.cases[n].visit(this)}}`);return`{${i.type}, ${e.join(", ")}}`}};function eW(t){gx??=new TextEncoder;let i=[...gx.encode(t)],e=iW(i,EP.Big),n=i.length*8,o=new Uint32Array(80),r=1732584193,a=4023233417,c=2562383102,m=271733878,p=3285377520;e[n>>5]|=128<<24-n%32,e[(n+64>>9<<4)+15]=n;for(let h=0;h<e.length;h+=16){let g=r,M=a,C=c,_=m,w=p;for(let S=0;S<80;S++){S<16?o[S]=e[h+S]:o[S]=EE(o[S-3]^o[S-8]^o[S-14]^o[S-16],1);let y=tW(S,a,c,m),k=y[0],I=y[1],E=[EE(r,5),k,p,I,o[S]].reduce(zh);p=m,m=c,c=EE(a,30),a=r,r=E}r=zh(r,g),a=zh(a,M),c=zh(c,C),m=zh(m,_),p=zh(p,w)}return G_(r)+G_(a)+G_(c)+G_(m)+G_(p)}function G_(t){return(t>>>0).toString(16).padStart(8,"0")}function tW(t,i,e,n){return t<20?[i&e|~i&n,1518500249]:t<40?[i^e^n,1859775393]:t<60?[i&e|i&n|e&n,2400959708]:[i^e^n,3395469782]}function BR(t){gx??=new TextEncoder;let i=gx.encode(t),e=new DataView(i.buffer,i.byteOffset,i.byteLength),n=VR(e,i.length,0),o=VR(e,i.length,102072);return n==0&&(o==0||o==1)&&(n=n^319790063,o=o^-1801410264),BigInt.asUintN(32,BigInt(n))<<BigInt(32)|BigInt.asUintN(32,BigInt(o))}function I6(t,i=""){let e=BR(t);return i&&(e=BigInt.asUintN(64,e<<BigInt(1))|e>>BigInt(63)&BigInt(1),e+=BR(i)),BigInt.asUintN(63,e).toString()}function VR(t,i,e){let n=2654435769,o=2654435769,r=0,a=i-12;for(;r<=a;r+=12){n+=t.getUint32(r,!0),o+=t.getUint32(r+4,!0),e+=t.getUint32(r+8,!0);let m=zR(n,o,e);n=m[0],o=m[1],e=m[2]}let c=i-r;return e+=i,c>=4?(n+=t.getUint32(r,!0),r+=4,c>=8?(o+=t.getUint32(r,!0),r+=4,c>=9&&(e+=t.getUint8(r++)<<8),c>=10&&(e+=t.getUint8(r++)<<16),c===11&&(e+=t.getUint8(r++)<<24)):(c>=5&&(o+=t.getUint8(r++)),c>=6&&(o+=t.getUint8(r++)<<8),c===7&&(o+=t.getUint8(r++)<<16))):(c>=1&&(n+=t.getUint8(r++)),c>=2&&(n+=t.getUint8(r++)<<8),c===3&&(n+=t.getUint8(r++)<<16)),zR(n,o,e)[2]}function zR(t,i,e){return t-=i,t-=e,t^=e>>>13,i-=e,i-=t,i^=t<<8,e-=t,e-=i,e^=i>>>13,t-=i,t-=e,t^=e>>>12,i-=e,i-=t,i^=t<<16,e-=t,e-=i,e^=i>>>5,t-=i,t-=e,t^=e>>>3,i-=e,i-=t,i^=t<<10,e-=t,e-=i,e^=i>>>15,[t,i,e]}var EP=(function(t){return t[t.Little=0]="Little",t[t.Big=1]="Big",t})(EP||{});function zh(t,i){return nW(t,i)[1]}function nW(t,i){let e=(t&65535)+(i&65535),n=(t>>>16)+(i>>>16)+(e>>>16);return[n>>>16,n<<16|e&65535]}function EE(t,i){return t<<i|t>>>32-i}function iW(t,i){let e=t.length+3>>>2,n=[];for(let o=0;o<e;o++)n[o]=oW(t,o*4,i);return n}function jR(t,i){return i>=t.length?0:t[i]}function oW(t,i,e){let n=0;if(e===EP.Big)for(let o=0;o<4;o++)n+=jR(t,i+o)<<24-8*o;else for(let o=0;o<4;o++)n+=jR(t,i+o)<<8*o;return n}var A6=(function(t){return t[t.None=0]="None",t[t.Const=1]="Const",t})(A6||{}),vx=class{modifiers;constructor(i=A6.None){this.modifiers=i}hasModifier(i){return(this.modifiers&i)!==0}},Rd=(function(t){return t[t.Dynamic=0]="Dynamic",t[t.Bool=1]="Bool",t[t.String=2]="String",t[t.Int=3]="Int",t[t.Number=4]="Number",t[t.Function=5]="Function",t[t.Inferred=6]="Inferred",t[t.None=7]="None",t})(Rd||{}),Nc=class extends vx{name;constructor(i,e){super(e),this.name=i}visitType(i,e){return i.visitBuiltinType(this,e)}},fl=class extends vx{value;typeParams;constructor(i,e,n=null){super(e),this.value=i,this.typeParams=n}visitType(i,e){return i.visitExpressionType(this,e)}};var hs=new Nc(Rd.Dynamic),ec=new Nc(Rd.Inferred),rW=new Nc(Rd.Bool),hFe=new Nc(Rd.Int),bu=new Nc(Rd.Number),DP=new Nc(Rd.String),fFe=new Nc(Rd.Function),Rc=new Nc(Rd.None),g0=(function(t){return t[t.Minus=0]="Minus",t[t.Plus=1]="Plus",t})(g0||{}),ht=(function(t){return t[t.Equals=0]="Equals",t[t.NotEquals=1]="NotEquals",t[t.Assign=2]="Assign",t[t.Identical=3]="Identical",t[t.NotIdentical=4]="NotIdentical",t[t.Minus=5]="Minus",t[t.Plus=6]="Plus",t[t.Divide=7]="Divide",t[t.Multiply=8]="Multiply",t[t.Modulo=9]="Modulo",t[t.And=10]="And",t[t.Or=11]="Or",t[t.BitwiseOr=12]="BitwiseOr",t[t.BitwiseAnd=13]="BitwiseAnd",t[t.Lower=14]="Lower",t[t.LowerEquals=15]="LowerEquals",t[t.Bigger=16]="Bigger",t[t.BiggerEquals=17]="BiggerEquals",t[t.NullishCoalesce=18]="NullishCoalesce",t[t.Exponentiation=19]="Exponentiation",t[t.In=20]="In",t[t.InstanceOf=21]="InstanceOf",t[t.AdditionAssignment=22]="AdditionAssignment",t[t.SubtractionAssignment=23]="SubtractionAssignment",t[t.MultiplicationAssignment=24]="MultiplicationAssignment",t[t.DivisionAssignment=25]="DivisionAssignment",t[t.RemainderAssignment=26]="RemainderAssignment",t[t.ExponentiationAssignment=27]="ExponentiationAssignment",t[t.AndAssignment=28]="AndAssignment",t[t.OrAssignment=29]="OrAssignment",t[t.NullishCoalesceAssignment=30]="NullishCoalesceAssignment",t})(ht||{});function aW(t,i){return t==null||i==null?t==i:t.isEquivalent(i)}function O6(t,i,e){let n=t.length;if(n!==i.length)return!1;for(let o=0;o<n;o++)if(!e(t[o],i[o]))return!1;return!0}function $s(t,i){return O6(t,i,(e,n)=>e.isEquivalent(n))}var Yi=class{type;sourceSpan;constructor(i,e){this.type=i||null,this.sourceSpan=e||null}prop(i,e){return new Hs(this,i,null,e)}key(i,e,n){return new Ad(this,i,e,n)}callFn(i,e,n){return new fs(this,i,null,e,n)}instantiate(i,e,n){return new v0(this,i,e,n)}conditional(i,e=null,n){return new Fc(this,i,e,null,n)}equals(i,e){return new Mi(ht.Equals,this,i,null,e)}notEquals(i,e){return new Mi(ht.NotEquals,this,i,null,e)}identical(i,e){return new Mi(ht.Identical,this,i,null,e)}notIdentical(i,e){return new Mi(ht.NotIdentical,this,i,null,e)}minus(i,e){return new Mi(ht.Minus,this,i,null,e)}plus(i,e){return new Mi(ht.Plus,this,i,null,e)}divide(i,e){return new Mi(ht.Divide,this,i,null,e)}multiply(i,e){return new Mi(ht.Multiply,this,i,null,e)}modulo(i,e){return new Mi(ht.Modulo,this,i,null,e)}power(i,e){return new Mi(ht.Exponentiation,this,i,null,e)}and(i,e){return new Mi(ht.And,this,i,null,e)}bitwiseOr(i,e){return new Mi(ht.BitwiseOr,this,i,null,e)}bitwiseAnd(i,e){return new Mi(ht.BitwiseAnd,this,i,null,e)}or(i,e){return new Mi(ht.Or,this,i,null,e)}lower(i,e){return new Mi(ht.Lower,this,i,null,e)}lowerEquals(i,e){return new Mi(ht.LowerEquals,this,i,null,e)}bigger(i,e){return new Mi(ht.Bigger,this,i,null,e)}biggerEquals(i,e){return new Mi(ht.BiggerEquals,this,i,null,e)}isBlank(i){return this.equals(mW,i)}nullishCoalesce(i,e){return new Mi(ht.NullishCoalesce,this,i,null,e)}toStmt(){return new va(this,null)}},tc=class t extends Yi{name;constructor(i,e,n){super(e,n),this.name=i}isEquivalent(i){return i instanceof t&&this.name===i.name}isConstant(){return!1}visitExpression(i,e){return i.visitReadVarExpr(this,e)}clone(){return new t(this.name,this.type,this.sourceSpan)}set(i){return new Mi(ht.Assign,this,i,null,this.sourceSpan)}},rf=class t extends Yi{expr;constructor(i,e,n){super(e,n),this.expr=i}visitExpression(i,e){return i.visitTypeofExpr(this,e)}isEquivalent(i){return i instanceof t&&i.expr.isEquivalent(this.expr)}isConstant(){return this.expr.isConstant()}clone(){return new t(this.expr.clone())}},bx=class t extends Yi{expr;constructor(i,e,n){super(e,n),this.expr=i}visitExpression(i,e){return i.visitVoidExpr(this,e)}isEquivalent(i){return i instanceof t&&i.expr.isEquivalent(this.expr)}isConstant(){return this.expr.isConstant()}clone(){return new t(this.expr.clone())}},gi=class t extends Yi{node;constructor(i,e,n){super(e,n),this.node=i}isEquivalent(i){return i instanceof t&&this.node===i.node}isConstant(){return!1}visitExpression(i,e){return i.visitWrappedNodeExpr(this,e)}clone(){return new t(this.node,this.type,this.sourceSpan)}},fs=class t extends Yi{fn;args;pure;constructor(i,e,n,o,r=!1){super(n,o),this.fn=i,this.args=e,this.pure=r}get receiver(){return this.fn}isEquivalent(i){return i instanceof t&&this.fn.isEquivalent(i.fn)&&$s(this.args,i.args)&&this.pure===i.pure}isConstant(){return!1}visitExpression(i,e){return i.visitInvokeFunctionExpr(this,e)}clone(){return new t(this.fn.clone(),this.args.map(i=>i.clone()),this.type,this.sourceSpan,this.pure)}},_0=class t extends Yi{tag;template;constructor(i,e,n,o){super(n,o),this.tag=i,this.template=e}isEquivalent(i){return i instanceof t&&this.tag.isEquivalent(i.tag)&&this.template.isEquivalent(i.template)}isConstant(){return!1}visitExpression(i,e){return i.visitTaggedTemplateLiteralExpr(this,e)}clone(){return new t(this.tag.clone(),this.template.clone(),this.type,this.sourceSpan)}},v0=class t extends Yi{classExpr;args;constructor(i,e,n,o){super(n,o),this.classExpr=i,this.args=e}isEquivalent(i){return i instanceof t&&this.classExpr.isEquivalent(i.classExpr)&&$s(this.args,i.args)}isConstant(){return!1}visitExpression(i,e){return i.visitInstantiateExpr(this,e)}clone(){return new t(this.classExpr.clone(),this.args.map(i=>i.clone()),this.type,this.sourceSpan)}},af=class t extends Yi{body;flags;constructor(i,e,n){super(null,n),this.body=i,this.flags=e}isEquivalent(i){return i instanceof t&&this.body===i.body&&this.flags===i.flags}isConstant(){return!0}visitExpression(i,e){return i.visitRegularExpressionLiteral(this,e)}clone(){return new t(this.body,this.flags,this.sourceSpan)}},_a=class t extends Yi{value;constructor(i,e,n){super(e,n),this.value=i}isEquivalent(i){return i instanceof t&&this.value===i.value}isConstant(){return!0}visitExpression(i,e){return i.visitLiteralExpr(this,e)}clone(){return new t(this.value,this.type,this.sourceSpan)}},b0=class t extends Yi{elements;expressions;constructor(i,e,n){super(null,n),this.elements=i,this.expressions=e}isEquivalent(i){return i instanceof t&&O6(this.elements,i.elements,(e,n)=>e.text===n.text)&&$s(this.expressions,i.expressions)}isConstant(){return!1}visitExpression(i,e){return i.visitTemplateLiteralExpr(this,e)}clone(){return new t(this.elements.map(i=>i.clone()),this.expressions.map(i=>i.clone()))}},Cx=class t extends Yi{text;rawText;constructor(i,e,n){super(DP,e),this.text=i,this.rawText=n??JE(cx(i))}visitExpression(i,e){return i.visitTemplateLiteralElementExpr(this,e)}isEquivalent(i){return i instanceof t&&i.text===this.text&&i.rawText===this.rawText}isConstant(){return!0}clone(){return new t(this.text,this.sourceSpan,this.rawText)}},mu=class{text;sourceSpan;constructor(i,e){this.text=i,this.sourceSpan=e}},ef=class{text;sourceSpan;associatedMessage;constructor(i,e,n){this.text=i,this.sourceSpan=e,this.associatedMessage=n}},sW="|",$R="@@",lW="\u241F",xx=class t extends Yi{metaBlock;messageParts;placeHolderNames;expressions;constructor(i,e,n,o,r){super(DP,r),this.metaBlock=i,this.messageParts=e,this.placeHolderNames=n,this.expressions=o}isEquivalent(i){return!1}isConstant(){return!1}visitExpression(i,e){return i.visitLocalizedString(this,e)}clone(){return new t(this.metaBlock,this.messageParts,this.placeHolderNames,this.expressions.map(i=>i.clone()),this.sourceSpan)}serializeI18nHead(){let i=this.metaBlock.description||"";return this.metaBlock.meaning&&(i=`${this.metaBlock.meaning}${sW}${i}`),this.metaBlock.customId&&(i=`${i}${$R}${this.metaBlock.customId}`),this.metaBlock.legacyIds&&this.metaBlock.legacyIds.forEach(e=>{i=`${i}${lW}${e}`}),HR(i,this.messageParts[0].text,this.getMessagePartSourceSpan(0))}getMessagePartSourceSpan(i){return this.messageParts[i]?.sourceSpan??this.sourceSpan}getPlaceholderSourceSpan(i){return this.placeHolderNames[i]?.sourceSpan??this.expressions[i]?.sourceSpan??this.sourceSpan}serializeI18nTemplatePart(i){let e=this.placeHolderNames[i-1],n=this.messageParts[i],o=e.text;return e.associatedMessage?.legacyIds.length===0&&(o+=`${$R}${I6(e.associatedMessage.messageString,e.associatedMessage.meaning)}`),HR(o,n.text,this.getMessagePartSourceSpan(i))}},cx=t=>t.replace(/\\/g,"\\\\"),cW=t=>t.replace(/^:/,"\\:"),dW=t=>t.replace(/:/g,"\\:"),JE=t=>t.replace(/`/g,"\\`").replace(/\${/g,"$\\{");function HR(t,i,e){return t===""?{cooked:i,raw:JE(cW(cx(i))),range:e}:{cooked:`:${t}:${i}`,raw:JE(`:${dW(cx(t))}:${cx(i)}`),range:e}}var Cu=class t extends Yi{value;typeParams;constructor(i,e,n=null,o){super(e,o),this.value=i,this.typeParams=n}isEquivalent(i){return i instanceof t&&this.value.name===i.value.name&&this.value.moduleName===i.value.moduleName}isConstant(){return!1}visitExpression(i,e){return i.visitExternalExpr(this,e)}clone(){return new t(this.value,this.type,this.typeParams,this.sourceSpan)}};var Fc=class t extends Yi{condition;falseCase;trueCase;constructor(i,e,n=null,o,r){super(o||e.type,r),this.condition=i,this.falseCase=n,this.trueCase=e}isEquivalent(i){return i instanceof t&&this.condition.isEquivalent(i.condition)&&this.trueCase.isEquivalent(i.trueCase)&&aW(this.falseCase,i.falseCase)}isConstant(){return!1}visitExpression(i,e){return i.visitConditionalExpr(this,e)}clone(){return new t(this.condition.clone(),this.trueCase.clone(),this.falseCase?.clone(),this.type,this.sourceSpan)}};var C0=class t extends Yi{condition;constructor(i,e){super(rW,e),this.condition=i}isEquivalent(i){return i instanceof t&&this.condition.isEquivalent(i.condition)}isConstant(){return!1}visitExpression(i,e){return i.visitNotExpr(this,e)}clone(){return new t(this.condition.clone(),this.sourceSpan)}},Ir=class t{name;type;constructor(i,e=null){this.name=i,this.type=e}isEquivalent(i){return this.name===i.name}clone(){return new t(this.name,this.type)}},Am=class t extends Yi{params;statements;name;constructor(i,e,n,o,r){super(n,o),this.params=i,this.statements=e,this.name=r}isEquivalent(i){return(i instanceof t||i instanceof x0)&&$s(this.params,i.params)&&$s(this.statements,i.statements)}isConstant(){return!1}visitExpression(i,e){return i.visitFunctionExpr(this,e)}toDeclStmt(i,e){return new x0(i,this.params,this.statements,this.type,e,this.sourceSpan)}clone(){return new t(this.params.map(i=>i.clone()),this.statements,this.type,this.sourceSpan,this.name)}},Nu=class eD extends Yi{params;body;constructor(i,e,n,o){super(n,o),this.params=i,this.body=e}isEquivalent(i){return!(i instanceof eD)||!$s(this.params,i.params)?!1:this.body instanceof Yi&&i.body instanceof Yi?this.body.isEquivalent(i.body):Array.isArray(this.body)&&Array.isArray(i.body)?$s(this.body,i.body):!1}isConstant(){return!1}visitExpression(i,e){return i.visitArrowFunctionExpr(this,e)}clone(){return new eD(this.params.map(i=>i.clone()),Array.isArray(this.body)?this.body:this.body.clone(),this.type,this.sourceSpan)}toDeclStmt(i,e){return new qr(i,this,ec,e,this.sourceSpan)}},xu=class t extends Yi{operator;expr;parens;constructor(i,e,n,o,r=!0){super(n||bu,o),this.operator=i,this.expr=e,this.parens=r}isEquivalent(i){return i instanceof t&&this.operator===i.operator&&this.expr.isEquivalent(i.expr)}isConstant(){return!1}visitExpression(i,e){return i.visitUnaryOperatorExpr(this,e)}clone(){return new t(this.operator,this.expr.clone(),this.type,this.sourceSpan,this.parens)}},nc=class t extends Yi{expr;constructor(i,e,n){super(e,n),this.expr=i}visitExpression(i,e){return i.visitParenthesizedExpr(this,e)}isEquivalent(i){return i instanceof t&&i.expr.isEquivalent(this.expr)}isConstant(){return this.expr.isConstant()}clone(){return new t(this.expr.clone())}},Mi=class t extends Yi{operator;rhs;lhs;constructor(i,e,n,o,r){super(o||e.type,r),this.operator=i,this.rhs=n,this.lhs=e}isEquivalent(i){return i instanceof t&&this.operator===i.operator&&this.lhs.isEquivalent(i.lhs)&&this.rhs.isEquivalent(i.rhs)}isConstant(){return!1}visitExpression(i,e){return i.visitBinaryOperatorExpr(this,e)}clone(){return new t(this.operator,this.lhs.clone(),this.rhs.clone(),this.type,this.sourceSpan)}isAssignment(){let i=this.operator;return i===ht.Assign||i===ht.AdditionAssignment||i===ht.SubtractionAssignment||i===ht.MultiplicationAssignment||i===ht.DivisionAssignment||i===ht.RemainderAssignment||i===ht.ExponentiationAssignment||i===ht.AndAssignment||i===ht.OrAssignment||i===ht.NullishCoalesceAssignment}},Hs=class t extends Yi{receiver;name;constructor(i,e,n,o){super(n,o),this.receiver=i,this.name=e}get index(){return this.name}isEquivalent(i){return i instanceof t&&this.receiver.isEquivalent(i.receiver)&&this.name===i.name}isConstant(){return!1}visitExpression(i,e){return i.visitReadPropExpr(this,e)}set(i){return new Mi(ht.Assign,this.receiver.prop(this.name),i,null,this.sourceSpan)}clone(){return new t(this.receiver.clone(),this.name,this.type,this.sourceSpan)}},Ad=class t extends Yi{receiver;index;constructor(i,e,n,o){super(n,o),this.receiver=i,this.index=e}isEquivalent(i){return i instanceof t&&this.receiver.isEquivalent(i.receiver)&&this.index.isEquivalent(i.index)}isConstant(){return!1}visitExpression(i,e){return i.visitReadKeyExpr(this,e)}set(i){return new Mi(ht.Assign,this.receiver.key(this.index),i,null,this.sourceSpan)}clone(){return new t(this.receiver.clone(),this.index.clone(),this.type,this.sourceSpan)}},Lc=class t extends Yi{entries;constructor(i,e,n){super(e,n),this.entries=i}isConstant(){return this.entries.every(i=>i.isConstant())}isEquivalent(i){return i instanceof t&&$s(this.entries,i.entries)}visitExpression(i,e){return i.visitLiteralArrayExpr(this,e)}clone(){return new t(this.entries.map(i=>i.clone()),this.type,this.sourceSpan)}},sf=class t{key;value;quoted;constructor(i,e,n){this.key=i,this.value=e,this.quoted=n}isEquivalent(i){return this.key===i.key&&this.value.isEquivalent(i.value)}clone(){return new t(this.key,this.value.clone(),this.quoted)}isConstant(){return this.value.isConstant()}},Om=class t{expression;constructor(i){this.expression=i}isEquivalent(i){return i instanceof t&&this.expression.isEquivalent(i.expression)}clone(){return new t(this.expression.clone())}isConstant(){return this.expression.isConstant()}},ic=class t extends Yi{entries;valueType=null;constructor(i,e,n){super(e,n),this.entries=i,e&&(this.valueType=e.valueType)}isEquivalent(i){return i instanceof t&&$s(this.entries,i.entries)}isConstant(){return this.entries.every(i=>i.isConstant())}visitExpression(i,e){return i.visitLiteralMapExpr(this,e)}clone(){let i=this.entries.map(e=>e.clone());return new t(i,this.type,this.sourceSpan)}};var yu=class t extends Yi{expression;constructor(i,e){super(null,e),this.expression=i}isEquivalent(i){return i instanceof t&&this.expression.isEquivalent(i.expression)}isConstant(){return this.expression.isConstant()}visitExpression(i,e){return i.visitSpreadElementExpr(this,e)}clone(){return new t(this.expression.clone(),this.sourceSpan)}},lf=new _a(null,null,null),mW=new _a(null,ec,null),fa=(function(t){return t[t.None=0]="None",t[t.Final=1]="Final",t[t.Private=2]="Private",t[t.Exported=4]="Exported",t[t.Static=8]="Static",t})(fa||{}),tD=class{text;multiline;trailingNewline;constructor(i,e,n){this.text=i,this.multiline=e,this.trailingNewline=n}toString(){return this.multiline?` ${this.text} `:this.text}},yx=class extends tD{tags;constructor(i){super("",!0,!0),this.tags=i}toString(){return gW(this.tags)}},Su=class{modifiers;sourceSpan;leadingComments;constructor(i=fa.None,e=null,n){this.modifiers=i,this.sourceSpan=e,this.leadingComments=n}hasModifier(i){return(this.modifiers&i)!==0}addLeadingComment(i){this.leadingComments=this.leadingComments??[],this.leadingComments.push(i)}},qr=class t extends Su{name;value;type;constructor(i,e,n,o,r,a){super(o,r,a),this.name=i,this.value=e,this.type=n||e&&e.type||null}isEquivalent(i){return i instanceof t&&this.name===i.name&&(this.value?!!i.value&&this.value.isEquivalent(i.value):!i.value)}visitStatement(i,e){return i.visitDeclareVarStmt(this,e)}},x0=class t extends Su{name;params;statements;type;constructor(i,e,n,o,r,a,c){super(r,a,c),this.name=i,this.params=e,this.statements=n,this.type=o||null}isEquivalent(i){return i instanceof t&&$s(this.params,i.params)&&$s(this.statements,i.statements)}visitStatement(i,e){return i.visitDeclareFunctionStmt(this,e)}},va=class t extends Su{expr;constructor(i,e,n){super(fa.None,e,n),this.expr=i}isEquivalent(i){return i instanceof t&&this.expr.isEquivalent(i.expr)}visitStatement(i,e){return i.visitExpressionStmt(this,e)}},Ar=class t extends Su{value;constructor(i,e=null,n){super(fa.None,e,n),this.value=i}isEquivalent(i){return i instanceof t&&this.value.isEquivalent(i.value)}visitStatement(i,e){return i.visitReturnStmt(this,e)}},Sx=class t extends Su{condition;trueCase;falseCase;constructor(i,e,n=[],o,r){super(fa.None,o,r),this.condition=i,this.trueCase=e,this.falseCase=n}isEquivalent(i){return i instanceof t&&this.condition.isEquivalent(i.condition)&&$s(this.trueCase,i.trueCase)&&$s(this.falseCase,i.falseCase)}visitStatement(i,e){return i.visitIfStmt(this,e)}};function pW(t=[]){return new yx(t)}function si(t,i,e){return new tc(t,i,e)}function Zt(t,i=null,e){return new Cu(t,null,i,e)}function ga(t,i,e){return new fl(t,i,e)}function uv(t){return new rf(t)}function oo(t,i,e){return new Lc(t,i,e)}function gl(t,i=null){return new ic(t.map(e=>new sf(e.key,e.value,e.quoted)),i,null)}function uW(t,i){return new C0(t,i)}function Nm(t,i,e,n,o){return new Am(t,i,e,n,o)}function Us(t,i,e,n){return new Nu(t,i,e,n)}function y1(t,i,e,n,o){return new Sx(t,i,e,n,o)}function hW(t,i,e,n){return new _0(t,i,e,n)}function Ee(t,i,e){return new _a(t,i,e)}function fW(t,i,e,n,o){return new xx(t,i,e,n,o)}function UR(t){let i="";if(t.tagName&&(i+=` @${t.tagName}`),t.text){if(t.text.match(/\/\*|\*\//))throw new Error('JSDoc text cannot contain "/*" and "*/"');i+=" "+t.text.replace(/@/g,"\\@")}return i}function gW(t){if(t.length===0)return"";if(t.length===1&&t[0].tagName&&!t[0].text)return`*${UR(t[0])} `;let i=`*
|
||
`;for(let e of t)i+=" *",i+=UR(e).replace(/\n/g,`
|
||
* `),i+=`
|
||
`;return i+=" ",i}var _W="_c",vW={},bW=50,wx=class t extends Yi{resolved;original;shared=!1;constructor(i){super(i.type),this.resolved=i,this.original=i}visitExpression(i,e){return e===vW?this.original.visitExpression(i,e):this.resolved.visitExpression(i,e)}isEquivalent(i){return i instanceof t&&this.resolved.isEquivalent(i.resolved)}isConstant(){return!0}clone(){throw new Error("Not supported.")}fixup(i){this.resolved=i,this.shared=!0}},Mx=class{isClosureCompilerEnabled;statements=[];literals=new Map;literalFactories=new Map;sharedConstants=new Map;_claimedNames=new Map;nextNameIndex=0;constructor(i=!1){this.isClosureCompilerEnabled=i}getConstLiteral(i,e){if(i instanceof _a&&!GR(i)||i instanceof wx)return i;let n=y0.INSTANCE.keyOf(i),o=this.literals.get(n),r=!1;if(o||(o=new wx(i),this.literals.set(n,o),r=!0),!r&&!o.shared||r&&e){let a=this.freshName(),c,m;this.isClosureCompilerEnabled&&GR(i)?(c=new Am([],[new Ar(i)]),m=si(a).callFn([])):(c=i,m=si(a)),this.statements.push(new qr(a,c,ec,fa.Final)),o.fixup(m)}return o}getSharedConstant(i,e){let n=i.keyOf(e);if(!this.sharedConstants.has(n)){let o=this.freshName();this.sharedConstants.set(n,si(o)),this.statements.push(i.toSharedConstantDeclaration(o,e))}return this.sharedConstants.get(n)}getSharedFunctionReference(i,e,n=!0){let o=i instanceof Nu;for(let a of this.statements)if(o&&a instanceof qr&&a.value?.isEquivalent(i)||!o&&a instanceof x0&&i instanceof Am&&i.isEquivalent(a))return si(a.name);let r=n?this.uniqueName(e):e;return this.statements.push(i instanceof Am?i.toDeclStmt(r,fa.Final):new qr(r,i,ec,fa.Final,i.sourceSpan)),si(r)}uniqueName(i,e=!0){let n=this._claimedNames.get(i)??0,o=n===0&&!e?`${i}`:`${i}${n}`;return this._claimedNames.set(i,n+1),o}freshName(){return this.uniqueName(_W)}},y0=class t{static INSTANCE=new t;keyOf(i){if(i instanceof _a&&typeof i.value=="string")return`"${i.value}"`;if(i instanceof _a)return String(i.value);if(i instanceof af)return`/${i.body}/${i.flags??""}`;if(i instanceof Lc){let e=[];for(let n of i.entries)e.push(this.keyOf(n));return`[${e.join(",")}]`}else if(i instanceof ic){let e=[];for(let n of i.entries)if(n instanceof Om)e.push("..."+this.keyOf(n.expression));else{let o=n.key;n.quoted&&(o=`"${o}"`),e.push(o+":"+this.keyOf(n.value))}return`{${e.join(",")}}`}else{if(i instanceof Cu)return`import("${i.value.moduleName}", ${i.value.name})`;if(i instanceof tc)return`read(${i.name})`;if(i instanceof rf)return`typeof(${this.keyOf(i.expr)})`;if(i instanceof yu)return`...${this.keyOf(i.expression)}`;throw new Error(`${this.constructor.name} does not handle expressions of type ${i.constructor.name}`)}}};function GR(t){return t instanceof _a&&typeof t.value=="string"&&t.value.length>=bW}var xe="@angular/core",he=(()=>{class t{static core={name:null,moduleName:xe};static namespaceHTML={name:"\u0275\u0275namespaceHTML",moduleName:xe};static namespaceMathML={name:"\u0275\u0275namespaceMathML",moduleName:xe};static namespaceSVG={name:"\u0275\u0275namespaceSVG",moduleName:xe};static element={name:"\u0275\u0275element",moduleName:xe};static elementStart={name:"\u0275\u0275elementStart",moduleName:xe};static elementEnd={name:"\u0275\u0275elementEnd",moduleName:xe};static domElement={name:"\u0275\u0275domElement",moduleName:xe};static domElementStart={name:"\u0275\u0275domElementStart",moduleName:xe};static domElementEnd={name:"\u0275\u0275domElementEnd",moduleName:xe};static domElementContainer={name:"\u0275\u0275domElementContainer",moduleName:xe};static domElementContainerStart={name:"\u0275\u0275domElementContainerStart",moduleName:xe};static domElementContainerEnd={name:"\u0275\u0275domElementContainerEnd",moduleName:xe};static domTemplate={name:"\u0275\u0275domTemplate",moduleName:xe};static domListener={name:"\u0275\u0275domListener",moduleName:xe};static advance={name:"\u0275\u0275advance",moduleName:xe};static syntheticHostProperty={name:"\u0275\u0275syntheticHostProperty",moduleName:xe};static syntheticHostListener={name:"\u0275\u0275syntheticHostListener",moduleName:xe};static attribute={name:"\u0275\u0275attribute",moduleName:xe};static classProp={name:"\u0275\u0275classProp",moduleName:xe};static elementContainerStart={name:"\u0275\u0275elementContainerStart",moduleName:xe};static elementContainerEnd={name:"\u0275\u0275elementContainerEnd",moduleName:xe};static elementContainer={name:"\u0275\u0275elementContainer",moduleName:xe};static styleMap={name:"\u0275\u0275styleMap",moduleName:xe};static classMap={name:"\u0275\u0275classMap",moduleName:xe};static styleProp={name:"\u0275\u0275styleProp",moduleName:xe};static interpolate={name:"\u0275\u0275interpolate",moduleName:xe};static interpolate1={name:"\u0275\u0275interpolate1",moduleName:xe};static interpolate2={name:"\u0275\u0275interpolate2",moduleName:xe};static interpolate3={name:"\u0275\u0275interpolate3",moduleName:xe};static interpolate4={name:"\u0275\u0275interpolate4",moduleName:xe};static interpolate5={name:"\u0275\u0275interpolate5",moduleName:xe};static interpolate6={name:"\u0275\u0275interpolate6",moduleName:xe};static interpolate7={name:"\u0275\u0275interpolate7",moduleName:xe};static interpolate8={name:"\u0275\u0275interpolate8",moduleName:xe};static interpolateV={name:"\u0275\u0275interpolateV",moduleName:xe};static nextContext={name:"\u0275\u0275nextContext",moduleName:xe};static resetView={name:"\u0275\u0275resetView",moduleName:xe};static templateCreate={name:"\u0275\u0275template",moduleName:xe};static defer={name:"\u0275\u0275defer",moduleName:xe};static deferWhen={name:"\u0275\u0275deferWhen",moduleName:xe};static deferOnIdle={name:"\u0275\u0275deferOnIdle",moduleName:xe};static deferOnImmediate={name:"\u0275\u0275deferOnImmediate",moduleName:xe};static deferOnTimer={name:"\u0275\u0275deferOnTimer",moduleName:xe};static deferOnHover={name:"\u0275\u0275deferOnHover",moduleName:xe};static deferOnInteraction={name:"\u0275\u0275deferOnInteraction",moduleName:xe};static deferOnViewport={name:"\u0275\u0275deferOnViewport",moduleName:xe};static deferPrefetchWhen={name:"\u0275\u0275deferPrefetchWhen",moduleName:xe};static deferPrefetchOnIdle={name:"\u0275\u0275deferPrefetchOnIdle",moduleName:xe};static deferPrefetchOnImmediate={name:"\u0275\u0275deferPrefetchOnImmediate",moduleName:xe};static deferPrefetchOnTimer={name:"\u0275\u0275deferPrefetchOnTimer",moduleName:xe};static deferPrefetchOnHover={name:"\u0275\u0275deferPrefetchOnHover",moduleName:xe};static deferPrefetchOnInteraction={name:"\u0275\u0275deferPrefetchOnInteraction",moduleName:xe};static deferPrefetchOnViewport={name:"\u0275\u0275deferPrefetchOnViewport",moduleName:xe};static deferHydrateWhen={name:"\u0275\u0275deferHydrateWhen",moduleName:xe};static deferHydrateNever={name:"\u0275\u0275deferHydrateNever",moduleName:xe};static deferHydrateOnIdle={name:"\u0275\u0275deferHydrateOnIdle",moduleName:xe};static deferHydrateOnImmediate={name:"\u0275\u0275deferHydrateOnImmediate",moduleName:xe};static deferHydrateOnTimer={name:"\u0275\u0275deferHydrateOnTimer",moduleName:xe};static deferHydrateOnHover={name:"\u0275\u0275deferHydrateOnHover",moduleName:xe};static deferHydrateOnInteraction={name:"\u0275\u0275deferHydrateOnInteraction",moduleName:xe};static deferHydrateOnViewport={name:"\u0275\u0275deferHydrateOnViewport",moduleName:xe};static deferEnableTimerScheduling={name:"\u0275\u0275deferEnableTimerScheduling",moduleName:xe};static conditionalCreate={name:"\u0275\u0275conditionalCreate",moduleName:xe};static conditionalBranchCreate={name:"\u0275\u0275conditionalBranchCreate",moduleName:xe};static conditional={name:"\u0275\u0275conditional",moduleName:xe};static repeater={name:"\u0275\u0275repeater",moduleName:xe};static repeaterCreate={name:"\u0275\u0275repeaterCreate",moduleName:xe};static repeaterTrackByIndex={name:"\u0275\u0275repeaterTrackByIndex",moduleName:xe};static repeaterTrackByIdentity={name:"\u0275\u0275repeaterTrackByIdentity",moduleName:xe};static componentInstance={name:"\u0275\u0275componentInstance",moduleName:xe};static text={name:"\u0275\u0275text",moduleName:xe};static enableBindings={name:"\u0275\u0275enableBindings",moduleName:xe};static disableBindings={name:"\u0275\u0275disableBindings",moduleName:xe};static getCurrentView={name:"\u0275\u0275getCurrentView",moduleName:xe};static textInterpolate={name:"\u0275\u0275textInterpolate",moduleName:xe};static textInterpolate1={name:"\u0275\u0275textInterpolate1",moduleName:xe};static textInterpolate2={name:"\u0275\u0275textInterpolate2",moduleName:xe};static textInterpolate3={name:"\u0275\u0275textInterpolate3",moduleName:xe};static textInterpolate4={name:"\u0275\u0275textInterpolate4",moduleName:xe};static textInterpolate5={name:"\u0275\u0275textInterpolate5",moduleName:xe};static textInterpolate6={name:"\u0275\u0275textInterpolate6",moduleName:xe};static textInterpolate7={name:"\u0275\u0275textInterpolate7",moduleName:xe};static textInterpolate8={name:"\u0275\u0275textInterpolate8",moduleName:xe};static textInterpolateV={name:"\u0275\u0275textInterpolateV",moduleName:xe};static restoreView={name:"\u0275\u0275restoreView",moduleName:xe};static pureFunction0={name:"\u0275\u0275pureFunction0",moduleName:xe};static pureFunction1={name:"\u0275\u0275pureFunction1",moduleName:xe};static pureFunction2={name:"\u0275\u0275pureFunction2",moduleName:xe};static pureFunction3={name:"\u0275\u0275pureFunction3",moduleName:xe};static pureFunction4={name:"\u0275\u0275pureFunction4",moduleName:xe};static pureFunction5={name:"\u0275\u0275pureFunction5",moduleName:xe};static pureFunction6={name:"\u0275\u0275pureFunction6",moduleName:xe};static pureFunction7={name:"\u0275\u0275pureFunction7",moduleName:xe};static pureFunction8={name:"\u0275\u0275pureFunction8",moduleName:xe};static pureFunctionV={name:"\u0275\u0275pureFunctionV",moduleName:xe};static pipeBind1={name:"\u0275\u0275pipeBind1",moduleName:xe};static pipeBind2={name:"\u0275\u0275pipeBind2",moduleName:xe};static pipeBind3={name:"\u0275\u0275pipeBind3",moduleName:xe};static pipeBind4={name:"\u0275\u0275pipeBind4",moduleName:xe};static pipeBindV={name:"\u0275\u0275pipeBindV",moduleName:xe};static domProperty={name:"\u0275\u0275domProperty",moduleName:xe};static ariaProperty={name:"\u0275\u0275ariaProperty",moduleName:xe};static property={name:"\u0275\u0275property",moduleName:xe};static control={name:"\u0275\u0275control",moduleName:xe};static controlCreate={name:"\u0275\u0275controlCreate",moduleName:xe};static animationEnterListener={name:"\u0275\u0275animateEnterListener",moduleName:xe};static animationLeaveListener={name:"\u0275\u0275animateLeaveListener",moduleName:xe};static animationEnter={name:"\u0275\u0275animateEnter",moduleName:xe};static animationLeave={name:"\u0275\u0275animateLeave",moduleName:xe};static i18n={name:"\u0275\u0275i18n",moduleName:xe};static i18nAttributes={name:"\u0275\u0275i18nAttributes",moduleName:xe};static i18nExp={name:"\u0275\u0275i18nExp",moduleName:xe};static i18nStart={name:"\u0275\u0275i18nStart",moduleName:xe};static i18nEnd={name:"\u0275\u0275i18nEnd",moduleName:xe};static i18nApply={name:"\u0275\u0275i18nApply",moduleName:xe};static i18nPostprocess={name:"\u0275\u0275i18nPostprocess",moduleName:xe};static pipe={name:"\u0275\u0275pipe",moduleName:xe};static projection={name:"\u0275\u0275projection",moduleName:xe};static projectionDef={name:"\u0275\u0275projectionDef",moduleName:xe};static reference={name:"\u0275\u0275reference",moduleName:xe};static inject={name:"\u0275\u0275inject",moduleName:xe};static injectAttribute={name:"\u0275\u0275injectAttribute",moduleName:xe};static directiveInject={name:"\u0275\u0275directiveInject",moduleName:xe};static invalidFactory={name:"\u0275\u0275invalidFactory",moduleName:xe};static invalidFactoryDep={name:"\u0275\u0275invalidFactoryDep",moduleName:xe};static templateRefExtractor={name:"\u0275\u0275templateRefExtractor",moduleName:xe};static forwardRef={name:"forwardRef",moduleName:xe};static resolveForwardRef={name:"resolveForwardRef",moduleName:xe};static replaceMetadata={name:"\u0275\u0275replaceMetadata",moduleName:xe};static getReplaceMetadataURL={name:"\u0275\u0275getReplaceMetadataURL",moduleName:xe};static \u0275\u0275defineInjectable={name:"\u0275\u0275defineInjectable",moduleName:xe};static declareInjectable={name:"\u0275\u0275ngDeclareInjectable",moduleName:xe};static InjectableDeclaration={name:"\u0275\u0275InjectableDeclaration",moduleName:xe};static resolveWindow={name:"\u0275\u0275resolveWindow",moduleName:xe};static resolveDocument={name:"\u0275\u0275resolveDocument",moduleName:xe};static resolveBody={name:"\u0275\u0275resolveBody",moduleName:xe};static getComponentDepsFactory={name:"\u0275\u0275getComponentDepsFactory",moduleName:xe};static defineComponent={name:"\u0275\u0275defineComponent",moduleName:xe};static declareComponent={name:"\u0275\u0275ngDeclareComponent",moduleName:xe};static setComponentScope={name:"\u0275\u0275setComponentScope",moduleName:xe};static ChangeDetectionStrategy={name:"ChangeDetectionStrategy",moduleName:xe};static ViewEncapsulation={name:"ViewEncapsulation",moduleName:xe};static ComponentDeclaration={name:"\u0275\u0275ComponentDeclaration",moduleName:xe};static FactoryDeclaration={name:"\u0275\u0275FactoryDeclaration",moduleName:xe};static declareFactory={name:"\u0275\u0275ngDeclareFactory",moduleName:xe};static FactoryTarget={name:"\u0275\u0275FactoryTarget",moduleName:xe};static defineDirective={name:"\u0275\u0275defineDirective",moduleName:xe};static declareDirective={name:"\u0275\u0275ngDeclareDirective",moduleName:xe};static DirectiveDeclaration={name:"\u0275\u0275DirectiveDeclaration",moduleName:xe};static InjectorDef={name:"\u0275\u0275InjectorDef",moduleName:xe};static InjectorDeclaration={name:"\u0275\u0275InjectorDeclaration",moduleName:xe};static defineInjector={name:"\u0275\u0275defineInjector",moduleName:xe};static declareInjector={name:"\u0275\u0275ngDeclareInjector",moduleName:xe};static NgModuleDeclaration={name:"\u0275\u0275NgModuleDeclaration",moduleName:xe};static ModuleWithProviders={name:"ModuleWithProviders",moduleName:xe};static defineNgModule={name:"\u0275\u0275defineNgModule",moduleName:xe};static declareNgModule={name:"\u0275\u0275ngDeclareNgModule",moduleName:xe};static setNgModuleScope={name:"\u0275\u0275setNgModuleScope",moduleName:xe};static registerNgModuleType={name:"\u0275\u0275registerNgModuleType",moduleName:xe};static PipeDeclaration={name:"\u0275\u0275PipeDeclaration",moduleName:xe};static definePipe={name:"\u0275\u0275definePipe",moduleName:xe};static declarePipe={name:"\u0275\u0275ngDeclarePipe",moduleName:xe};static declareClassMetadata={name:"\u0275\u0275ngDeclareClassMetadata",moduleName:xe};static declareClassMetadataAsync={name:"\u0275\u0275ngDeclareClassMetadataAsync",moduleName:xe};static setClassMetadata={name:"\u0275setClassMetadata",moduleName:xe};static setClassMetadataAsync={name:"\u0275setClassMetadataAsync",moduleName:xe};static setClassDebugInfo={name:"\u0275setClassDebugInfo",moduleName:xe};static queryRefresh={name:"\u0275\u0275queryRefresh",moduleName:xe};static viewQuery={name:"\u0275\u0275viewQuery",moduleName:xe};static loadQuery={name:"\u0275\u0275loadQuery",moduleName:xe};static contentQuery={name:"\u0275\u0275contentQuery",moduleName:xe};static viewQuerySignal={name:"\u0275\u0275viewQuerySignal",moduleName:xe};static contentQuerySignal={name:"\u0275\u0275contentQuerySignal",moduleName:xe};static queryAdvance={name:"\u0275\u0275queryAdvance",moduleName:xe};static twoWayProperty={name:"\u0275\u0275twoWayProperty",moduleName:xe};static twoWayBindingSet={name:"\u0275\u0275twoWayBindingSet",moduleName:xe};static twoWayListener={name:"\u0275\u0275twoWayListener",moduleName:xe};static declareLet={name:"\u0275\u0275declareLet",moduleName:xe};static storeLet={name:"\u0275\u0275storeLet",moduleName:xe};static readContextLet={name:"\u0275\u0275readContextLet",moduleName:xe};static arrowFunction={name:"\u0275\u0275arrowFunction",moduleName:xe};static attachSourceLocations={name:"\u0275\u0275attachSourceLocations",moduleName:xe};static NgOnChangesFeature={name:"\u0275\u0275NgOnChangesFeature",moduleName:xe};static ControlFeature={name:"\u0275\u0275ControlFeature",moduleName:xe};static InheritDefinitionFeature={name:"\u0275\u0275InheritDefinitionFeature",moduleName:xe};static ProvidersFeature={name:"\u0275\u0275ProvidersFeature",moduleName:xe};static HostDirectivesFeature={name:"\u0275\u0275HostDirectivesFeature",moduleName:xe};static ExternalStylesFeature={name:"\u0275\u0275ExternalStylesFeature",moduleName:xe};static listener={name:"\u0275\u0275listener",moduleName:xe};static getInheritedFactory={name:"\u0275\u0275getInheritedFactory",moduleName:xe};static sanitizeHtml={name:"\u0275\u0275sanitizeHtml",moduleName:xe};static sanitizeStyle={name:"\u0275\u0275sanitizeStyle",moduleName:xe};static validateAttribute={name:"\u0275\u0275validateAttribute",moduleName:xe};static sanitizeResourceUrl={name:"\u0275\u0275sanitizeResourceUrl",moduleName:xe};static sanitizeScript={name:"\u0275\u0275sanitizeScript",moduleName:xe};static sanitizeUrl={name:"\u0275\u0275sanitizeUrl",moduleName:xe};static sanitizeUrlOrResourceUrl={name:"\u0275\u0275sanitizeUrlOrResourceUrl",moduleName:xe};static trustConstantHtml={name:"\u0275\u0275trustConstantHtml",moduleName:xe};static trustConstantResourceUrl={name:"\u0275\u0275trustConstantResourceUrl",moduleName:xe};static inputDecorator={name:"Input",moduleName:xe};static outputDecorator={name:"Output",moduleName:xe};static viewChildDecorator={name:"ViewChild",moduleName:xe};static viewChildrenDecorator={name:"ViewChildren",moduleName:xe};static contentChildDecorator={name:"ContentChild",moduleName:xe};static contentChildrenDecorator={name:"ContentChildren",moduleName:xe};static InputSignalBrandWriteType={name:"\u0275INPUT_SIGNAL_BRAND_WRITE_TYPE",moduleName:xe};static UnwrapDirectiveSignalInputs={name:"\u0275UnwrapDirectiveSignalInputs",moduleName:xe};static unwrapWritableSignal={name:"\u0275unwrapWritableSignal",moduleName:xe};static assertType={name:"\u0275assertType",moduleName:xe}}return t})(),CW=/-+([a-z0-9])/g;function xW(t){return t.replace(CW,(...i)=>i[1].toUpperCase())}function yW(t,i){return N6(t,":",i)}function SW(t,i){return N6(t,".",i)}function N6(t,i,e){let n=t.indexOf(i);return n==-1?e:[t.slice(0,n).trim(),t.slice(n+1).trim()]}function wW(t){let i=[];for(let e=0;e<t.length;e++){let n=t.charCodeAt(e);if(n>=55296&&n<=56319&&t.length>e+1){let o=t.charCodeAt(e+1);o>=56320&&o<=57343&&(e++,n=(n-55296<<10)+o-56320+65536)}n<=127?i.push(n):n<=2047?i.push(n>>6&31|192,n&63|128):n<=65535?i.push(n>>12|224,n>>6&63|128,n&63|128):n<=2097151&&i.push(n>>18&7|240,n>>12&63|128,n>>6&63|128,n&63|128)}return i}function R6(t){if(typeof t=="string")return t;if(Array.isArray(t))return`[${t.map(R6).join(", ")}]`;if(t==null)return""+t;let i=t.overriddenName||t.name;if(i)return`${i}`;if(!t.toString)return"object";let e=t.toString();if(e==null)return""+e;let n=e.indexOf(`
|
||
`);return n>=0?e.slice(0,n):e}var nD=class{full;major;minor;patch;constructor(i){this.full=i;let e=i.split(".");this.major=e[0],this.minor=e[1],this.patch=e.slice(2).join(".")}},s0=globalThis,MW=/^([1-9]|1[0-8])\./;function F6(t){return t.startsWith("0.")?!0:!MW.test(t)}var kW=3,TW="# sourceMappingURL=data:application/json;base64,",iD=class{file;sourcesContent=new Map;lines=[];lastCol0=0;hasMappings=!1;constructor(i=null){this.file=i}addSource(i,e=null){return this.sourcesContent.has(i)||this.sourcesContent.set(i,e),this}addLine(){return this.lines.push([]),this.lastCol0=0,this}addMapping(i,e,n,o){if(!this.currentLine)throw new Error("A line must be added before mappings can be added");if(e!=null&&!this.sourcesContent.has(e))throw new Error(`Unknown source file "${e}"`);if(i==null)throw new Error("The column in the generated code must be provided");if(i<this.lastCol0)throw new Error("Mapping should be added in output order");if(e&&(n==null||o==null))throw new Error("The source location must be provided when a source url is provided");return this.hasMappings=!0,this.lastCol0=i,this.currentLine.push({col0:i,sourceUrl:e,sourceLine0:n,sourceCol0:o}),this}get currentLine(){return this.lines.slice(-1)[0]}toJSON(){if(!this.hasMappings)return null;let i=new Map,e=[],n=[];Array.from(this.sourcesContent.keys()).forEach((p,h)=>{i.set(p,h),e.push(p),n.push(this.sourcesContent.get(p)||null)});let o="",r=0,a=0,c=0,m=0;return this.lines.forEach(p=>{r=0,o+=p.map(h=>{let g=KC(h.col0-r);return r=h.col0,h.sourceUrl!=null&&(g+=KC(i.get(h.sourceUrl)-a),a=i.get(h.sourceUrl),g+=KC(h.sourceLine0-c),c=h.sourceLine0,g+=KC(h.sourceCol0-m),m=h.sourceCol0),g}).join(","),o+=";"}),o=o.slice(0,-1),{file:this.file||"",version:kW,sourceRoot:"",sources:e,sourcesContent:n,mappings:o}}toJsComment(){return this.hasMappings?"//"+TW+EW(JSON.stringify(this,null,0)):""}};function EW(t){let i="",e=wW(t);for(let n=0;n<e.length;){let o=e[n++],r=n<e.length?e[n++]:null,a=n<e.length?e[n++]:null;i+=n0(o>>2),i+=n0((o&3)<<4|(r===null?0:r>>4)),i+=r===null?"=":n0((r&15)<<2|(a===null?0:a>>6)),i+=r===null||a===null?"=":n0(a&63)}return i}function KC(t){t=t<0?(-t<<1)+1:t<<1;let i="";do{let e=t&31;t=t>>5,t>0&&(e=e|32),i+=n0(e)}while(t>0);return i}var DW="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function n0(t){if(t<0||t>=64)throw new Error("Can only encode value in the range [0, 63]");return DW[t]}var PW=/'|\\|\n|\r|\$/g,IW=/^[$A-Z_][0-9A-Z_$]*$/i,oD=" ",kx=class{indent;partsLength=0;parts=[];srcSpans=[];constructor(i){this.indent=i}},AW=new Map([[ht.And,"&&"],[ht.Bigger,">"],[ht.BiggerEquals,">="],[ht.BitwiseOr,"|"],[ht.BitwiseAnd,"&"],[ht.Divide,"/"],[ht.Assign,"="],[ht.Equals,"=="],[ht.Identical,"==="],[ht.Lower,"<"],[ht.LowerEquals,"<="],[ht.Minus,"-"],[ht.Modulo,"%"],[ht.Exponentiation,"**"],[ht.Multiply,"*"],[ht.NotEquals,"!="],[ht.NotIdentical,"!=="],[ht.NullishCoalesce,"??"],[ht.Or,"||"],[ht.Plus,"+"],[ht.In,"in"],[ht.InstanceOf,"instanceof"],[ht.AdditionAssignment,"+="],[ht.SubtractionAssignment,"-="],[ht.MultiplicationAssignment,"*="],[ht.DivisionAssignment,"/="],[ht.RemainderAssignment,"%="],[ht.ExponentiationAssignment,"**="],[ht.AndAssignment,"&&="],[ht.OrAssignment,"||="],[ht.NullishCoalesceAssignment,"??="]]),rD=class t{_indent;static createRoot(){return new t(0)}_lines;constructor(i){this._indent=i,this._lines=[new kx(i)]}get _currentLine(){return this._lines[this._lines.length-1]}println(i,e=""){this.print(i||null,e,!0)}lineIsEmpty(){return this._currentLine.parts.length===0}lineLength(){return this._currentLine.indent*oD.length+this._currentLine.partsLength}print(i,e,n=!1){e.length>0&&(this._currentLine.parts.push(e),this._currentLine.partsLength+=e.length,this._currentLine.srcSpans.push(i&&i.sourceSpan||null)),n&&this._lines.push(new kx(this._indent))}removeEmptyLastLine(){this.lineIsEmpty()&&this._lines.pop()}incIndent(){this._indent++,this.lineIsEmpty()&&(this._currentLine.indent=this._indent)}decIndent(){this._indent--,this.lineIsEmpty()&&(this._currentLine.indent=this._indent)}toSource(){return this.sourceLines.map(i=>i.parts.length>0?WR(i.indent)+i.parts.join(""):"").join(`
|
||
`)}toSourceMapGenerator(i,e=0){let n=new iD(i),o=!1,r=()=>{o||(n.addSource(i," ").addMapping(0,i,0,0),o=!0)};for(let a=0;a<e;a++)n.addLine(),r();return this.sourceLines.forEach((a,c)=>{n.addLine();let m=a.srcSpans,p=a.parts,h=a.indent*oD.length,g=0;for(;g<m.length&&!m[g];)h+=p[g].length,g++;for(g<m.length&&c===0&&h===0?o=!0:r();g<m.length;){let M=m[g],C=M.start.file,_=M.start.line,w=M.start.col;for(n.addSource(C.url,C.content).addMapping(h,C.url,_,w),h+=p[g].length,g++;g<m.length&&(M===m[g]||!m[g]);)h+=p[g].length,g++}}),n}spanOf(i,e){let n=this._lines[i];if(n){let o=e-WR(n.indent).length;for(let r=0;r<n.parts.length;r++){let a=n.parts[r];if(a.length>o)return n.srcSpans[r];o-=a.length}}return null}get sourceLines(){return this._lines.length&&this._lines[this._lines.length-1].parts.length===0?this._lines.slice(0,-1):this._lines}},aD=class{_escapeDollarInStrings;lastIfCondition=null;constructor(i){this._escapeDollarInStrings=i}printLeadingComments(i,e){if(i.leadingComments!==void 0)for(let n of i.leadingComments)n instanceof yx?e.print(i,`/*${n.toString()}*/`,n.trailingNewline):n.multiline?e.print(i,`/* ${n.text} */`,n.trailingNewline):n.text.split(`
|
||
`).forEach(o=>{e.println(i,`// ${o}`)})}visitExpressionStmt(i,e){return this.printLeadingComments(i,e),i.expr.visitExpression(this,e),e.println(i,";"),null}visitReturnStmt(i,e){return this.printLeadingComments(i,e),e.print(i,"return "),i.value.visitExpression(this,e),e.println(i,";"),null}visitIfStmt(i,e){this.printLeadingComments(i,e),e.print(i,"if ("),this.lastIfCondition=i.condition,i.condition.visitExpression(this,e),this.lastIfCondition=null,e.print(i,") {");let n=i.falseCase!=null&&i.falseCase.length>0;return i.trueCase.length<=1&&!n?(e.print(i," "),this.visitAllStatements(i.trueCase,e),e.removeEmptyLastLine(),e.print(i," ")):(e.println(),e.incIndent(),this.visitAllStatements(i.trueCase,e),e.decIndent(),n&&(e.println(i,"} else {"),e.incIndent(),this.visitAllStatements(i.falseCase,e),e.decIndent())),e.println(i,"}"),null}visitInvokeFunctionExpr(i,e){let n=i.fn instanceof Nu;return n&&e.print(i.fn,"("),i.fn.visitExpression(this,e),n&&e.print(i.fn,")"),e.print(i,"("),this.visitAllExpressions(i.args,e,","),e.print(i,")"),null}visitTaggedTemplateLiteralExpr(i,e){return i.tag.visitExpression(this,e),i.template.visitExpression(this,e),null}visitTemplateLiteralExpr(i,e){e.print(i,"`");for(let n=0;n<i.elements.length;n++){i.elements[n].visitExpression(this,e);let o=n<i.expressions.length?i.expressions[n]:null;o!==null&&(e.print(o,"${"),o.visitExpression(this,e),e.print(o,"}"))}e.print(i,"`")}visitTemplateLiteralElementExpr(i,e){e.print(i,i.rawText)}visitWrappedNodeExpr(i,e){throw new Error("Abstract emitter cannot visit WrappedNodeExpr.")}visitTypeofExpr(i,e){e.print(i,"typeof "),i.expr.visitExpression(this,e)}visitVoidExpr(i,e){e.print(i,"void "),i.expr.visitExpression(this,e)}visitReadVarExpr(i,e){return e.print(i,i.name),null}visitInstantiateExpr(i,e){return e.print(i,"new "),i.classExpr.visitExpression(this,e),e.print(i,"("),this.visitAllExpressions(i.args,e,","),e.print(i,")"),null}visitLiteralExpr(i,e){let n=i.value;return typeof n=="string"?e.print(i,su(n,this._escapeDollarInStrings)):e.print(i,`${n}`),null}visitRegularExpressionLiteral(i,e){return e.print(i,`/${i.body}/${i.flags||""}`),null}visitLocalizedString(i,e){let n=i.serializeI18nHead();e.print(i,"$localize `"+n.raw);for(let o=1;o<i.messageParts.length;o++)e.print(i,"${"),i.expressions[o-1].visitExpression(this,e),e.print(i,`}${i.serializeI18nTemplatePart(o).raw}`);return e.print(i,"`"),null}visitConditionalExpr(i,e){return e.print(i,"("),i.condition.visitExpression(this,e),e.print(i,"? "),i.trueCase.visitExpression(this,e),e.print(i,": "),i.falseCase.visitExpression(this,e),e.print(i,")"),null}visitDynamicImportExpr(i,e){e.print(i,`import(${i.url})`)}visitNotExpr(i,e){return e.print(i,"!"),i.condition.visitExpression(this,e),null}visitUnaryOperatorExpr(i,e){let n;switch(i.operator){case g0.Plus:n="+";break;case g0.Minus:n="-";break;default:throw new Error(`Unknown operator ${i.operator}`)}let o=i!==this.lastIfCondition;return o&&e.print(i,"("),e.print(i,n),i.expr.visitExpression(this,e),o&&e.print(i,")"),null}visitBinaryOperatorExpr(i,e){let n=AW.get(i.operator);if(!n)throw new Error(`Unknown operator ${i.operator}`);let o=i!==this.lastIfCondition;return o&&e.print(i,"("),i.lhs.visitExpression(this,e),e.print(i,` ${n} `),i.rhs.visitExpression(this,e),o&&e.print(i,")"),null}visitReadPropExpr(i,e){return i.receiver.visitExpression(this,e),e.print(i,"."),e.print(i,i.name),null}visitReadKeyExpr(i,e){return i.receiver.visitExpression(this,e),e.print(i,"["),i.index.visitExpression(this,e),e.print(i,"]"),null}visitLiteralArrayExpr(i,e){return e.print(i,"["),this.visitAllExpressions(i.entries,e,","),e.print(i,"]"),null}visitLiteralMapExpr(i,e){return e.print(i,"{"),this.visitAllObjects(n=>{n instanceof Om?(e.print(i,"..."),n.expression.visitExpression(this,e)):(e.print(i,`${su(n.key,this._escapeDollarInStrings,n.quoted)}:`),n.value.visitExpression(this,e))},i.entries,e,","),e.print(i,"}"),null}visitCommaExpr(i,e){return e.print(i,"("),this.visitAllExpressions(i.parts,e,","),e.print(i,")"),null}visitParenthesizedExpr(i,e){i.expr.visitExpression(this,e)}visitSpreadElementExpr(i,e){e.print(i,"..."),i.expression.visitExpression(this,e)}visitAllExpressions(i,e,n){this.visitAllObjects(o=>o.visitExpression(this,e),i,e,n)}visitAllObjects(i,e,n,o){let r=!1;for(let a=0;a<e.length;a++)a>0&&(n.lineLength()>80?(n.print(null,o,!0),r||(n.incIndent(),n.incIndent(),r=!0)):n.print(null,o,!1)),i(e[a]);r&&(n.decIndent(),n.decIndent())}visitAllStatements(i,e){i.forEach(n=>n.visitStatement(this,e))}};function su(t,i,e=!0){if(t==null)return null;let n=t.replace(PW,(...r)=>r[0]=="$"?i?"\\$":"$":r[0]==`
|
||
`?"\\n":r[0]=="\r"?"\\r":`\\${r[0]}`);return e||!IW.test(n)?`'${n}'`:n}function WR(t){let i="";for(let e=0;e<t;e++)i+=oD;return i}function S1(t,i){if(i===0)return ga(t);let e=[];for(let n=0;n<i;n++)e.push(hs);return ga(t,void 0,e)}function OW(t,i){let e=su(i,!1,!1);return e!==i?`${t}[${e}]`:`${t}.${i}`}function NW(t){return RW("ngJitMode",t)}function RW(t,i){let e=new Cu({name:t,moduleName:null}),n=new Mi(ht.Identical,new rf(e),Ee("undefined")),o=new Mi(ht.Or,n,e,void 0,void 0);return new Mi(ht.And,o,i)}function Gr(t){let i=new gi(t);return{value:i,type:i}}function lu(t,i){let e=oo(t.map(n=>n.value));return i?Us([],e):e}function PP(t,i){return{expression:t,forwardRef:i}}function FW({expression:t,forwardRef:i}){switch(i){case 0:case 1:return t;case 2:return LW(t)}}function LW(t){return Zt(he.forwardRef).callFn([Us([],t)])}var Tx=(function(t){return t[t.Class=0]="Class",t[t.Function=1]="Function",t})(Tx||{});function ou(t){let i=si("__ngFactoryType__"),e=null,n=XR(t)?i:new Mi(ht.Or,i,t.type.value),o=null;t.deps!==null?t.deps!=="invalid"&&(o=new v0(n,qR(t.deps,t.target))):(e=si(`\u0275${t.name}_BaseFactory`),o=e.callFn([n]));let r=[],a=null;function c(p){let h=si("__ngConditionalFactory__");r.push(new qr(h.name,lf,ec));let g=o!==null?h.set(o).toStmt():Zt(he.invalidFactory).callFn([]).toStmt();return r.push(y1(i,[g],[h.set(p).toStmt()])),h}if(XR(t)){let p=qR(t.delegateDeps,t.target),h=new(t.delegateType===Tx.Class?v0:fs)(t.delegate,p);a=c(h)}else $W(t)?a=c(t.expression):a=o;if(a===null)r.push(Zt(he.invalidFactory).callFn([]).toStmt());else if(e!==null){let p=Zt(he.getInheritedFactory).callFn([t.type.value]),h=new Mi(ht.Or,e,e.set(p));r.push(new Ar(h.callFn([n])))}else r.push(new Ar(a));let m=Nm([new Ir(i.name,hs)],r,ec,void 0,`${t.name}_Factory`);return e!==null&&(m=Us([],[new qr(e.name),new Ar(m)]).callFn([],void 0,!0)),{expression:m,statements:[],type:BW(t)}}function BW(t){let i=t.deps!==null&&t.deps!=="invalid"?zW(t.deps):Rc;return ga(Zt(he.FactoryDeclaration,[S1(t.type.type,t.typeArgumentCount),i]))}function qR(t,i){return t.map((e,n)=>VW(e,i,n))}function VW(t,i,e){if(t.token===null)return Zt(he.invalidFactoryDep).callFn([Ee(e)]);if(t.attributeNameType===null){let n=0|(t.self?2:0)|(t.skipSelf?4:0)|(t.host?1:0)|(t.optional?8:0)|(i===Td.Pipe?16:0),o=n!==0||t.optional?Ee(n):null,r=[t.token];o&&r.push(o);let a=HW(i);return Zt(a).callFn(r)}else return Zt(he.injectAttribute).callFn([t.token])}function zW(t){let i=!1,e=t.map(n=>{let o=jW(n);return o!==null?(i=!0,o):Ee(null)});return i?ga(oo(e)):Rc}function jW(t){let i=[];return t.attributeNameType!==null&&i.push({key:"attribute",value:t.attributeNameType,quoted:!1}),t.optional&&i.push({key:"optional",value:Ee(!0),quoted:!1}),t.host&&i.push({key:"host",value:Ee(!0),quoted:!1}),t.self&&i.push({key:"self",value:Ee(!0),quoted:!1}),t.skipSelf&&i.push({key:"skipSelf",value:Ee(!0),quoted:!1}),i.length>0?gl(i):null}function XR(t){return t.delegateType!==void 0}function $W(t){return t.expression!==void 0}function HW(t){switch(t){case Td.Component:case Td.Directive:case Td.Pipe:return he.directiveInject;case Td.NgModule:case Td.Injectable:default:return he.inject}}var wu=class{start;end;constructor(i,e){this.start=i,this.end=e}toAbsolute(i){return new zs(i+this.start,i+this.end)}},ho=class{span;sourceSpan;constructor(i,e){this.span=i,this.sourceSpan=e}toString(){return"AST"}},S0=class extends ho{nameSpan;constructor(i,e,n){super(i,e),this.nameSpan=n}},Da=class extends ho{visit(i,e=null){return i.visitEmptyExpr?.(this,e)}},Bc=class extends ho{visit(i,e=null){return i.visitImplicitReceiver(this,e)}},w0=class extends ho{visit(i,e=null){return i.visitThisReceiver?.(this,e)}},cf=class extends ho{expressions;constructor(i,e,n){super(i,e),this.expressions=n}visit(i,e=null){return i.visitChain(this,e)}},Ex=class extends ho{condition;trueExp;falseExp;constructor(i,e,n,o,r){super(i,e),this.condition=n,this.trueExp=o,this.falseExp=r}visit(i,e=null){return i.visitConditional(this,e)}},Ac=class extends S0{receiver;name;constructor(i,e,n,o,r){super(i,e,n),this.receiver=o,this.name=r}visit(i,e=null){return i.visitPropertyRead(this,e)}},M0=class extends S0{receiver;name;constructor(i,e,n,o,r){super(i,e,n),this.receiver=o,this.name=r}visit(i,e=null){return i.visitSafePropertyRead(this,e)}},Mu=class extends ho{receiver;key;constructor(i,e,n,o){super(i,e),this.receiver=n,this.key=o}visit(i,e=null){return i.visitKeyedRead(this,e)}},k0=class extends ho{receiver;key;constructor(i,e,n,o){super(i,e),this.receiver=n,this.key=o}visit(i,e=null){return i.visitSafeKeyedRead(this,e)}},dx=(function(t){return t[t.ReferencedByName=0]="ReferencedByName",t[t.ReferencedDirectly=1]="ReferencedDirectly",t})(dx||{}),Dx=class extends S0{exp;name;args;type;constructor(i,e,n,o,r,a,c){super(i,e,c),this.exp=n,this.name=o,this.args=r,this.type=a}visit(i,e=null){return i.visitPipe(this,e)}},ds=class extends ho{value;constructor(i,e,n){super(i,e),this.value=n}visit(i,e=null){return i.visitLiteralPrimitive(this,e)}},T0=class extends ho{expressions;constructor(i,e,n){super(i,e),this.expressions=n}visit(i,e=null){return i.visitLiteralArray(this,e)}},Px=class extends ho{expression;constructor(i,e,n){super(i,e),this.expression=n}visit(i,e=null){return i.visitSpreadElement(this,e)}},ku=class extends ho{keys;values;constructor(i,e,n,o){super(i,e),this.keys=n,this.values=o}visit(i,e=null){return i.visitLiteralMap(this,e)}},hv=class extends ho{strings;expressions;constructor(i,e,n,o){super(i,e),this.strings=n,this.expressions=o}visit(i,e=null){return i.visitInterpolation(this,e)}},Ha=class extends ho{operation;left;right;constructor(i,e,n,o,r){super(i,e),this.operation=n,this.left=o,this.right=r}visit(i,e=null){return i.visitBinary(this,e)}static isAssignmentOperation(i){return i==="="||i==="+="||i==="-="||i==="*="||i==="/="||i==="%="||i==="**="||i==="&&="||i==="||="||i==="??="}},tf=class t extends Ha{operator;expr;left=null;right=null;operation=null;static createMinus(i,e,n){return new t(i,e,"-",n,"-",new ds(i,e,0),n)}static createPlus(i,e,n){return new t(i,e,"+",n,"-",n,new ds(i,e,0))}constructor(i,e,n,o,r,a,c){super(i,e,r,a,c),this.operator=n,this.expr=o}visit(i,e=null){return i.visitUnary!==void 0?i.visitUnary(this,e):i.visitBinary(this,e)}},E0=class extends ho{expression;constructor(i,e,n){super(i,e),this.expression=n}visit(i,e=null){return i.visitPrefixNot(this,e)}},D0=class extends ho{expression;constructor(i,e,n){super(i,e),this.expression=n}visit(i,e=null){return i.visitTypeofExpression(this,e)}},P0=class extends ho{expression;constructor(i,e,n){super(i,e),this.expression=n}visit(i,e=null){return i.visitVoidExpression(this,e)}},I0=class extends ho{expression;constructor(i,e,n){super(i,e),this.expression=n}visit(i,e=null){return i.visitNonNullAssert(this,e)}},df=class extends ho{receiver;args;argumentSpan;constructor(i,e,n,o,r){super(i,e),this.receiver=n,this.args=o,this.argumentSpan=r}visit(i,e=null){return i.visitCall(this,e)}},Ix=class extends ho{receiver;args;argumentSpan;constructor(i,e,n,o,r){super(i,e),this.receiver=n,this.args=o,this.argumentSpan=r}visit(i,e=null){return i.visitSafeCall(this,e)}},A0=class extends ho{tag;template;constructor(i,e,n,o){super(i,e),this.tag=n,this.template=o}visit(i,e){return i.visitTaggedTemplateLiteral(this,e)}},O0=class extends ho{elements;expressions;constructor(i,e,n,o){super(i,e),this.elements=n,this.expressions=o}visit(i,e){return i.visitTemplateLiteral(this,e)}},Ax=class extends ho{text;constructor(i,e,n){super(i,e),this.text=n}visit(i,e){return i.visitTemplateLiteralElement(this,e)}},N0=class extends ho{expression;constructor(i,e,n){super(i,e),this.expression=n}visit(i,e){return i.visitParenthesizedExpression(this,e)}},sD=class{name;span;sourceSpan;constructor(i,e,n){this.name=i,this.span=e,this.sourceSpan=n}},Ox=class extends ho{parameters;body;constructor(i,e,n,o){super(i,e),this.parameters=n,this.body=o}visit(i,e){return i.visitArrowFunction(this,e)}},Nx=class extends ho{body;flags;constructor(i,e,n,o){super(i,e),this.body=n,this.flags=o}visit(i,e){return i.visitRegularExpressionLiteral(this,e)}},zs=class{start;end;constructor(i,e){this.start=i,this.end=e}},ps=class extends ho{ast;source;location;errors;constructor(i,e,n,o,r){super(new wu(0,e===null?0:e.length),new zs(o,e===null?o:o+e.length)),this.ast=i,this.source=e,this.location=n,this.errors=r}visit(i,e=null){return i.visitASTWithSource?i.visitASTWithSource(this,e):this.ast.visit(i,e)}toString(){return`${this.source} in ${this.location}`}},R0=class{sourceSpan;key;value;constructor(i,e,n){this.sourceSpan=i,this.key=e,this.value=n}},lD=class{sourceSpan;key;value;constructor(i,e,n){this.sourceSpan=i,this.key=e,this.value=n}},mf=class{visit(i,e){i.visit(this,e)}visitUnary(i,e){this.visit(i.expr,e)}visitBinary(i,e){this.visit(i.left,e),this.visit(i.right,e)}visitChain(i,e){this.visitAll(i.expressions,e)}visitConditional(i,e){this.visit(i.condition,e),this.visit(i.trueExp,e),this.visit(i.falseExp,e)}visitPipe(i,e){this.visit(i.exp,e),this.visitAll(i.args,e)}visitImplicitReceiver(i,e){}visitThisReceiver(i,e){}visitInterpolation(i,e){this.visitAll(i.expressions,e)}visitKeyedRead(i,e){this.visit(i.receiver,e),this.visit(i.key,e)}visitLiteralArray(i,e){this.visitAll(i.expressions,e)}visitLiteralMap(i,e){this.visitAll(i.values,e)}visitLiteralPrimitive(i,e){}visitPrefixNot(i,e){this.visit(i.expression,e)}visitTypeofExpression(i,e){this.visit(i.expression,e)}visitVoidExpression(i,e){this.visit(i.expression,e)}visitNonNullAssert(i,e){this.visit(i.expression,e)}visitPropertyRead(i,e){this.visit(i.receiver,e)}visitSafePropertyRead(i,e){this.visit(i.receiver,e)}visitSafeKeyedRead(i,e){this.visit(i.receiver,e),this.visit(i.key,e)}visitCall(i,e){this.visit(i.receiver,e),this.visitAll(i.args,e)}visitSafeCall(i,e){this.visit(i.receiver,e),this.visitAll(i.args,e)}visitTemplateLiteral(i,e){for(let n=0;n<i.elements.length;n++){this.visit(i.elements[n],e);let o=n<i.expressions.length?i.expressions[n]:null;o!==null&&this.visit(o,e)}}visitTemplateLiteralElement(i,e){}visitTaggedTemplateLiteral(i,e){this.visit(i.tag,e),this.visit(i.template,e)}visitParenthesizedExpression(i,e){this.visit(i.expression,e)}visitArrowFunction(i,e){this.visit(i.body,e)}visitRegularExpressionLiteral(i,e){}visitSpreadElement(i,e){this.visit(i.expression,e)}visitEmptyExpr(i,e){}visitAll(i,e){for(let n of i)this.visit(n,e)}},Qh=class{name;expression;type;sourceSpan;keySpan;valueSpan;isLiteral;isLegacyAnimation;isAnimation;constructor(i,e,n,o,r,a){this.name=i,this.expression=e,this.type=n,this.sourceSpan=o,this.keySpan=r,this.valueSpan=a,this.isLiteral=this.type===Ec.LITERAL_ATTR,this.isLegacyAnimation=this.type===Ec.LEGACY_ANIMATION,this.isAnimation=this.type===Ec.ANIMATION}},Ec=(function(t){return t[t.DEFAULT=0]="DEFAULT",t[t.LITERAL_ATTR=1]="LITERAL_ATTR",t[t.LEGACY_ANIMATION=2]="LEGACY_ANIMATION",t[t.TWO_WAY=3]="TWO_WAY",t[t.ANIMATION=4]="ANIMATION",t})(Ec||{}),Xa=(function(t){return t[t.Regular=0]="Regular",t[t.LegacyAnimation=1]="LegacyAnimation",t[t.TwoWay=2]="TwoWay",t[t.Animation=3]="Animation",t})(Xa||{}),Rx=class{name;targetOrPhase;type;handler;sourceSpan;handlerSpan;keySpan;constructor(i,e,n,o,r,a,c){this.name=i,this.targetOrPhase=e,this.type=n,this.handler=o,this.sourceSpan=r,this.handlerSpan=a,this.keySpan=c}},cD=class{name;value;sourceSpan;keySpan;valueSpan;constructor(i,e,n,o,r){this.name=i,this.value=e,this.sourceSpan=n,this.keySpan=o,this.valueSpan=r}},Li=(function(t){return t[t.Property=0]="Property",t[t.Attribute=1]="Attribute",t[t.Class=2]="Class",t[t.Style=3]="Style",t[t.LegacyAnimation=4]="LegacyAnimation",t[t.TwoWay=5]="TwoWay",t[t.Animation=6]="Animation",t})(Li||{}),Fx=class{name;type;securityContext;value;unit;sourceSpan;keySpan;valueSpan;constructor(i,e,n,o,r,a,c,m){this.name=i,this.type=e,this.securityContext=n,this.value=o,this.unit=r,this.sourceSpan=a,this.keySpan=c,this.valueSpan=m}},Dc=(function(t){return t[t.RAW_TEXT=0]="RAW_TEXT",t[t.ESCAPABLE_RAW_TEXT=1]="ESCAPABLE_RAW_TEXT",t[t.PARSABLE_DATA=2]="PARSABLE_DATA",t})(Dc||{});function oc(t,i=!0){if(t[0]!=":")return[null,t];let e=t.indexOf(":",1);if(e===-1){if(i)throw new Error(`Unsupported format "${t}" expecting ":namespace:name"`);return[null,t]}return[t.slice(1,e),t.slice(e+1)]}function QR(t){return oc(t)[1]==="ng-container"}function dD(t){return oc(t)[1]==="ng-content"}function UW(t){return oc(t)[1]==="ng-template"}function mD(t){return t===null?null:oc(t)[0]}function mx(t,i){return t?`:${t}:${i}`:i}var w1=class{value;sourceSpan;constructor(i,e){this.value=i,this.sourceSpan=e}visit(i){throw new Error("visit() not implemented for Comment")}},cu=class{value;sourceSpan;constructor(i,e){this.value=i,this.sourceSpan=e}visit(i){return i.visitText(this)}},pf=class{value;sourceSpan;i18n;constructor(i,e,n){this.value=i,this.sourceSpan=e,this.i18n=n}visit(i){return i.visitBoundText(this)}},uf=class{name;value;sourceSpan;keySpan;valueSpan;i18n;constructor(i,e,n,o,r,a){this.name=i,this.value=e,this.sourceSpan=n,this.keySpan=o,this.valueSpan=r,this.i18n=a}visit(i){return i.visitTextAttribute(this)}},pD=class t{name;type;securityContext;value;unit;sourceSpan;keySpan;valueSpan;i18n;constructor(i,e,n,o,r,a,c,m,p){this.name=i,this.type=e,this.securityContext=n,this.value=o,this.unit=r,this.sourceSpan=a,this.keySpan=c,this.valueSpan=m,this.i18n=p}static fromBoundElementProperty(i,e){if(i.keySpan===void 0)throw new Error(`Unexpected state: keySpan must be defined for bound attributes but was not for ${i.name}: ${i.sourceSpan}`);return new t(i.name,i.type,i.securityContext,i.value,i.unit,i.sourceSpan,i.keySpan,i.valueSpan,e)}visit(i){return i.visitBoundAttribute(this)}},uD=class t{name;type;handler;target;phase;sourceSpan;handlerSpan;keySpan;constructor(i,e,n,o,r,a,c,m){this.name=i,this.type=e,this.handler=n,this.target=o,this.phase=r,this.sourceSpan=a,this.handlerSpan=c,this.keySpan=m}static fromParsedEvent(i){let e=i.type===Xa.Regular?i.targetOrPhase:null,n=i.type===Xa.LegacyAnimation?i.targetOrPhase:null;if(i.keySpan===void 0)throw new Error(`Unexpected state: keySpan must be defined for bound event but was not for ${i.name}: ${i.sourceSpan}`);return new t(i.name,i.type,i.handler,e,n,i.sourceSpan,i.handlerSpan,i.keySpan)}visit(i){return i.visitBoundEvent(this)}},Vc=class{name;attributes;inputs;outputs;directives;children;references;isSelfClosing;sourceSpan;startSourceSpan;endSourceSpan;isVoid;i18n;constructor(i,e,n,o,r,a,c,m,p,h,g,M,C){this.name=i,this.attributes=e,this.inputs=n,this.outputs=o,this.directives=r,this.children=a,this.references=c,this.isSelfClosing=m,this.sourceSpan=p,this.startSourceSpan=h,this.endSourceSpan=g,this.isVoid=M,this.i18n=C}visit(i){return i.visitElement(this)}},zc=class{nameSpan;sourceSpan;prefetchSpan;whenOrOnSourceSpan;hydrateSpan;constructor(i,e,n,o,r){this.nameSpan=i,this.sourceSpan=e,this.prefetchSpan=n,this.whenOrOnSourceSpan=o,this.hydrateSpan=r}visit(i){return i.visitDeferredTrigger(this)}},Lx=class extends zc{value;constructor(i,e,n,o,r){super(null,e,n,o,r),this.value=i}},hD=class extends zc{},fD=class extends zc{},gD=class extends zc{},Bx=class extends zc{reference;constructor(i,e,n,o,r,a){super(e,n,o,r,a),this.reference=i}},_D=class extends zc{delay;constructor(i,e,n,o,r,a){super(e,n,o,r,a),this.delay=i}},Vx=class extends zc{reference;constructor(i,e,n,o,r,a){super(e,n,o,r,a),this.reference=i}},F0=class extends zc{reference;options;constructor(i,e,n,o,r,a,c){super(n,o,r,a,c),this.reference=i,this.options=e}},gs=class{nameSpan;sourceSpan;startSourceSpan;endSourceSpan;constructor(i,e,n,o){this.nameSpan=i,this.sourceSpan=e,this.startSourceSpan=n,this.endSourceSpan=o}},L0=class extends gs{children;minimumTime;i18n;constructor(i,e,n,o,r,a,c){super(n,o,r,a),this.children=i,this.minimumTime=e,this.i18n=c}visit(i){return i.visitDeferredBlockPlaceholder(this)}},B0=class extends gs{children;afterTime;minimumTime;i18n;constructor(i,e,n,o,r,a,c,m){super(o,r,a,c),this.children=i,this.afterTime=e,this.minimumTime=n,this.i18n=m}visit(i){return i.visitDeferredBlockLoading(this)}},V0=class extends gs{children;i18n;constructor(i,e,n,o,r,a){super(e,n,o,r),this.children=i,this.i18n=a}visit(i){return i.visitDeferredBlockError(this)}},Tu=class extends gs{children;placeholder;loading;error;mainBlockSpan;i18n;triggers;prefetchTriggers;hydrateTriggers;definedTriggers;definedPrefetchTriggers;definedHydrateTriggers;constructor(i,e,n,o,r,a,c,m,p,h,g,M,C){super(m,p,g,M),this.children=i,this.placeholder=r,this.loading=a,this.error=c,this.mainBlockSpan=h,this.i18n=C,this.triggers=e,this.prefetchTriggers=n,this.hydrateTriggers=o,this.definedTriggers=Object.keys(e),this.definedPrefetchTriggers=Object.keys(n),this.definedHydrateTriggers=Object.keys(o)}visit(i){return i.visitDeferredBlock(this)}visitAll(i){this.visitTriggers(this.definedHydrateTriggers,this.hydrateTriggers,i),this.visitTriggers(this.definedTriggers,this.triggers,i),this.visitTriggers(this.definedPrefetchTriggers,this.prefetchTriggers,i),DE(i,this.children);let e=[this.placeholder,this.loading,this.error].filter(n=>n!==null);DE(i,e)}visitTriggers(i,e,n){DE(n,i.map(o=>e[o]))}},zx=class extends gs{expression;groups;unknownBlocks;exhaustiveCheck;constructor(i,e,n,o,r,a,c,m){super(m,r,a,c),this.expression=i,this.groups=e,this.unknownBlocks=n,this.exhaustiveCheck=o}visit(i){return i.visitSwitchBlock(this)}},vD=class extends gs{expression;constructor(i,e,n,o,r){super(r,e,n,o),this.expression=i}visit(i){return i.visitSwitchBlockCase(this)}},z0=class extends gs{cases;children;i18n;constructor(i,e,n,o,r,a,c){super(a,n,o,r),this.cases=i,this.children=e,this.i18n=c}visit(i){return i.visitSwitchBlockCaseGroup(this)}},bD=class extends gs{constructor(i,e,n,o){super(o,i,e,n)}visit(i){return i.visitSwitchExhaustiveCheck(this)}},hf=class extends gs{item;expression;trackBy;trackKeywordSpan;contextVariables;children;empty;mainBlockSpan;i18n;constructor(i,e,n,o,r,a,c,m,p,h,g,M,C){super(M,m,h,g),this.item=i,this.expression=e,this.trackBy=n,this.trackKeywordSpan=o,this.contextVariables=r,this.children=a,this.empty=c,this.mainBlockSpan=p,this.i18n=C}visit(i){return i.visitForLoopBlock(this)}},j0=class extends gs{children;i18n;constructor(i,e,n,o,r,a){super(r,e,n,o),this.children=i,this.i18n=a}visit(i){return i.visitForLoopBlockEmpty(this)}},jx=class extends gs{branches;constructor(i,e,n,o,r){super(r,e,n,o),this.branches=i}visit(i){return i.visitIfBlock(this)}},pu=class extends gs{expression;children;expressionAlias;i18n;constructor(i,e,n,o,r,a,c,m){super(c,o,r,a),this.expression=i,this.children=e,this.expressionAlias=n,this.i18n=m}visit(i){return i.visitIfBlockBranch(this)}},$x=class{name;sourceSpan;nameSpan;constructor(i,e,n){this.name=i,this.sourceSpan=e,this.nameSpan=n}visit(i){return i.visitUnknownBlock(this)}},IP=class{name;value;sourceSpan;nameSpan;valueSpan;constructor(i,e,n,o,r){this.name=i,this.value=e,this.sourceSpan=n,this.nameSpan=o,this.valueSpan=r}visit(i){return i.visitLetDeclaration(this)}},l0=class{componentName;tagName;fullName;attributes;inputs;outputs;directives;children;references;isSelfClosing;sourceSpan;startSourceSpan;endSourceSpan;i18n;constructor(i,e,n,o,r,a,c,m,p,h,g,M,C,_){this.componentName=i,this.tagName=e,this.fullName=n,this.attributes=o,this.inputs=r,this.outputs=a,this.directives=c,this.children=m,this.references=p,this.isSelfClosing=h,this.sourceSpan=g,this.startSourceSpan=M,this.endSourceSpan=C,this.i18n=_}visit(i){return i.visitComponent(this)}},L6=class{name;attributes;inputs;outputs;references;sourceSpan;startSourceSpan;endSourceSpan;i18n;constructor(i,e,n,o,r,a,c,m,p){this.name=i,this.attributes=e,this.inputs=n,this.outputs=o,this.references=r,this.sourceSpan=a,this.startSourceSpan=c,this.endSourceSpan=m,this.i18n=p}visit(i){return i.visitDirective(this)}},js=class{tagName;attributes;inputs;outputs;directives;templateAttrs;children;references;variables;isSelfClosing;sourceSpan;startSourceSpan;endSourceSpan;i18n;constructor(i,e,n,o,r,a,c,m,p,h,g,M,C,_){this.tagName=i,this.attributes=e,this.inputs=n,this.outputs=o,this.directives=r,this.templateAttrs=a,this.children=c,this.references=m,this.variables=p,this.isSelfClosing=h,this.sourceSpan=g,this.startSourceSpan=M,this.endSourceSpan=C,this.i18n=_}visit(i){return i.visitTemplate(this)}},ff=class{selector;attributes;children;isSelfClosing;sourceSpan;startSourceSpan;endSourceSpan;i18n;name="ng-content";constructor(i,e,n,o,r,a,c,m){this.selector=i,this.attributes=e,this.children=n,this.isSelfClosing=o,this.sourceSpan=r,this.startSourceSpan=a,this.endSourceSpan=c,this.i18n=m}visit(i){return i.visitContent(this)}},Rm=class{name;value;sourceSpan;keySpan;valueSpan;constructor(i,e,n,o,r){this.name=i,this.value=e,this.sourceSpan=n,this.keySpan=o,this.valueSpan=r}visit(i){return i.visitVariable(this)}},$0=class{name;value;sourceSpan;keySpan;valueSpan;constructor(i,e,n,o,r){this.name=i,this.value=e,this.sourceSpan=n,this.keySpan=o,this.valueSpan=r}visit(i){return i.visitReference(this)}},B6=class{vars;placeholders;sourceSpan;i18n;constructor(i,e,n,o){this.vars=i,this.placeholders=e,this.sourceSpan=n,this.i18n=o}visit(i){return i.visitIcu(this)}},H0=class{tagNames;bindings;listeners;sourceSpan;constructor(i,e,n,o){if(this.tagNames=i,this.bindings=e,this.listeners=n,this.sourceSpan=o,i.length===0)throw new Error("HostElement must have at least one tag name.")}visit(){throw new Error("HostElement cannot be visited")}};function DE(t,i){let e=[];if(t.visit)for(let n of i)t.visit(n);else for(let n of i){let o=n.visit(t);o&&e.push(o)}return e}var Qa=class{nodes;placeholders;placeholderToMessage;meaning;description;customId;sources;id;legacyIds=[];messageString;constructor(i,e,n,o,r,a){this.nodes=i,this.placeholders=e,this.placeholderToMessage=n,this.meaning=o,this.description=r,this.customId=a,this.id=this.customId,this.messageString=GW(this.nodes),i.length?this.sources=[{filePath:i[0].sourceSpan.start.file.url,startLine:i[0].sourceSpan.start.line+1,startCol:i[0].sourceSpan.start.col+1,endLine:i[i.length-1].sourceSpan.end.line+1,endCol:i[0].sourceSpan.start.col+1}]:this.sources=[]}},W_=class{value;sourceSpan;constructor(i,e){this.value=i,this.sourceSpan=e}visit(i,e){return i.visitText(this,e)}},Pd=class{children;sourceSpan;constructor(i,e){this.children=i,this.sourceSpan=e}visit(i,e){return i.visitContainer(this,e)}},Hx=class{expression;type;cases;sourceSpan;expressionPlaceholder;constructor(i,e,n,o,r){this.expression=i,this.type=e,this.cases=n,this.sourceSpan=o,this.expressionPlaceholder=r}visit(i,e){return i.visitIcu(this,e)}},Fm=class{tag;attrs;startName;closeName;children;isVoid;sourceSpan;startSourceSpan;endSourceSpan;constructor(i,e,n,o,r,a,c,m,p){this.tag=i,this.attrs=e,this.startName=n,this.closeName=o,this.children=r,this.isVoid=a,this.sourceSpan=c,this.startSourceSpan=m,this.endSourceSpan=p}visit(i,e){return i.visitTagPlaceholder(this,e)}},U0=class{value;name;sourceSpan;constructor(i,e,n){this.value=i,this.name=e,this.sourceSpan=n}visit(i,e){return i.visitPlaceholder(this,e)}},gf=class{value;name;sourceSpan;previousMessage;constructor(i,e,n){this.value=i,this.name=e,this.sourceSpan=n}visit(i,e){return i.visitIcuPlaceholder(this,e)}},Lm=class{name;parameters;startName;closeName;children;sourceSpan;startSourceSpan;endSourceSpan;constructor(i,e,n,o,r,a,c,m){this.name=i,this.parameters=e,this.startName=n,this.closeName=o,this.children=r,this.sourceSpan=a,this.startSourceSpan=c,this.endSourceSpan=m}visit(i,e){return i.visitBlockPlaceholder(this,e)}};function GW(t){let i=new CD;return t.map(n=>n.visit(i)).join("")}var CD=class{visitText(i){return i.value}visitContainer(i){return i.children.map(e=>e.visit(this)).join("")}visitIcu(i){let e=Object.keys(i.cases).map(n=>`${n} {${i.cases[n].visit(this)}}`);return`{${i.expressionPlaceholder}, ${i.type}, ${e.join(" ")}}`}visitTagPlaceholder(i){let e=i.children.map(n=>n.visit(this)).join("");return`{$${i.startName}}${e}{$${i.closeName}}`}visitPlaceholder(i){return`{$${i.name}}`}visitIcuPlaceholder(i){return`{$${i.name}}`}visitBlockPlaceholder(i){let e=i.children.map(n=>n.visit(this)).join("");return`{$${i.startName}}${e}{$${i.closeName}}`}};var WW=class{visitTag(i){let e=this._serializeAttributes(i.attrs);if(i.children.length==0)return`<${i.name}${e}/>`;let n=i.children.map(o=>o.visit(this));return`<${i.name}${e}>${n.join("")}</${i.name}>`}visitText(i){return i.value}visitDeclaration(i){return`<?xml${this._serializeAttributes(i.attrs)} ?>`}_serializeAttributes(i){let e=Object.keys(i).map(n=>`${n}="${i[n]}"`).join(" ");return e.length>0?" "+e:""}visitDoctype(i){return`<!DOCTYPE ${i.rootTag} [
|
||
${i.dtd}
|
||
]>`}},TFe=new WW;function qW(t){return t.toUpperCase().replace(/[^A-Z0-9_]/g,"_")}var V6="i18n",xD="i18n-",XW="VAR_";function z6(t){return t===V6||t.startsWith(xD)}function QW(t){return t.attrs.some(i=>z6(i.name))}function j6(t){return t.nodes[0]}function AP(t={},i){let e={};return t&&Object.keys(t).length&&Object.keys(t).forEach(n=>e[fv(n,i)]=t[n]),e}function fv(t,i=!0){let e=qW(t);if(!i)return e;let n=e.split("_");if(n.length===1)return t.toLowerCase();let o;/^\d+$/.test(n[n.length-1])&&(o=n.pop());let r=n.shift().toLowerCase();return n.length&&(r+=n.map(a=>a.charAt(0).toUpperCase()+a.slice(1).toLowerCase()).join("")),o?`${r}_${o}`:r}var YW=/[-.]/,OP="_t",Gs="ctx",wf="rf";function $6(t,i){let e=null;return()=>(e||(t(new qr(OP,void 0,hs)),e=si(i)),e)}function Yh(t){return Array.isArray(t)?oo(t.map(Yh)):Ee(t,ec)}function YR(t,i){let e=Object.getOwnPropertyNames(t);return e.length===0?null:gl(e.map(n=>{let o=t[n],r,a,c,m;if(typeof o=="string")r=n,c=n,a=o,m=Yh(a);else{c=n,r=o.classPropertyName,a=o.bindingPropertyName;let p=a!==r,h=o.transformFunction!==null,g=t0.None;if(o.isSignal&&(g|=t0.SignalBased),h&&(g|=t0.HasDecoratorInputTransform),i&&(p||h||g!==t0.None)){let M=[Ee(g),Yh(a)];(p||h)&&(M.push(Yh(r)),h&&M.push(o.transformFunction)),m=oo(M)}else m=Yh(a)}return{key:c,quoted:YW.test(c),value:m}}))}var Bm=class{values=[];set(i,e){if(e){let n=this.values.find(o=>o.key===i);n?n.value=e:this.values.push({key:i,value:e,quoted:!1})}}toLiteralMap(){return gl(this.values)}};function KW(t){let i=t instanceof Vc?t.name:"ng-template",e=ZW(t),n=new of,o=oc(i)[1];return n.setElement(o),Object.getOwnPropertyNames(e).forEach(r=>{let a=oc(r)[1],c=e[r];n.addAttribute(a,c),r.toLowerCase()==="class"&&c.trim().split(/\s+/).forEach(p=>n.addClassName(p))}),n}function ZW(t){let i={};return t instanceof js&&t.tagName!=="ng-template"?t.templateAttrs.forEach(e=>i[e.name]=""):(t.attributes.forEach(e=>{z6(e.name)||(i[e.name]=e.value)}),t.inputs.forEach(e=>{(e.type===Li.Property||e.type===Li.TwoWay)&&(i[e.name]="")}),t.outputs.forEach(e=>{i[e.name]=""})),i}function KR(t,i){let e=null,n={name:t.name,type:t.type,typeArgumentCount:t.typeArgumentCount,deps:[],target:Td.Injectable};if(t.useClass!==void 0){let c=t.useClass.expression.isEquivalent(t.type.value),m;t.deps!==void 0&&(m=t.deps),m!==void 0?e=ou(tt(H({},n),{delegate:t.useClass.expression,delegateDeps:m,delegateType:Tx.Class})):c?e=ou(n):e={statements:[],expression:ZR(t.type.value,t.useClass.expression,i)}}else t.useFactory!==void 0?t.deps!==void 0?e=ou(tt(H({},n),{delegate:t.useFactory,delegateDeps:t.deps||[],delegateType:Tx.Function})):e={statements:[],expression:Us([],t.useFactory.callFn([]))}:t.useValue!==void 0?e=ou(tt(H({},n),{expression:t.useValue.expression})):t.useExisting!==void 0?e=ou(tt(H({},n),{expression:Zt(he.inject).callFn([t.useExisting.expression])})):e={statements:[],expression:ZR(t.type.value,t.type.value,i)};let o=t.type.value,r=new Bm;return r.set("token",o),r.set("factory",e.expression),t.providedIn.expression.value!==null&&r.set("providedIn",FW(t.providedIn)),{expression:Zt(he.\u0275\u0275defineInjectable).callFn([r.toLiteralMap()],void 0,!0),type:JW(t),statements:e.statements}}function JW(t){return new fl(Zt(he.InjectableDeclaration,[S1(t.type.type,t.typeArgumentCount)]))}function ZR(t,i,e){if(t.node===i.node)return i.prop("\u0275fac");if(!e)return JR(i);let n=Zt(he.resolveForwardRef).callFn([i]);return JR(n)}function JR(t){let i=new Ir("__ngFactoryType__",hs);return Us([i],t.prop("\u0275fac").callFn([si(i.name)]))}var ia=0,eq=8,NP=9,uu=10,H6=11,U6=12,RP=13,G6=32,yD=33,G0=34,W6=35,M1=36,tq=37,Ux=38,W0=39,qa=40,Pr=41,eF=42,q6=43,Pa=44,Gx=45,nu=46,ll=47,Pc=58,ms=59,nf=60,ta=61,Bs=62,tF=63,FP=48,nq=55,X6=57,Um=65,iq=69,oq=70,rq=88,Mf=90,Oc=91,hu=92,Ed=93,aq=94,Gm=95,Eu=97,sq=98,lq=101,LP=102,Q6=110,Y6=114,K6=116,Z6=117,J6=118,eL=120,gv=122,ml=123,nF=124,Ga=125,tL=160,jh=64,SD=96;function q0(t){return t>=NP&&t<=G6||t==tL}function cl(t){return FP<=t&&t<=X6}function Vm(t){return t>=Eu&&t<=gv||t>=Um&&t<=Mf}function cq(t){return t>=Eu&&t<=LP||t>=Um&&t<=oq||cl(t)}function Wx(t){return t===uu||t===RP}function iF(t){return FP<=t&&t<=nq}function c0(t){return t===W0||t===G0||t===SD}var X0=class t{file;offset;line;col;constructor(i,e,n,o){this.file=i,this.offset=e,this.line=n,this.col=o}toString(){return this.offset!=null?`${this.file.url}@${this.line}:${this.col}`:this.file.url}moveBy(i){let e=this.file.content,n=e.length,o=this.offset,r=this.line,a=this.col;for(;o>0&&i<0;)if(o--,i++,e.charCodeAt(o)==uu){r--;let m=e.substring(0,o-1).lastIndexOf(String.fromCharCode(uu));a=m>0?o-m:o}else a--;for(;o<n&&i>0;){let c=e.charCodeAt(o);o++,i--,c==uu?(r++,a=0):a++}return new t(this.file,o,r,a)}getContext(i,e){let n=this.file.content,o=this.offset;if(o!=null){o>n.length-1&&(o=n.length-1);let r=o,a=0,c=0;for(;a<i&&o>0&&(o--,a++,!(n[o]==`
|
||
`&&++c==e)););for(a=0,c=0;a<i&&r<n.length-1&&(r++,a++,!(n[r]==`
|
||
`&&++c==e)););return{before:n.substring(o,this.offset),after:n.substring(this.offset,r+1)}}return null}},qx=class{content;url;constructor(i,e){this.content=i,this.url=e}},bn=class{start;end;fullStart;details;constructor(i,e,n=i,o=null){this.start=i,this.end=e,this.fullStart=n,this.details=o}toString(){return this.start.file.content.substring(this.start.offset,this.end.offset)}},Pm=(function(t){return t[t.WARNING=0]="WARNING",t[t.ERROR=1]="ERROR",t})(Pm||{}),mn=class extends Error{span;msg;level;relatedError;constructor(i,e,n=Pm.ERROR,o){super(e),this.span=i,this.msg=e,this.level=n,this.relatedError=o,Object.setPrototypeOf(this,new.target.prototype)}contextualMessage(){let i=this.span.start.getContext(100,3);return i?`${this.msg} ("${i.before}[${Pm[this.level]} ->]${i.after}")`:this.msg}toString(){let i=this.span.details?`, ${this.span.details}`:"";return`${this.contextualMessage()}: ${this.span.start}${i}`}};function dq(t,i,e){let n=`in ${t} ${i} in ${e}`,o=new qx("",n);return new bn(new X0(o,-1,-1,-1),new X0(o,-1,-1,-1))}var mq=0;function pq(t){if(!t||!t.reference)return null;let i=t.reference;if(i.__anonymousType)return i.__anonymousType;if(i.__forward_ref__)return"__forward_ref__";let e=R6(i);return e.indexOf("(")>=0?(e=`anonymous_${mq++}`,i.__anonymousType=e):e=ru(e),e}function ru(t){return t.replace(/\W/g,"_")}var oF='(this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e})',wD=class extends aD{constructor(){super(!1)}visitWrappedNodeExpr(i,e){throw new Error("Cannot emit a WrappedNodeExpr in Javascript.")}visitDeclareVarStmt(i,e){return e.print(i,`var ${i.name}`),i.value&&(e.print(i," = "),i.value.visitExpression(this,e)),e.println(i,";"),null}visitTaggedTemplateLiteralExpr(i,e){let n=i.template.elements;return i.tag.visitExpression(this,e),e.print(i,`(${oF}(`),e.print(i,`[${n.map(o=>su(o.text,!1)).join(", ")}], `),e.print(i,`[${n.map(o=>su(o.rawText,!1)).join(", ")}])`),i.template.expressions.forEach(o=>{e.print(i,", "),o.visitExpression(this,e)}),e.print(i,")"),null}visitTemplateLiteralExpr(i,e){e.print(i,"`");for(let n=0;n<i.elements.length;n++){i.elements[n].visitExpression(this,e);let o=n<i.expressions.length?i.expressions[n]:null;o!==null&&(e.print(o,"${"),o.visitExpression(this,e),e.print(o,"}"))}e.print(i,"`")}visitTemplateLiteralElementExpr(i,e){return e.print(i,i.rawText),null}visitFunctionExpr(i,e){return e.print(i,`function${i.name?" "+i.name:""}(`),this._visitParams(i.params,e),e.println(i,") {"),e.incIndent(),this.visitAllStatements(i.statements,e),e.decIndent(),e.print(i,"}"),null}visitArrowFunctionExpr(i,e){if(e.print(i,"("),this._visitParams(i.params,e),e.print(i,") =>"),Array.isArray(i.body))e.println(i,"{"),e.incIndent(),this.visitAllStatements(i.body,e),e.decIndent(),e.print(i,"}");else{let n=i.body instanceof ic;n&&e.print(i,"("),i.body.visitExpression(this,e),n&&e.print(i,")")}return null}visitDeclareFunctionStmt(i,e){return e.print(i,`function ${i.name}(`),this._visitParams(i.params,e),e.println(i,") {"),e.incIndent(),this.visitAllStatements(i.statements,e),e.decIndent(),e.println(i,"}"),null}visitLocalizedString(i,e){e.print(i,`$localize(${oF}(`);let n=[i.serializeI18nHead()];for(let o=1;o<i.messageParts.length;o++)n.push(i.serializeI18nTemplatePart(o));return e.print(i,`[${n.map(o=>su(o.cooked,!1)).join(", ")}], `),e.print(i,`[${n.map(o=>su(o.raw,!1)).join(", ")}])`),i.expressions.forEach(o=>{e.print(i,", "),o.visitExpression(this,e)}),e.print(i,")"),null}_visitParams(i,e){this.visitAllObjects(n=>e.print(null,n.name),i,e,",")}},ZC;function uq(){if(ZC===void 0){let t=s0.trustedTypes;if(ZC=null,t)try{ZC=t.createPolicy("angular#unsafe-jit",{createScript:i=>i})}catch{}}return ZC}function hq(t){return uq()?.createScript(t)||t}function rF(...t){if(!s0.trustedTypes)return new Function(...t);let i=t.slice(0,-1).join(","),e=t[t.length-1],n=`(function anonymous(${i}
|
||
) { ${e}
|
||
})`,o=s0.eval(hq(n));return o.bind===void 0?new Function(...t):(o.toString=()=>n,o.bind(s0))}var MD=class{evaluateStatements(i,e,n,o){let r=new kD(n),a=rD.createRoot();return e.length>0&&!fq(e[0])&&(e=[Ee("use strict").toStmt(),...e]),r.visitAllStatements(e,a),r.createReturnStmt(a),this.evaluateCode(i,a,r.getArgs(),o)}evaluateCode(i,e,n,o){let r=`"use strict";${e.toSource()}
|
||
//# sourceURL=${i}`,a=[],c=[];for(let p in n)c.push(n[p]),a.push(p);if(o){let p=rF(...a.concat("return null;")).toString(),h=p.slice(0,p.indexOf("return null;")).split(`
|
||
`).length-1;r+=`
|
||
${e.toSourceMapGenerator(i,h).toJsComment()}`}let m=rF(...a.concat(r));return this.executeFunction(m,c)}executeFunction(i,e){return i(...e)}},kD=class extends wD{refResolver;_evalArgNames=[];_evalArgValues=[];_evalExportedVars=[];constructor(i){super(),this.refResolver=i}createReturnStmt(i){new Ar(new ic(this._evalExportedVars.map(n=>new sf(n,si(n),!1)))).visitStatement(this,i)}getArgs(){let i={};for(let e=0;e<this._evalArgNames.length;e++)i[this._evalArgNames[e]]=this._evalArgValues[e];return i}visitExternalExpr(i,e){return this._emitReferenceToExternal(i,this.refResolver.resolveExternalReference(i.value),e),null}visitWrappedNodeExpr(i,e){return this._emitReferenceToExternal(i,i.node,e),null}visitDeclareVarStmt(i,e){return i.hasModifier(fa.Exported)&&this._evalExportedVars.push(i.name),super.visitDeclareVarStmt(i,e)}visitDeclareFunctionStmt(i,e){return i.hasModifier(fa.Exported)&&this._evalExportedVars.push(i.name),super.visitDeclareFunctionStmt(i,e)}_emitReferenceToExternal(i,e,n){let o=this._evalArgValues.indexOf(e);if(o===-1){o=this._evalArgValues.length,this._evalArgValues.push(e);let r=pq({reference:e})||"val";this._evalArgNames.push(`jit_${r}_${o}`)}n.print(i,this._evalArgNames[o])}};function fq(t){return t.isEquivalent(Ee("use strict").toStmt())}function aF(t){let i=new Bm;t.providers!==null&&i.set("providers",t.providers),t.imports.length>0&&i.set("imports",oo(t.imports));let e=Zt(he.defineInjector).callFn([i.toLiteralMap()],void 0,!0),n=gq(t);return{expression:e,type:n,statements:[]}}function gq(t){return new fl(Zt(he.InjectorDeclaration,[new fl(t.type.type)]))}var TD=class{context;constructor(i){this.context=i}resolveExternalReference(i){if(i.moduleName!=="@angular/core")throw new Error(`Cannot resolve external reference to ${i.moduleName}, only references to @angular/core are supported.`);if(!this.context.hasOwnProperty(i.name))throw new Error(`No value provided for @angular/core symbol '${i.name}'.`);return this.context[i.name]}},Xx=(function(t){return t[t.Inline=0]="Inline",t[t.SideEffect=1]="SideEffect",t[t.Omit=2]="Omit",t})(Xx||{}),Im=(function(t){return t[t.Global=0]="Global",t[t.Local=1]="Local",t})(Im||{});function _q(t){let i=[],e=new Bm;if(e.set("type",t.type.value),t.kind===Im.Global&&t.bootstrap.length>0&&e.set("bootstrap",lu(t.bootstrap,t.containsForwardDecls)),t.selectorScopeMode===Xx.Inline)t.declarations.length>0&&e.set("declarations",lu(t.declarations,t.containsForwardDecls)),t.imports.length>0&&e.set("imports",lu(t.imports,t.containsForwardDecls)),t.exports.length>0&&e.set("exports",lu(t.exports,t.containsForwardDecls));else if(t.selectorScopeMode===Xx.SideEffect){let r=Cq(t);r!==null&&i.push(r)}t.schemas!==null&&t.schemas.length>0&&e.set("schemas",oo(t.schemas.map(r=>r.value))),t.id!==null&&(e.set("id",t.id),i.push(Zt(he.registerNgModuleType).callFn([t.type.value,t.id]).toStmt()));let n=Zt(he.defineNgModule).callFn([e.toLiteralMap()],void 0,!0),o=bq(t);return{expression:n,type:o,statements:i}}function vq(t){let i=new Bm;return i.set("type",new gi(t.type)),t.bootstrap!==void 0&&i.set("bootstrap",new gi(t.bootstrap)),t.declarations!==void 0&&i.set("declarations",new gi(t.declarations)),t.imports!==void 0&&i.set("imports",new gi(t.imports)),t.exports!==void 0&&i.set("exports",new gi(t.exports)),t.schemas!==void 0&&i.set("schemas",new gi(t.schemas)),t.id!==void 0&&i.set("id",new gi(t.id)),Zt(he.defineNgModule).callFn([i.toLiteralMap()])}function bq(t){if(t.kind===Im.Local)return new fl(t.type.value);let{type:i,declarations:e,exports:n,imports:o,includeImportTypes:r,publicDeclarationTypes:a}=t;return new fl(Zt(he.NgModuleDeclaration,[new fl(i.type),a===null?PE(e):xq(a),r?PE(o):Rc,PE(n)]))}function Cq(t){let i=new Bm;if(t.kind===Im.Global?t.declarations.length>0&&i.set("declarations",lu(t.declarations,t.containsForwardDecls)):t.declarationsExpression&&i.set("declarations",t.declarationsExpression),t.kind===Im.Global?t.imports.length>0&&i.set("imports",lu(t.imports,t.containsForwardDecls)):t.importsExpression&&i.set("imports",t.importsExpression),t.kind===Im.Global?t.exports.length>0&&i.set("exports",lu(t.exports,t.containsForwardDecls)):t.exportsExpression&&i.set("exports",t.exportsExpression),t.kind===Im.Local&&t.bootstrapExpression&&i.set("bootstrap",t.bootstrapExpression),Object.keys(i.values).length===0)return null;let e=new fs(Zt(he.setNgModuleScope),[t.type.value,i.toLiteralMap()]),n=NW(e),o=new Am([],[n.toStmt()]);return new fs(o,[]).toStmt()}function PE(t){let i=t.map(e=>uv(e.type));return t.length>0?ga(oo(i)):Rc}function xq(t){let i=t.map(e=>uv(e));return t.length>0?ga(oo(i)):Rc}function sF(t){let i=[];i.push({key:"name",value:Ee(t.pipeName??t.name),quoted:!1}),i.push({key:"type",value:t.type.value,quoted:!1}),i.push({key:"pure",value:Ee(t.pure),quoted:!1}),t.isStandalone===!1&&i.push({key:"standalone",value:Ee(!1),quoted:!1});let e=Zt(he.definePipe).callFn([gl(i)],void 0,!0),n=yq(t);return{expression:e,type:n,statements:[]}}function yq(t){return new fl(Zt(he.PipeDeclaration,[S1(t.type.type,t.typeArgumentCount),new fl(new _a(t.pipeName)),new fl(new _a(t.isStandalone))]))}var _f=(function(t){return t[t.Directive=0]="Directive",t[t.Pipe=1]="Pipe",t[t.NgModule=2]="NgModule",t})(_f||{}),Sq=new Set(["inherit","initial","revert","unset","alternate","alternate-reverse","normal","reverse","backwards","both","forwards","none","paused","running","ease","ease-in","ease-in-out","ease-out","linear","step-start","step-end","end","jump-both","jump-end","jump-none","jump-start","start"]),wq=["@media","@supports","@document","@layer","@container","@scope","@starting-style"],ED=class{shimCssText(i,e,n=""){let o=[];i=i.replace(zq,c=>{if(c.match(jq))o.push(c);else{let m=c.match(Vq);o.push(m?.join("")??"")}return VP}),i=this._insertDirectives(i);let r=this._scopeCssText(i,e,n),a=0;return r.replace($q,()=>o[a++])}_insertDirectives(i){return i=this._insertPolyfillDirectivesInCssText(i),this._insertPolyfillRulesInCssText(i)}_scopeKeyframesRelatedCss(i,e){let n=new Set,o=JC(i,r=>this._scopeLocalKeyframeDeclarations(r,e,n));return JC(o,r=>this._scopeAnimationRule(r,e,n))}_scopeLocalKeyframeDeclarations(i,e,n){return tt(H({},i),{selector:i.selector.replace(/(^@(?:-webkit-)?keyframes(?:\s+))(['"]?)(.+)\2(\s*)$/,(o,r,a,c,m)=>(n.add(dF(c,a)),`${r}${a}${e}_${c}${a}${m}`))})}_scopeAnimationKeyframe(i,e,n){return i.replace(/^(\s*)(['"]?)(.+?)\2(\s*)$/,(o,r,a,c,m)=>(c=`${n.has(dF(c,a))?e+"_":""}${c}`,`${r}${a}${c}${a}${m}`))}_animationDeclarationKeyframesRe=/(^|\s+|,)(?:(?:(['"])((?:\\\\|\\\2|(?!\2).)+)\2)|(-?[A-Za-z][\w\-]*))(?=[,\s]|$)/g;_scopeAnimationRule(i,e,n){let o=i.content.replace(/((?:^|\s+|;)(?:-webkit-)?animation\s*:\s*),*([^;]+)/g,(r,a,c)=>a+c.replace(this._animationDeclarationKeyframesRe,(m,p,h="",g,M)=>g?`${p}${this._scopeAnimationKeyframe(`${h}${g}${h}`,e,n)}`:Sq.has(M)?m:`${p}${this._scopeAnimationKeyframe(M,e,n)}`));return o=o.replace(/((?:^|\s+|;)(?:-webkit-)?animation-name(?:\s*):(?:\s*))([^;]+)/g,(r,a,c)=>`${a}${c.split(",").map(m=>this._scopeAnimationKeyframe(m,e,n)).join(",")}`),tt(H({},i),{content:o})}_insertPolyfillDirectivesInCssText(i){return i.replace(kq,function(...e){return e[2]+"{"})}_insertPolyfillRulesInCssText(i){return i.replace(Tq,(...e)=>{let n=e[0].replace(e[1],"").replace(e[2],"");return e[4]+n})}_scopeCssText(i,e,n){let o=this._extractUnscopedRulesFromCssText(i);return i=this._insertPolyfillHostInCssText(i),i=this._convertColonHost(i),i=this._convertColonHostContext(i),i=this._convertShadowDOMSelectors(i),e&&(i=this._scopeKeyframesRelatedCss(i,e),i=this._scopeSelectors(i,e,n)),i=i+`
|
||
`+o,i.trim()}_extractUnscopedRulesFromCssText(i){let e="",n;for(lF.lastIndex=0;(n=lF.exec(i))!==null;){let o=n[0].replace(n[2],"").replace(n[1],n[4]);e+=o+`
|
||
|
||
`}return e}_convertColonHost(i){return i.replace(Iq,(e,n,o)=>{if(n){let r=[];for(let a of this._splitOnTopLevelCommas(n,!0)){let c=a.trim();if(!c)break;let m=Tm+c.replace(Qx,"")+o;r.push(m)}return r.join(",")}else return Tm+o})}*_splitOnTopLevelCommas(i,e){let n=i.length,o=0,r=0;for(let a=0;a<n;a++){let c=i.charCodeAt(a);if(c===qa)o++;else if(c===Pr){if(o--,o<0&&e){yield i.slice(r,a);return}}else c===Pa&&o===0&&(yield i.slice(r,a),r=a+1)}yield i.slice(r)}_convertColonHostContext(i){let e=[];for(let n of this._splitOnTopLevelCommas(i,!1))e.push(this._convertColonHostContextInSelectorPart(n));return e.join(",")}_convertColonHostContextInSelectorPart(i){return i.replace(Oq,(e,n)=>{let o=[[]],r=e.indexOf(qh);for(;r!==-1;){let a=e.substring(r+qh.length);if(!a||a[0]!=="("){e=a,r=e.indexOf(qh);continue}let c=[],m=0;for(let h of this._splitOnTopLevelCommas(a.substring(1),!0)){m=m+h.length+1;let g=h.trim();g&&c.push(g)}let p=o.length;Jq(o,c.length);for(let h=0;h<c.length;h++)for(let g=0;g<p;g++)o[g+h*p].push(c[h]);e=a.substring(m+1),r=e.indexOf(qh)}return o.map(a=>Zq(a,e,n)).join(", ")})}_convertShadowDOMSelectors(i){return Rq.reduce((e,n)=>e.replace(n," "),i)}_scopeSelectors(i,e,n){return JC(i,o=>{let r=o.selector,a=o.content;return o.selector[0]!=="@"?r=this._scopeSelector({selector:r,scopeSelector:e,hostSelector:n,isParentSelector:!0}):wq.some(c=>o.selector.startsWith(c))?a=this._scopeSelectors(o.content,e,n):(o.selector.startsWith("@font-face")||o.selector.startsWith("@page"))&&(a=this._stripScopingSelectors(o.content)),new Q0(r,a)})}_stripScopingSelectors(i){return JC(i,e=>{let n=e.selector.replace(cF," ").replace(IE," ");return new Q0(n,e.content)})}_safeSelector;_shouldScopeIndicator;_scopeSelector({selector:i,scopeSelector:e,hostSelector:n,isParentSelector:o=!1}){let r=/ ?,(?!(?:[^)(]*(?:\([^)(]*(?:\([^)(]*(?:\([^)(]*\)[^)(]*)*\)[^)(]*)*\)[^)(]*)*\))) ?/;return i.split(r).map(a=>a.split(cF)).map(a=>{let[c,...m]=a;return[(h=>this._selectorNeedsScoping(h,e)?this._applySelectorScope({selector:h,scopeSelector:e,hostSelector:n,isParentSelector:o}):h)(c),...m].join(" ")}).join(", ")}_selectorNeedsScoping(i,e){return!this._makeScopeMatcher(e).test(i)}_makeScopeMatcher(i){let e=/\[/g,n=/\]/g;return i=i.replace(e,"\\[").replace(n,"\\]"),new RegExp("^("+i+")"+Fq,"m")}_applySimpleSelectorScope(i,e,n){if(Kh.lastIndex=0,Kh.test(i)){let o=`[${n}]`,r=i;for(;r.match(IE);)r=r.replace(IE,(a,c)=>c.replace(/([^:\)]*)(:*)(.*)/,(m,p,h,g)=>p+o+h+g));return r.replace(Kh,o)}return e+" "+i}_applySelectorScope({selector:i,scopeSelector:e,hostSelector:n,isParentSelector:o}){let r=/\[is=([^\]]*)\]/g;e=e.replace(r,(w,...S)=>S[0]);let a=`[${e}]`,c=w=>{let S=w.trim();if(!S)return w;if(w.includes(Tm)){if(S=this._applySimpleSelectorScope(w,e,n),!w.match(Nq)){let[y,k,I,E]=S.match(/([^:]*)(:*)([\s\S]*)/);S=k+a+I+E}}else{let y=w.replace(Kh,"");if(y.length>0){let k=y.match(/([^:]*)(:*)([\s\S]*)/);k&&(S=k[1]+a+k[2]+k[3])}}return S},m=w=>{let S="",y=[],k;for(;(k=q_.exec(w))!==null;){let I=1,E=q_.lastIndex;for(;E<w.length;){let N=w[E];if(E++,N==="("){I++;continue}if(N===")"){if(I--,I===0)break;continue}}y.push(`${k[0]}${w.slice(q_.lastIndex,E)}`),q_.lastIndex=E}return y.join("")===w?S=y.map(I=>{let[E]=I.match(q_)??[],N=I.slice(E?.length,-1);N.includes(Tm)&&(this._shouldScopeIndicator=!0);let T=this._scopeSelector({selector:N,scopeSelector:e,hostSelector:n});return`${E}${T})`}).join(""):(this._shouldScopeIndicator=this._shouldScopeIndicator||w.includes(Tm),S=this._shouldScopeIndicator?c(w):w),S};o&&(this._safeSelector=new DD(i),i=this._safeSelector.content());let p="",h=0,g,M=/( |>|\+|~(?!=))(?!([^)(]*(?:\([^)(]*(?:\([^)(]*(?:\([^)(]*\)[^)(]*)*\)[^)(]*)*\)[^)(]*)*\)))\s*/g,C=i.includes(Tm);for((o||this._shouldScopeIndicator)&&(this._shouldScopeIndicator=!C);(g=M.exec(i))!==null;){let w=g[1],S=i.slice(h,g.index);if(S.match(/__esc-ph-(\d+)__/)&&i[g.index+1]?.match(/[a-fA-F\d]/))continue;let y=m(S);p+=`${y} ${w} `,h=M.lastIndex}let _=i.substring(h);return p+=m(_),this._safeSelector.restore(p)}_insertPolyfillHostInCssText(i){return i.replace(Bq,qh).replace(Lq,Qx)}},DD=class{placeholders=[];index=0;_content;constructor(i){i=this._escapeRegexMatches(i,/(\[[^\]]*\])/g),i=i.replace(/(\\.)/g,(e,n)=>{let o=`__esc-ph-${this.index}__`;return this.placeholders.push(n),this.index++,o}),this._content=i.replace(Pq,(e,n,o)=>{let r=`__ph-${this.index}__`;return this.placeholders.push(`(${o})`),this.index++,n+r})}restore(i){return i.replace(/__(?:ph|esc-ph)-(\d+)__/g,(e,n)=>this.placeholders[+n])}content(){return this._content}_escapeRegexMatches(i,e){return i.replace(e,(n,o)=>{let r=`__ph-${this.index}__`;return this.placeholders.push(o),this.index++,r})}},Mq="(:(where|is)\\()?",q_=/:(where|is)\(/gi,kq=/polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim,Tq=/(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim,lF=/(polyfill-unscoped-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim,Qx="-shadowcsshost",qh="-shadowcsscontext",PD="[^)(]*",Eq=String.raw`(?:\(${PD}\)|${PD})+?`,Dq=String.raw`(?:\(${Eq}\)|${PD})+?`,BP=String.raw`(?:\((${Dq})\))`,Pq=new RegExp(String.raw`(:nth-[-\w]+)`+BP,"g"),Iq=new RegExp(Qx+BP+"?([^,{]*)","gim"),Aq=qh+BP+"?([^{]*)",Oq=new RegExp(`${Mq}(${Aq})`,"gim"),Tm=Qx+"-no-combinator",Nq=new RegExp(`${Tm}(?![^(]*\\))`,"g"),IE=/-shadowcsshost-no-combinator([^\s,]*)/,Rq=[/::shadow/g,/::content/g,/\/shadow-deep\//g,/\/shadow\//g],cF=/(?:>>>)|(?:\/deep\/)|(?:::ng-deep)/g,Fq="([>\\s~+[.,{:][\\s\\S]*)?$",Kh=/-shadowcsshost/gim,Lq=/:host/gim,Bq=/:host-context/gim,Vq=/\r?\n/g,zq=/\/\*[\s\S]*?\*\//g,jq=/\/\*\s*#\s*source(Mapping)?URL=/g,VP="%COMMENT%",$q=new RegExp(VP,"g"),AE="%BLOCK%",Hq=new RegExp(`(\\s*(?:${VP}\\s*)*)([^;\\{\\}]+?)(\\s*)((?:{%BLOCK%}?\\s*;?)|(?:\\s*;))`,"g"),Uq=new Map([["{","}"]]),nL="%COMMA_IN_PLACEHOLDER%",iL="%SEMI_IN_PLACEHOLDER%",oL="%COLON_IN_PLACEHOLDER%",Gq=new RegExp(nL,"g"),Wq=new RegExp(iL,"g"),qq=new RegExp(oL,"g"),Q0=class{selector;content;constructor(i,e){this.selector=i,this.content=e}};function JC(t,i){let e=Yq(t),n=Xq(e,Uq,AE),o=0,r=n.escapedString.replace(Hq,(...a)=>{let c=a[2],m="",p=a[4],h="";p&&p.startsWith("{"+AE)&&(m=n.blocks[o++],p=p.substring(AE.length+1),h="{");let g=i(new Q0(c,m));return`${a[1]}${g.selector}${a[3]}${h}${g.content}${p}`});return Kq(r)}var ID=class{escapedString;blocks;constructor(i,e){this.escapedString=i,this.blocks=e}};function Xq(t,i,e){let n=[],o=[],r=0,a=0,c=-1,m,p;for(let h=0;h<t.length;h++){let g=t[h];g==="\\"?h++:g===p?(r--,r===0&&(o.push(t.substring(c,h)),n.push(e),a=h,c=-1,m=p=void 0)):g===m?r++:r===0&&i.has(g)&&(m=g,p=i.get(g),r=1,c=h+1,n.push(t.substring(a,c)))}return c!==-1?(o.push(t.substring(c)),n.push(e)):n.push(t.substring(a)),new ID(n.join(""),o)}var Qq={";":iL,",":nL,":":oL};function Yq(t){let i=t,e=null;for(let n=0;n<i.length;n++){let o=i[n];if(o==="\\")n++;else if(e!==null)if(o===e)e=null;else{let r=Qq[o];r&&(i=`${i.substr(0,n)}${r}${i.substr(n+1)}`,n+=r.length-1)}else(o==="'"||o==='"')&&(e=o)}return i}function Kq(t){let i=t.replace(Gq,",");return i=i.replace(Wq,";"),i=i.replace(qq,":"),i}function dF(t,i){return i?t.replace(/((?:^|[^\\])(?:\\\\)*)\\(?=['"])/g,"$1"):t}function Zq(t,i,e=""){let n=Tm;Kh.lastIndex=0;let o=Kh.test(i);if(t.length===0)return n+i;let r=[t.pop()||""];for(;t.length>0;){let a=r.length,c=t.pop();for(let m=0;m<a;m++){let p=r[m];r[a*2+m]=p+" "+c,r[a+m]=c+" "+p,r[m]=c+p}}return r.map(a=>o?`${e}${a}${i}`:`${e}${a}${n}${i}, ${e}${a} ${n}${i}`).join(",")}function Jq(t,i){let e=t.length;for(let n=1;n<i;n++)for(let o=0;o<e;o++)t[o+n*e]=t[o].slice(0)}var B=(function(t){return t[t.ListEnd=0]="ListEnd",t[t.Statement=1]="Statement",t[t.Variable=2]="Variable",t[t.ElementStart=3]="ElementStart",t[t.Element=4]="Element",t[t.Template=5]="Template",t[t.ElementEnd=6]="ElementEnd",t[t.ContainerStart=7]="ContainerStart",t[t.Container=8]="Container",t[t.ContainerEnd=9]="ContainerEnd",t[t.DisableBindings=10]="DisableBindings",t[t.ConditionalCreate=11]="ConditionalCreate",t[t.ConditionalBranchCreate=12]="ConditionalBranchCreate",t[t.Conditional=13]="Conditional",t[t.EnableBindings=14]="EnableBindings",t[t.Text=15]="Text",t[t.Listener=16]="Listener",t[t.InterpolateText=17]="InterpolateText",t[t.Binding=18]="Binding",t[t.Property=19]="Property",t[t.StyleProp=20]="StyleProp",t[t.ClassProp=21]="ClassProp",t[t.StyleMap=22]="StyleMap",t[t.ClassMap=23]="ClassMap",t[t.Advance=24]="Advance",t[t.Pipe=25]="Pipe",t[t.Attribute=26]="Attribute",t[t.ExtractedAttribute=27]="ExtractedAttribute",t[t.Defer=28]="Defer",t[t.DeferOn=29]="DeferOn",t[t.DeferWhen=30]="DeferWhen",t[t.I18nMessage=31]="I18nMessage",t[t.DomProperty=32]="DomProperty",t[t.Namespace=33]="Namespace",t[t.ProjectionDef=34]="ProjectionDef",t[t.Projection=35]="Projection",t[t.RepeaterCreate=36]="RepeaterCreate",t[t.Repeater=37]="Repeater",t[t.TwoWayProperty=38]="TwoWayProperty",t[t.TwoWayListener=39]="TwoWayListener",t[t.DeclareLet=40]="DeclareLet",t[t.StoreLet=41]="StoreLet",t[t.I18nStart=42]="I18nStart",t[t.I18n=43]="I18n",t[t.I18nEnd=44]="I18nEnd",t[t.I18nExpression=45]="I18nExpression",t[t.I18nApply=46]="I18nApply",t[t.IcuStart=47]="IcuStart",t[t.IcuEnd=48]="IcuEnd",t[t.IcuPlaceholder=49]="IcuPlaceholder",t[t.I18nContext=50]="I18nContext",t[t.I18nAttributes=51]="I18nAttributes",t[t.SourceLocation=52]="SourceLocation",t[t.Animation=53]="Animation",t[t.AnimationString=54]="AnimationString",t[t.AnimationBinding=55]="AnimationBinding",t[t.AnimationListener=56]="AnimationListener",t[t.Control=57]="Control",t[t.ControlCreate=58]="ControlCreate",t})(B||{}),en=(function(t){return t[t.LexicalRead=0]="LexicalRead",t[t.Context=1]="Context",t[t.TrackContext=2]="TrackContext",t[t.ReadVariable=3]="ReadVariable",t[t.NextContext=4]="NextContext",t[t.Reference=5]="Reference",t[t.StoreLet=6]="StoreLet",t[t.ContextLetReference=7]="ContextLetReference",t[t.GetCurrentView=8]="GetCurrentView",t[t.RestoreView=9]="RestoreView",t[t.ResetView=10]="ResetView",t[t.PureFunctionExpr=11]="PureFunctionExpr",t[t.PureFunctionParameterExpr=12]="PureFunctionParameterExpr",t[t.PipeBinding=13]="PipeBinding",t[t.PipeBindingVariadic=14]="PipeBindingVariadic",t[t.SafePropertyRead=15]="SafePropertyRead",t[t.SafeKeyedRead=16]="SafeKeyedRead",t[t.SafeInvokeFunction=17]="SafeInvokeFunction",t[t.SafeTernaryExpr=18]="SafeTernaryExpr",t[t.EmptyExpr=19]="EmptyExpr",t[t.AssignTemporaryExpr=20]="AssignTemporaryExpr",t[t.ReadTemporaryExpr=21]="ReadTemporaryExpr",t[t.SlotLiteralExpr=22]="SlotLiteralExpr",t[t.ConditionalCase=23]="ConditionalCase",t[t.ConstCollected=24]="ConstCollected",t[t.TwoWayBindingSet=25]="TwoWayBindingSet",t[t.ArrowFunction=26]="ArrowFunction",t})(en||{}),pl=(function(t){return t[t.None=0]="None",t[t.AlwaysInline=1]="AlwaysInline",t})(pl||{}),oa=(function(t){return t[t.Context=0]="Context",t[t.Identifier=1]="Identifier",t[t.SavedView=2]="SavedView",t[t.Alias=3]="Alias",t})(oa||{}),Qt=(function(t){return t[t.Attribute=0]="Attribute",t[t.ClassName=1]="ClassName",t[t.StyleProperty=2]="StyleProperty",t[t.Property=3]="Property",t[t.Template=4]="Template",t[t.I18n=5]="I18n",t[t.LegacyAnimation=6]="LegacyAnimation",t[t.TwoWayProperty=7]="TwoWayProperty",t[t.Animation=8]="Animation",t})(Qt||{}),Y0=(function(t){return t[t.Creation=0]="Creation",t[t.Postproccessing=1]="Postproccessing",t})(Y0||{}),kf=(function(t){return t[t.I18nText=0]="I18nText",t[t.I18nAttribute=1]="I18nAttribute",t})(kf||{}),vo=(function(t){return t[t.None=0]="None",t[t.ElementTag=1]="ElementTag",t[t.TemplateTag=2]="TemplateTag",t[t.OpenTag=4]="OpenTag",t[t.CloseTag=8]="CloseTag",t[t.ExpressionIndex=16]="ExpressionIndex",t})(vo||{}),Ia=(function(t){return t[t.HTML=0]="HTML",t[t.SVG=1]="SVG",t[t.Math=2]="Math",t})(Ia||{}),po=(function(t){return t[t.Idle=0]="Idle",t[t.Immediate=1]="Immediate",t[t.Timer=2]="Timer",t[t.Hover=3]="Hover",t[t.Interaction=4]="Interaction",t[t.Viewport=5]="Viewport",t[t.Never=6]="Never",t})(po||{}),du=(function(t){return t[t.RootI18n=0]="RootI18n",t[t.Icu=1]="Icu",t[t.Attr=2]="Attr",t})(du||{}),us=(function(t){return t[t.NgTemplate=0]="NgTemplate",t[t.Structural=1]="Structural",t[t.Block=2]="Block",t})(us||{}),Ze=(()=>{class t{static nextListId=0;debugListId=t.nextListId++;head={kind:B.ListEnd,next:null,prev:null,debugListId:this.debugListId};tail={kind:B.ListEnd,next:null,prev:null,debugListId:this.debugListId};constructor(){this.head.next=this.tail,this.tail.prev=this.head}push(e){if(Array.isArray(e)){for(let o of e)this.push(o);return}t.assertIsNotEnd(e),t.assertIsUnowned(e),e.debugListId=this.debugListId;let n=this.tail.prev;e.prev=n,n.next=e,e.next=this.tail,this.tail.prev=e}prepend(e){if(e.length===0)return;for(let r of e)t.assertIsNotEnd(r),t.assertIsUnowned(r),r.debugListId=this.debugListId;let n=this.head.next,o=this.head;for(let r of e)o.next=r,r.prev=o,o=r;o.next=n,n.prev=o}*[Symbol.iterator](){let e=this.head.next;for(;e!==this.tail;){t.assertIsOwned(e,this.debugListId);let n=e.next;yield e,e=n}}*reversed(){let e=this.tail.prev;for(;e!==this.head;){t.assertIsOwned(e,this.debugListId);let n=e.prev;yield e,e=n}}static replace(e,n){t.assertIsNotEnd(e),t.assertIsNotEnd(n),t.assertIsOwned(e),t.assertIsUnowned(n),n.debugListId=e.debugListId,e.prev!==null&&(e.prev.next=n,n.prev=e.prev),e.next!==null&&(e.next.prev=n,n.next=e.next),e.debugListId=null,e.prev=null,e.next=null}static replaceWithMany(e,n){if(n.length===0){t.remove(e);return}t.assertIsNotEnd(e),t.assertIsOwned(e);let o=e.debugListId;e.debugListId=null;for(let h of n)t.assertIsNotEnd(h),t.assertIsUnowned(h);let{prev:r,next:a}=e;e.prev=null,e.next=null;let c=r;for(let h of n)t.assertIsUnowned(h),h.debugListId=o,c.next=h,h.prev=c,h.next=null,c=h;let m=n[0],p=c;r!==null&&(r.next=m,m.prev=r),a!==null&&(a.prev=p,p.next=a)}static remove(e){t.assertIsNotEnd(e),t.assertIsOwned(e),e.prev.next=e.next,e.next.prev=e.prev,e.debugListId=null,e.prev=null,e.next=null}static insertBefore(e,n){if(Array.isArray(e)){for(let o of e)t.insertBefore(o,n);return}if(t.assertIsOwned(n),n.prev===null)throw new Error("AssertionError: illegal operation on list start");t.assertIsNotEnd(e),t.assertIsUnowned(e),e.debugListId=n.debugListId,e.prev=null,n.prev.next=e,e.prev=n.prev,e.next=n,n.prev=e}static insertAfter(e,n){if(t.assertIsOwned(n),n.next===null)throw new Error("AssertionError: illegal operation on list end");t.assertIsNotEnd(e),t.assertIsUnowned(e),e.debugListId=n.debugListId,n.next.prev=e,e.next=n.next,e.prev=n,n.next=e}static assertIsUnowned(e){if(e.debugListId!==null)throw new Error(`AssertionError: illegal operation on owned node: ${B[e.kind]}`)}static assertIsOwned(e,n){if(e.debugListId===null)throw new Error(`AssertionError: illegal operation on unowned node: ${B[e.kind]}`);if(n!==void 0&&e.debugListId!==n)throw new Error(`AssertionError: node belongs to the wrong list (expected ${n}, actual ${e.debugListId})`)}static assertIsNotEnd(e){if(e.kind===B.ListEnd)throw new Error("AssertionError: illegal operation on list head or tail")}}return t})();function Ws(t){return H({kind:B.Statement,statement:t},Cn)}function Dm(t,i,e,n){return H({kind:B.Variable,xref:t,variable:i,initializer:e,flags:n},Cn)}var Cn={debugListId:null,prev:null,next:null},rL=Symbol("ConsumesSlot"),zP=Symbol("DependsOnSlotContext"),Ru=Symbol("ConsumesVars"),_v=Symbol("UsesVarOffset"),_l={[rL]:!0,numSlotsUsed:1},_s={[zP]:!0},vs={[Ru]:!0};function Tf(t){return t[rL]===!0}function K0(t){return t[zP]===!0}function OE(t){return t[Ru]===!0}function mF(t){return t[_v]===!0}function eX(t,i,e){return H(H(H({kind:B.InterpolateText,target:t,interpolation:i,sourceSpan:e},_s),vs),Cn)}var er=class{strings;expressions;i18nPlaceholders;constructor(i,e,n){if(this.strings=i,this.expressions=e,this.i18nPlaceholders=n,n.length!==0&&n.length!==e.length)throw new Error(`Expected ${e.length} placeholders to match interpolation expression count, but got ${n.length}`)}};function Du(t,i,e,n,o,r,a,c,m,p,h){return H({kind:B.Binding,bindingKind:i,target:t,name:e,expression:n,unit:o,securityContext:r,isTextAttribute:a,isStructuralTemplateAttribute:c,templateKind:m,i18nContext:null,i18nMessage:p,sourceSpan:h},Cn)}function tX(t,i,e,n,o,r,a,c,m,p){return H(H(H({kind:B.Property,target:t,name:i,expression:e,bindingKind:n,securityContext:o,sanitizer:null,isStructuralTemplateAttribute:r,templateKind:a,i18nContext:c,i18nMessage:m,sourceSpan:p},_s),vs),Cn)}function nX(t,i,e,n,o,r,a,c,m){return H(H(H({kind:B.TwoWayProperty,target:t,name:i,expression:e,securityContext:n,sanitizer:null,isStructuralTemplateAttribute:o,templateKind:r,i18nContext:a,i18nMessage:c,sourceSpan:m},_s),vs),Cn)}function iX(t,i,e,n,o){return H(H(H({kind:B.StyleProp,target:t,name:i,expression:e,unit:n,sourceSpan:o},_s),vs),Cn)}function oX(t,i,e,n){return H(H(H({kind:B.ClassProp,target:t,name:i,expression:e,sourceSpan:n},_s),vs),Cn)}function rX(t,i,e){return H(H(H({kind:B.StyleMap,target:t,expression:i,sourceSpan:e},_s),vs),Cn)}function aX(t,i,e){return H(H(H({kind:B.ClassMap,target:t,expression:i,sourceSpan:e},_s),vs),Cn)}function pF(t,i,e,n,o,r,a,c,m,p){return H(H(H({kind:B.Attribute,target:t,namespace:i,name:e,expression:n,securityContext:o,sanitizer:null,isTextAttribute:r,isStructuralTemplateAttribute:a,templateKind:c,i18nContext:null,i18nMessage:m,sourceSpan:p},_s),vs),Cn)}function sX(t,i){return H({kind:B.Advance,delta:t,sourceSpan:i},Cn)}function aL(t,i,e,n){return H(H(H({kind:B.Conditional,target:t,test:i,conditions:e,processed:null,sourceSpan:n,contextValue:null},Cn),_s),vs)}function lX(t,i,e,n){return H(H({kind:B.Repeater,target:t,targetSlot:i,collection:e,sourceSpan:n},Cn),_s)}function uF(t,i,e,n,o,r,a){return H({kind:B.AnimationBinding,name:t,target:i,animationKind:e,expression:n,i18nMessage:null,securityContext:o,sanitizer:null,sourceSpan:r,animationBindingKind:a},Cn)}function cX(t,i,e,n){return H(H(H({kind:B.DeferWhen,target:t,expr:i,modifier:e,sourceSpan:n},Cn),_s),vs)}function sL(t,i,e,n,o,r,a,c,m,p,h){return H(H(H({kind:B.I18nExpression,context:t,target:i,i18nOwner:e,handle:n,expression:o,icuPlaceholder:r,i18nPlaceholder:a,resolutionTime:c,usage:m,name:p,sourceSpan:h},Cn),vs),_s)}function dX(t,i,e){return H({kind:B.I18nApply,owner:t,handle:i,sourceSpan:e},Cn)}function mX(t,i,e,n){return H(H(H({kind:B.StoreLet,target:t,declaredName:i,value:e,sourceSpan:n},_s),vs),Cn)}function pX(t,i){return H(H({kind:B.Control,sourceSpan:i,target:t},_s),Cn)}function jc(t){return t instanceof ro}var ro=class extends Yi{constructor(i=null){super(null,i)}},na=class t extends ro{name;kind=en.LexicalRead;constructor(i){super(),this.name=i}visitExpression(i,e){}isEquivalent(i){return this.name===i.name}isConstant(){return!1}transformInternalExpressions(){}clone(){return new t(this.name)}},Yx=class t extends ro{target;targetSlot;offset;kind=en.Reference;constructor(i,e,n){super(),this.target=i,this.targetSlot=e,this.offset=n}visitExpression(){}isEquivalent(i){return i instanceof t&&i.target===this.target}isConstant(){return!1}transformInternalExpressions(){}clone(){return new t(this.target,this.targetSlot,this.offset)}},Z0=class t extends ro{target;value;sourceSpan;kind=en.StoreLet;[Ru]=!0;[zP]=!0;constructor(i,e,n){super(),this.target=i,this.value=e,this.sourceSpan=n}visitExpression(){}isEquivalent(i){return i instanceof t&&i.target===this.target&&i.value.isEquivalent(this.value)}isConstant(){return!1}transformInternalExpressions(i,e){this.value=$t(this.value,i,e)}clone(){return new t(this.target,this.value,this.sourceSpan)}},J0=class t extends ro{target;targetSlot;kind=en.ContextLetReference;constructor(i,e){super(),this.target=i,this.targetSlot=e}visitExpression(){}isEquivalent(i){return i instanceof t&&i.target===this.target}isConstant(){return!1}transformInternalExpressions(){}clone(){return new t(this.target,this.targetSlot)}},zm=class t extends ro{view;kind=en.Context;constructor(i){super(),this.view=i}visitExpression(){}isEquivalent(i){return i instanceof t&&i.view===this.view}isConstant(){return!1}transformInternalExpressions(){}clone(){return new t(this.view)}},AD=class t extends ro{view;kind=en.TrackContext;constructor(i){super(),this.view=i}visitExpression(){}isEquivalent(i){return i instanceof t&&i.view===this.view}isConstant(){return!1}transformInternalExpressions(){}clone(){return new t(this.view)}},Kx=class t extends ro{kind=en.NextContext;steps=1;visitExpression(){}isEquivalent(i){return i instanceof t&&i.steps===this.steps}isConstant(){return!1}transformInternalExpressions(){}clone(){let i=new t;return i.steps=this.steps,i}},OD=class t extends ro{kind=en.GetCurrentView;constructor(){super()}visitExpression(){}isEquivalent(i){return i instanceof t}isConstant(){return!1}transformInternalExpressions(){}clone(){return new t}},ev=class t extends ro{view;kind=en.RestoreView;constructor(i){super(),this.view=i}visitExpression(i,e){typeof this.view!="number"&&this.view.visitExpression(i,e)}isEquivalent(i){return!(i instanceof t)||typeof i.view!=typeof this.view?!1:typeof this.view=="number"?this.view===i.view:this.view.isEquivalent(i.view)}isConstant(){return!1}transformInternalExpressions(i,e){typeof this.view!="number"&&(this.view=$t(this.view,i,e))}clone(){return new t(this.view instanceof Yi?this.view.clone():this.view)}},Zx=class t extends ro{expr;kind=en.ResetView;constructor(i){super(),this.expr=i}visitExpression(i,e){this.expr.visitExpression(i,e)}isEquivalent(i){return i instanceof t&&this.expr.isEquivalent(i.expr)}isConstant(){return!1}transformInternalExpressions(i,e){this.expr=$t(this.expr,i,e)}clone(){return new t(this.expr.clone())}},Jx=class t extends ro{target;value;kind=en.TwoWayBindingSet;constructor(i,e){super(),this.target=i,this.value=e}visitExpression(i,e){this.target.visitExpression(i,e),this.value.visitExpression(i,e)}isEquivalent(i){return this.target.isEquivalent(i.target)&&this.value.isEquivalent(i.value)}isConstant(){return!1}transformInternalExpressions(i,e){this.target=$t(this.target,i,e),this.value=$t(this.value,i,e)}clone(){return new t(this.target,this.value)}},Id=class t extends ro{xref;kind=en.ReadVariable;name=null;constructor(i){super(),this.xref=i}visitExpression(){}isEquivalent(i){return i instanceof t&&i.xref===this.xref}isConstant(){return!1}transformInternalExpressions(){}clone(){let i=new t(this.xref);return i.name=this.name,i}},Pu=class t extends ro{kind=en.PureFunctionExpr;[Ru]=!0;[_v]=!0;varOffset=null;body;args;fn=null;constructor(i,e){super(),this.body=i,this.args=e}visitExpression(i,e){this.body?.visitExpression(i,e);for(let n of this.args)n.visitExpression(i,e)}isEquivalent(i){return!(i instanceof t)||i.args.length!==this.args.length?!1:i.body!==null&&this.body!==null&&i.body.isEquivalent(this.body)&&i.args.every((e,n)=>e.isEquivalent(this.args[n]))}isConstant(){return!1}transformInternalExpressions(i,e){this.body!==null?this.body=$t(this.body,i,e|$n.InChildOperation):this.fn!==null&&(this.fn=$t(this.fn,i,e));for(let n=0;n<this.args.length;n++)this.args[n]=$t(this.args[n],i,e)}clone(){let i=new t(this.body?.clone()??null,this.args.map(e=>e.clone()));return i.fn=this.fn?.clone()??null,i.varOffset=this.varOffset,i}},jm=class t extends ro{index;kind=en.PureFunctionParameterExpr;constructor(i){super(),this.index=i}visitExpression(){}isEquivalent(i){return i instanceof t&&i.index===this.index}isConstant(){return!0}transformInternalExpressions(){}clone(){return new t(this.index)}},Iu=class t extends ro{target;targetSlot;name;args;kind=en.PipeBinding;[Ru]=!0;[_v]=!0;varOffset=null;constructor(i,e,n,o){super(),this.target=i,this.targetSlot=e,this.name=n,this.args=o}visitExpression(i,e){for(let n of this.args)n.visitExpression(i,e)}isEquivalent(){return!1}isConstant(){return!1}transformInternalExpressions(i,e){for(let n=0;n<this.args.length;n++)this.args[n]=$t(this.args[n],i,e)}clone(){let i=new t(this.target,this.targetSlot,this.name,this.args.map(e=>e.clone()));return i.varOffset=this.varOffset,i}},tv=class t extends ro{target;targetSlot;name;args;numArgs;kind=en.PipeBindingVariadic;[Ru]=!0;[_v]=!0;varOffset=null;constructor(i,e,n,o,r){super(),this.target=i,this.targetSlot=e,this.name=n,this.args=o,this.numArgs=r}visitExpression(i,e){this.args.visitExpression(i,e)}isEquivalent(){return!1}isConstant(){return!1}transformInternalExpressions(i,e){this.args=$t(this.args,i,e)}clone(){let i=new t(this.target,this.targetSlot,this.name,this.args.clone(),this.numArgs);return i.varOffset=this.varOffset,i}},vf=class t extends ro{receiver;name;kind=en.SafePropertyRead;constructor(i,e){super(),this.receiver=i,this.name=e}get index(){return this.name}visitExpression(i,e){this.receiver.visitExpression(i,e)}isEquivalent(){return!1}isConstant(){return!1}transformInternalExpressions(i,e){this.receiver=$t(this.receiver,i,e)}clone(){return new t(this.receiver.clone(),this.name)}},bf=class t extends ro{receiver;index;kind=en.SafeKeyedRead;constructor(i,e,n){super(n),this.receiver=i,this.index=e}visitExpression(i,e){this.receiver.visitExpression(i,e),this.index.visitExpression(i,e)}isEquivalent(){return!1}isConstant(){return!1}transformInternalExpressions(i,e){this.receiver=$t(this.receiver,i,e),this.index=$t(this.index,i,e)}clone(){return new t(this.receiver.clone(),this.index.clone(),this.sourceSpan)}},Au=class t extends ro{receiver;args;kind=en.SafeInvokeFunction;constructor(i,e){super(),this.receiver=i,this.args=e}visitExpression(i,e){this.receiver.visitExpression(i,e);for(let n of this.args)n.visitExpression(i,e)}isEquivalent(){return!1}isConstant(){return!1}transformInternalExpressions(i,e){this.receiver=$t(this.receiver,i,e);for(let n=0;n<this.args.length;n++)this.args[n]=$t(this.args[n],i,e)}clone(){return new t(this.receiver.clone(),this.args.map(i=>i.clone()))}},Cf=class t extends ro{guard;expr;kind=en.SafeTernaryExpr;constructor(i,e){super(),this.guard=i,this.expr=e}visitExpression(i,e){this.guard.visitExpression(i,e),this.expr.visitExpression(i,e)}isEquivalent(){return!1}isConstant(){return!1}transformInternalExpressions(i,e){this.guard=$t(this.guard,i,e),this.expr=$t(this.expr,i,e)}clone(){return new t(this.guard.clone(),this.expr.clone())}},nv=class t extends ro{kind=en.EmptyExpr;visitExpression(i,e){}isEquivalent(i){return i instanceof t}isConstant(){return!0}clone(){return new t}transformInternalExpressions(){}},$c=class t extends ro{expr;xref;kind=en.AssignTemporaryExpr;name=null;constructor(i,e){super(),this.expr=i,this.xref=e}visitExpression(i,e){this.expr.visitExpression(i,e)}isEquivalent(){return!1}isConstant(){return!1}transformInternalExpressions(i,e){this.expr=$t(this.expr,i,e)}clone(){let i=new t(this.expr.clone(),this.xref);return i.name=this.name,i}},$m=class t extends ro{xref;kind=en.ReadTemporaryExpr;name=null;constructor(i){super(),this.xref=i}visitExpression(i,e){}isEquivalent(){return this.xref===this.xref}isConstant(){return!1}transformInternalExpressions(i,e){}clone(){let i=new t(this.xref);return i.name=this.name,i}},e1=class t extends ro{slot;kind=en.SlotLiteralExpr;constructor(i){super(),this.slot=i}visitExpression(i,e){}isEquivalent(i){return i instanceof t&&i.slot===this.slot}isConstant(){return!0}clone(){return new t(this.slot)}transformInternalExpressions(){}},t1=class t extends ro{expr;target;targetSlot;alias;kind=en.ConditionalCase;constructor(i,e,n,o=null){super(),this.expr=i,this.target=e,this.targetSlot=n,this.alias=o}visitExpression(i,e){this.expr!==null&&this.expr.visitExpression(i,e)}isEquivalent(i){return i instanceof t&&i.expr===this.expr}isConstant(){return!0}clone(){return new t(this.expr,this.target,this.targetSlot)}transformInternalExpressions(i,e){this.expr!==null&&(this.expr=$t(this.expr,i,e))}},iv=class t extends ro{expr;kind=en.ConstCollected;constructor(i){super(),this.expr=i}transformInternalExpressions(i,e){this.expr=i(this.expr,e)}visitExpression(i,e){this.expr.visitExpression(i,e)}isEquivalent(i){return i instanceof t?this.expr.isEquivalent(i.expr):!1}isConstant(){return this.expr.isConstant()}clone(){return new t(this.expr)}},ND=class t extends ro{parameters;body;kind=en.ArrowFunction;[Ru]=!0;[_v]=!0;contextName=Gs;currentViewName="view";varOffset=null;ops;constructor(i,e){super(),this.parameters=i,this.body=e,this.ops=new Ze,this.ops.push([Ws(new Ar(e,e.sourceSpan))])}visitExpression(i,e){for(let n of this.ops)wr(n,o=>{o.visitExpression(i,e)})}isEquivalent(i){return i instanceof t&&i.parameters.length===this.parameters.length&&i.parameters.every((e,n)=>e.isEquivalent(this.parameters[n]))&&i.body.isEquivalent(this.body)}isConstant(){return!1}transformInternalExpressions(i,e){for(let n of this.ops)tr(n,i,e|($n.InChildOperation|$n.InArrowFunctionOperation))}clone(){let i=new t(this.parameters,this.body);return i.varOffset=this.varOffset,i.ops=this.ops,i}};function wr(t,i){tr(t,(e,n)=>(i(e,n),e),$n.None)}var $n=(function(t){return t[t.None=0]="None",t[t.InChildOperation=1]="InChildOperation",t[t.InArrowFunctionOperation=2]="InArrowFunctionOperation",t})($n||{});function NE(t,i,e){for(let n=0;n<t.expressions.length;n++)t.expressions[n]=$t(t.expressions[n],i,e)}function tr(t,i,e){switch(t.kind){case B.StyleProp:case B.StyleMap:case B.ClassProp:case B.ClassMap:case B.AnimationString:case B.AnimationBinding:case B.Binding:t.expression instanceof er?NE(t.expression,i,e):t.expression=$t(t.expression,i,e);break;case B.Property:case B.DomProperty:case B.Attribute:t.expression instanceof er?NE(t.expression,i,e):t.expression=$t(t.expression,i,e),t.sanitizer=t.sanitizer&&$t(t.sanitizer,i,e);break;case B.TwoWayProperty:t.expression=$t(t.expression,i,e),t.sanitizer=t.sanitizer&&$t(t.sanitizer,i,e);break;case B.I18nExpression:t.expression=$t(t.expression,i,e);break;case B.InterpolateText:NE(t.interpolation,i,e);break;case B.Statement:n1(t.statement,i,e);break;case B.Variable:t.initializer=$t(t.initializer,i,e);break;case B.Conditional:for(let n of t.conditions)n.expr!==null&&(n.expr=$t(n.expr,i,e));t.processed!==null&&(t.processed=$t(t.processed,i,e)),t.contextValue!==null&&(t.contextValue=$t(t.contextValue,i,e));break;case B.Animation:case B.AnimationListener:case B.Listener:case B.TwoWayListener:for(let n of t.handlerOps)tr(n,i,e|$n.InChildOperation);break;case B.ExtractedAttribute:t.expression=t.expression&&$t(t.expression,i,e),t.trustedValueFn=t.trustedValueFn&&$t(t.trustedValueFn,i,e);break;case B.RepeaterCreate:if(t.trackByOps===null)t.track=$t(t.track,i,e);else for(let n of t.trackByOps)tr(n,i,e|$n.InChildOperation);t.trackByFn!==null&&(t.trackByFn=$t(t.trackByFn,i,e));break;case B.Repeater:t.collection=$t(t.collection,i,e);break;case B.Defer:t.loadingConfig!==null&&(t.loadingConfig=$t(t.loadingConfig,i,e)),t.placeholderConfig!==null&&(t.placeholderConfig=$t(t.placeholderConfig,i,e)),t.resolverFn!==null&&(t.resolverFn=$t(t.resolverFn,i,e));break;case B.I18nMessage:for(let[n,o]of t.params)t.params.set(n,$t(o,i,e));for(let[n,o]of t.postprocessingParams)t.postprocessingParams.set(n,$t(o,i,e));break;case B.DeferWhen:t.expr=$t(t.expr,i,e);break;case B.StoreLet:t.value=$t(t.value,i,e);break;case B.Advance:case B.Container:case B.ContainerEnd:case B.ContainerStart:case B.DeferOn:case B.DisableBindings:case B.Element:case B.ElementEnd:case B.ElementStart:case B.EnableBindings:case B.I18n:case B.I18nApply:case B.I18nContext:case B.I18nEnd:case B.I18nStart:case B.IcuEnd:case B.IcuStart:case B.Namespace:case B.Pipe:case B.Projection:case B.ProjectionDef:case B.Template:case B.Text:case B.I18nAttributes:case B.IcuPlaceholder:case B.DeclareLet:case B.SourceLocation:case B.ConditionalCreate:case B.ConditionalBranchCreate:case B.Control:case B.ControlCreate:break;default:throw new Error(`AssertionError: transformExpressionsInOp doesn't handle ${B[t.kind]}`)}}function $t(t,i,e){if(t instanceof ro)t.transformInternalExpressions(i,e);else if(t instanceof Mi)t.lhs=$t(t.lhs,i,e),t.rhs=$t(t.rhs,i,e);else if(t instanceof xu)t.expr=$t(t.expr,i,e);else if(t instanceof Hs)t.receiver=$t(t.receiver,i,e);else if(t instanceof Ad)t.receiver=$t(t.receiver,i,e),t.index=$t(t.index,i,e);else if(t instanceof fs){t.fn=$t(t.fn,i,e);for(let n=0;n<t.args.length;n++)t.args[n]=$t(t.args[n],i,e)}else if(t instanceof Lc)for(let n=0;n<t.entries.length;n++)t.entries[n]=$t(t.entries[n],i,e);else if(t instanceof ic)for(let n of t.entries)n instanceof Om?n.expression=$t(n.expression,i,e):n.value=$t(n.value,i,e);else if(t instanceof Fc)t.condition=$t(t.condition,i,e),t.trueCase=$t(t.trueCase,i,e),t.falseCase!==null&&(t.falseCase=$t(t.falseCase,i,e));else if(t instanceof rf)t.expr=$t(t.expr,i,e);else if(t instanceof bx)t.expr=$t(t.expr,i,e);else if(t instanceof xx)for(let n=0;n<t.expressions.length;n++)t.expressions[n]=$t(t.expressions[n],i,e);else if(t instanceof C0)t.condition=$t(t.condition,i,e);else if(t instanceof _0)t.tag=$t(t.tag,i,e),t.template.expressions=t.template.expressions.map(n=>$t(n,i,e));else if(t instanceof Nu)if(Array.isArray(t.body))for(let n=0;n<t.body.length;n++)n1(t.body[n],i,e|$n.InChildOperation);else t.body=$t(t.body,i,e|$n.InChildOperation);else if(!(t instanceof gi)){if(t instanceof b0)for(let n=0;n<t.expressions.length;n++)t.expressions[n]=$t(t.expressions[n],i,e);else if(t instanceof nc)t.expr=$t(t.expr,i,e);else if(t instanceof yu)t.expression=$t(t.expression,i,e);else if(!(t instanceof tc||t instanceof Cu||t instanceof _a||t instanceof af))throw new Error(`Unhandled expression kind: ${t.constructor.name}`)}return i(t,e)}function n1(t,i,e){if(t instanceof va)t.expr=$t(t.expr,i,e);else if(t instanceof Ar)t.value=$t(t.value,i,e);else if(t instanceof qr)t.value!==void 0&&(t.value=$t(t.value,i,e));else if(t instanceof Sx){t.condition=$t(t.condition,i,e);for(let n of t.trueCase)n1(n,i,e);for(let n of t.falseCase)n1(n,i,e)}else throw new Error(`Unhandled statement kind: ${t.constructor.name}`)}function lL(t){return t instanceof _a&&typeof t.value=="string"}var ba=class{slot=null},uX=new Set([B.Element,B.ElementStart,B.Container,B.ContainerStart,B.Template,B.RepeaterCreate,B.ConditionalCreate,B.ConditionalBranchCreate]);function Hm(t){return uX.has(t.kind)}function hX(t,i,e,n,o,r){return H(H({kind:B.ElementStart,xref:i,tag:t,handle:new ba,attributes:null,localRefs:[],nonBindable:!1,namespace:e,i18nPlaceholder:n,startSourceSpan:o,wholeSourceSpan:r},_l),Cn)}function cL(t,i,e,n,o,r,a,c){return H(H({kind:B.Template,xref:t,templateKind:i,attributes:null,tag:e,handle:new ba,functionNameSuffix:n,decls:null,vars:null,localRefs:[],nonBindable:!1,namespace:o,i18nPlaceholder:r,startSourceSpan:a,wholeSourceSpan:c},_l),Cn)}function dL(t,i,e,n,o,r,a,c){return H(H({kind:B.ConditionalCreate,xref:t,templateKind:i,attributes:null,tag:e,handle:new ba,functionNameSuffix:n,decls:null,vars:null,localRefs:[],nonBindable:!1,namespace:o,i18nPlaceholder:r,startSourceSpan:a,wholeSourceSpan:c},_l),Cn)}function mL(t,i,e,n,o,r,a,c){return H(H({kind:B.ConditionalBranchCreate,xref:t,templateKind:i,attributes:null,tag:e,handle:new ba,functionNameSuffix:n,decls:null,vars:null,localRefs:[],nonBindable:!1,namespace:o,i18nPlaceholder:r,startSourceSpan:a,wholeSourceSpan:c},_l),Cn)}function fX(t,i,e,n,o,r,a,c,m,p){return tt(H(H(H({kind:B.RepeaterCreate,attributes:null,xref:t,handle:new ba,emptyView:i,track:n,trackByFn:null,trackByOps:null,tag:e,emptyTag:r,emptyAttributes:null,functionNameSuffix:"For",namespace:Ia.HTML,nonBindable:!1,localRefs:[],decls:null,vars:null,varNames:o,usesComponentInstance:!1,i18nPlaceholder:a,emptyI18nPlaceholder:c,startSourceSpan:m,wholeSourceSpan:p},_l),Cn),vs),{numSlotsUsed:i===null?2:3})}function gX(t,i){return H({kind:B.ElementEnd,xref:t,sourceSpan:i},Cn)}function _X(t){return H({kind:B.DisableBindings,xref:t},Cn)}function vX(t){return H({kind:B.EnableBindings,xref:t},Cn)}function pL(t,i,e,n){return H(H({kind:B.Text,xref:t,handle:new ba,initialValue:i,icuPlaceholder:e,sourceSpan:n},_l),Cn)}function bX(t,i,e,n,o,r){return H({kind:B.AnimationString,name:t,target:i,animationKind:e,expression:n,i18nMessage:null,securityContext:o,sanitizer:null,sourceSpan:r},Cn)}function CX(t,i,e,n,o,r){let a=new Ze;return a.push(n),H({kind:B.Animation,name:t,target:i,animationKind:e,handlerOps:a,handlerFnName:null,i18nMessage:null,securityContext:o,sanitizer:null,sourceSpan:r},Cn)}function jP(t,i,e,n,o,r,a,c,m){let p=new Ze;return p.push(o),H({kind:B.Listener,target:t,targetSlot:i,tag:n,hostListener:c,name:e,handlerOps:p,handlerFnName:null,consumesDollarEvent:!1,isLegacyAnimationListener:r!==null,legacyAnimationPhase:r,eventTarget:a,sourceSpan:m},Cn)}function uL(t,i,e,n,o,r,a,c,m){let p=new Ze;return p.push(o),H({kind:B.AnimationListener,target:t,targetSlot:i,tag:n,hostListener:c,name:e,animationKind:r,handlerOps:p,handlerFnName:null,consumesDollarEvent:!1,eventTarget:a,sourceSpan:m},Cn)}function hL(t,i,e,n,o,r){let a=new Ze;return a.push(o),H({kind:B.TwoWayListener,target:t,targetSlot:i,tag:n,name:e,handlerOps:a,handlerFnName:null,sourceSpan:r},Cn)}function xX(t,i,e){return H(H({kind:B.Pipe,xref:t,handle:i,name:e},Cn),_l)}function yX(t){return H({kind:B.Namespace,active:t},Cn)}function SX(t){return H({kind:B.ProjectionDef,def:t},Cn)}function wX(t,i,e,n,o){return tt(H(H({kind:B.Projection,xref:t,handle:new ba,selector:i,i18nPlaceholder:e,fallbackView:n,projectionSlotIndex:0,attributes:null,localRefs:[],sourceSpan:o},Cn),_l),{numSlotsUsed:n===null?1:2})}function ul(t,i,e,n,o,r,a,c){return H({kind:B.ExtractedAttribute,target:t,bindingKind:i,namespace:e,name:n,expression:o,i18nContext:r,i18nMessage:a,securityContext:c,trustedValueFn:null},Cn)}function MX(t,i,e,n,o,r){return tt(H(H({kind:B.Defer,xref:t,handle:new ba,mainView:i,mainSlot:e,loadingView:null,loadingSlot:null,loadingConfig:null,loadingMinimumTime:null,loadingAfterTime:null,placeholderView:null,placeholderSlot:null,placeholderConfig:null,placeholderMinimumTime:null,errorView:null,errorSlot:null,ownResolverFn:n,resolverFn:o,flags:null,sourceSpan:r},Cn),_l),{numSlotsUsed:2})}function km(t,i,e,n){return H({kind:B.DeferOn,defer:t,trigger:i,modifier:e,sourceSpan:n},Cn)}function kX(t,i,e){return H(H({kind:B.DeclareLet,xref:t,declaredName:i,sourceSpan:e,handle:new ba},_l),Cn)}function TX(t,i,e,n,o,r,a,c){return H({kind:B.I18nMessage,xref:t,i18nContext:i,i18nBlock:e,message:n,messagePlaceholder:o,params:r,postprocessingParams:a,needsPostprocessing:c,subMessages:[]},Cn)}function k1(t,i,e,n){return H(H({kind:B.I18nStart,xref:t,handle:new ba,root:e??t,message:i,messageIndex:null,subTemplateIndex:null,context:null,sourceSpan:n},Cn),_l)}function T1(t,i){return H({kind:B.I18nEnd,xref:t,sourceSpan:i},Cn)}function EX(t,i,e,n){return H({kind:B.IcuStart,xref:t,message:i,messagePlaceholder:e,context:null,sourceSpan:n},Cn)}function DX(t){return H({kind:B.IcuEnd,xref:t},Cn)}function PX(t,i,e){return H({kind:B.IcuPlaceholder,xref:t,name:i,strings:e,expressionPlaceholders:[]},Cn)}function RE(t,i,e,n,o){if(e===null&&t!==du.Attr)throw new Error("AssertionError: i18nBlock must be provided for non-attribute contexts.");return H({kind:B.I18nContext,contextKind:t,xref:i,i18nBlock:e,message:n,sourceSpan:o,params:new Map,postprocessingParams:new Map},Cn)}function fL(t,i,e){return H(H({kind:B.I18nAttributes,xref:t,handle:i,target:e,i18nAttributesConfig:null},Cn),_l)}function IX(t,i){return H({kind:B.SourceLocation,templatePath:t,locations:i},Cn)}function AX(t){return H({kind:B.ControlCreate,sourceSpan:t},Cn)}function OX(t,i,e,n,o,r){return H(H({kind:B.DomProperty,name:t,expression:i,bindingKind:e,i18nContext:n,securityContext:o,sanitizer:null,sourceSpan:r},vs),Cn)}var gL="CTX_REF_MARKER",Vt=(function(t){return t[t.Tmpl=0]="Tmpl",t[t.Host=1]="Host",t[t.Both=2]="Both",t})(Vt||{}),cs=(function(t){return t[t.Full=0]="Full",t[t.DomOnly=1]="DomOnly",t})(cs||{}),i1=class{componentName;pool;mode;constructor(i,e,n){this.componentName=i,this.pool=e,this.mode=n}kind=Vt.Both;allocateXrefId(){return this.nextXrefId++}nextXrefId=0},ov=class extends i1{relativeContextFilePath;i18nUseExternalIds;deferMeta;allDeferrableDepsFn;relativeTemplatePath;enableDebugLocations;constructor(i,e,n,o,r,a,c,m,p){super(i,e,n),this.relativeContextFilePath=o,this.i18nUseExternalIds=r,this.deferMeta=a,this.allDeferrableDepsFn=c,this.relativeTemplatePath=m,this.enableDebugLocations=p,this.root=new hl(this,this.allocateXrefId(),null),this.views.set(this.root.xref,this.root)}kind=Vt.Tmpl;fnSuffix="Template";root;views=new Map;contentSelectors=null;allocateView(i){let e=new hl(this,this.allocateXrefId(),i);return this.views.set(e.xref,e),e}get units(){return this.views.values()}addConst(i,e){for(let o=0;o<this.consts.length;o++)if(this.consts[o].isEquivalent(i))return o;let n=this.consts.length;return this.consts.push(i),e&&this.constsInitializers.push(...e),n}consts=[];constsInitializers=[]},o1=class{xref;constructor(i){this.xref=i}create=new Ze;update=new Ze;functions=new Set;fnName=null;vars=null;*ops(){for(let i of this.functions)for(let e of i.ops)yield e;for(let i of this.create)if(yield i,i.kind===B.Listener||i.kind===B.Animation||i.kind===B.AnimationListener||i.kind===B.TwoWayListener)for(let e of i.handlerOps)yield e;else if(i.kind===B.RepeaterCreate&&i.trackByOps!==null)for(let e of i.trackByOps)yield e;for(let i of this.update)yield i}},hl=class extends o1{job;parent;constructor(i,e,n){super(e),this.job=i,this.parent=n}contextVariables=new Map;aliases=new Set;decls=null},r1=class extends i1{constructor(i,e,n){super(i,e,n),this.root=new RD(this)}kind=Vt.Host;fnSuffix="HostBindings";root;get units(){return[this.root]}},RD=class extends o1{job;constructor(i){super(0),this.job=i}attributes=null};function NX(t){for(let i of t.units)for(let e of i.ops())tr(e,RX,$n.None)}function RX(t){if(t instanceof fs&&t.fn instanceof na&&t.fn.name==="$any"){if(t.args.length!==1)throw new Error("The $any builtin function expects exactly one argument.");return t.args[0]}return t}function FX(t){let i=new Map;for(let e of t.units)for(let n of e.create)n.kind===B.I18nContext&&i.set(n.xref,n);for(let e of t.units)for(let n of e.update)n.kind===B.I18nExpression&&LX(i,n)&&Ze.insertAfter(dX(n.i18nOwner,n.handle,null),n)}function LX(t,i){if(i.next?.kind!==B.I18nExpression)return!0;let e=t.get(i.context),n=t.get(i.next.context);if(e===void 0)throw new Error("AssertionError: expected an I18nContextOp to exist for the I18nExpressionOp's context");if(n===void 0)throw new Error("AssertionError: expected an I18nContextOp to exist for the next I18nExpressionOp's context");return e.i18nBlock!==null?e.i18nBlock!==n.i18nBlock:i.i18nOwner!==i.next.i18nOwner}function BX(t){for(let i of t.units){let e=i.update.head,n=[],o=null;for(let r of i.create){if(r.kind===B.I18nStart)o={blockXref:r.xref,lastSlotConsumer:r.xref};else if(r.kind===B.I18nEnd){for(let a of n)a.target=o.lastSlotConsumer,Ze.insertBefore(a,e);n.length=0,o=null}if(Tf(r))for(o!==null&&(o.lastSlotConsumer=r.xref);e.next!==null;){if(o!==null&&e.kind===B.I18nExpression&&e.usage===kf.I18nText&&e.i18nOwner===o.blockXref){let c=e;e=e.next,Ze.remove(c),n.push(c);continue}let a=!1;if(K0(e)&&e.target!==r.xref?a=!0:(e.kind===B.Statement||e.kind===B.Variable)&&wr(e,c=>{!a&&K0(c)&&c.target!==r.xref&&(a=!0)}),a)break;e=e.next}}}}function VX(t){if(!(!t.enableDebugLocations||t.relativeTemplatePath===null))for(let i of t.units){let e=[];for(let n of i.create)if(n.kind===B.ElementStart||n.kind===B.Element){let o=n.startSourceSpan.start;e.push({targetSlot:n.handle,offset:o.offset,line:o.line,column:o.col})}e.length>0&&i.create.push(IX(t.relativeTemplatePath,e))}}function _L(t){let i=new Map;for(let e of t.create)Tf(e)&&(i.set(e.xref,e),e.kind===B.RepeaterCreate&&e.emptyView!==null&&i.set(e.emptyView,e));return i}function zX(t){for(let i of t.units){let e=_L(i);for(let n of i.ops())switch(n.kind){case B.Attribute:jX(i,n,e);break;case B.Property:if(n.bindingKind!==Qt.LegacyAnimation&&n.bindingKind!==Qt.Animation){let o;n.i18nMessage!==null&&n.templateKind===null?o=Qt.I18n:n.isStructuralTemplateAttribute?o=Qt.Template:o=Qt.Property,Ze.insertBefore(ul(n.target,o,null,n.name,null,null,null,n.securityContext),Xh(e,n.target))}break;case B.TwoWayProperty:Ze.insertBefore(ul(n.target,Qt.TwoWayProperty,null,n.name,null,null,null,n.securityContext),Xh(e,n.target));break;case B.StyleProp:case B.ClassProp:n.expression instanceof nv&&Ze.insertBefore(ul(n.target,Qt.Property,null,n.name,null,null,null,uo.STYLE),Xh(e,n.target));break;case B.Listener:if(!n.isLegacyAnimationListener){let o=ul(n.target,Qt.Property,null,n.name,null,null,null,uo.NONE);if(t.kind===Vt.Host)break;Ze.insertBefore(o,Xh(e,n.target))}break;case B.TwoWayListener:if(t.kind!==Vt.Host){let o=ul(n.target,Qt.Property,null,n.name,null,null,null,uo.NONE);Ze.insertBefore(o,Xh(e,n.target))}break}}}function Xh(t,i){let e=t.get(i);if(e===void 0)throw new Error("All attributes should have an element-like target.");return e}function jX(t,i,e){if(!(i.expression instanceof er)&&i.isTextAttribute){let n=ul(i.target,i.isStructuralTemplateAttribute?Qt.Template:Qt.Attribute,i.namespace,i.name,i.expression,i.i18nContext,i.i18nMessage,i.securityContext);if(t.job.kind===Vt.Host)t.create.push(n);else{let o=Xh(e,i.target);Ze.insertBefore(n,o)}Ze.remove(i)}}var hF="aria-";function vL(t){return t.startsWith(hF)&&t.length>hF.length}function $X(t,i){let e=t.get(i);if(e===void 0)throw new Error("All attributes should have an element-like target.");return e}function HX(t){let i=new Map;for(let e of t.units)for(let n of e.create)Hm(n)&&i.set(n.xref,n);for(let e of t.units)for(let n of e.ops())if(n.kind===B.Binding)switch(n.bindingKind){case Qt.Attribute:if(n.name==="ngNonBindable"){Ze.remove(n);let o=$X(i,n.target);o.nonBindable=!0}else if(n.name.startsWith("animate."))Ze.replace(n,uF(n.name,n.target,n.name==="animate.enter"?"enter":"leave",n.expression,n.securityContext,n.sourceSpan,0));else{let[o,r]=oc(n.name);Ze.replace(n,pF(n.target,o,r,n.expression,n.securityContext,n.isTextAttribute,n.isStructuralTemplateAttribute,n.templateKind,n.i18nMessage,n.sourceSpan))}break;case Qt.Animation:Ze.replace(n,uF(n.name,n.target,n.name==="animate.enter"?"enter":"leave",n.expression,n.securityContext,n.sourceSpan,1));break;case Qt.Property:case Qt.LegacyAnimation:t.mode===cs.DomOnly&&vL(n.name)?Ze.replace(n,pF(n.target,null,n.name,n.expression,n.securityContext,!1,n.isStructuralTemplateAttribute,n.templateKind,n.i18nMessage,n.sourceSpan)):t.kind===Vt.Host?Ze.replace(n,OX(n.name,n.expression,n.bindingKind,n.i18nContext,n.securityContext,n.sourceSpan)):Ze.replace(n,tX(n.target,n.name,n.expression,n.bindingKind,n.securityContext,n.isStructuralTemplateAttribute,n.templateKind,n.i18nContext,n.i18nMessage,n.sourceSpan));break;case Qt.TwoWayProperty:if(!(n.expression instanceof Yi))throw new Error(`Expected value of two-way property binding "${n.name}" to be an expression`);Ze.replace(n,nX(n.target,n.name,n.expression,n.securityContext,n.isStructuralTemplateAttribute,n.templateKind,n.i18nContext,n.i18nMessage,n.sourceSpan));break;case Qt.I18n:case Qt.ClassName:case Qt.StyleProperty:throw new Error(`Unhandled binding of kind ${Qt[n.bindingKind]}`)}}var fF=new Map([[he.ariaProperty,he.ariaProperty],[he.attribute,he.attribute],[he.classProp,he.classProp],[he.element,he.element],[he.elementContainer,he.elementContainer],[he.elementContainerEnd,he.elementContainerEnd],[he.elementContainerStart,he.elementContainerStart],[he.elementEnd,he.elementEnd],[he.elementStart,he.elementStart],[he.domProperty,he.domProperty],[he.i18nExp,he.i18nExp],[he.listener,he.listener],[he.listener,he.listener],[he.property,he.property],[he.styleProp,he.styleProp],[he.syntheticHostListener,he.syntheticHostListener],[he.syntheticHostProperty,he.syntheticHostProperty],[he.templateCreate,he.templateCreate],[he.twoWayProperty,he.twoWayProperty],[he.twoWayListener,he.twoWayListener],[he.declareLet,he.declareLet],[he.conditionalCreate,he.conditionalBranchCreate],[he.conditionalBranchCreate,he.conditionalBranchCreate],[he.domElement,he.domElement],[he.domElementStart,he.domElementStart],[he.domElementEnd,he.domElementEnd],[he.domElementContainer,he.domElementContainer],[he.domElementContainerStart,he.domElementContainerStart],[he.domElementContainerEnd,he.domElementContainerEnd],[he.domListener,he.domListener],[he.domTemplate,he.domTemplate],[he.animationEnter,he.animationEnter],[he.animationLeave,he.animationLeave],[he.animationEnterListener,he.animationEnterListener],[he.animationLeaveListener,he.animationLeaveListener]]),UX=256;function GX(t){for(let i of t.units)gF(i.create),gF(i.update)}function gF(t){let i=null;for(let e of t){if(e.kind!==B.Statement||!(e.statement instanceof va)){i=null;continue}if(!(e.statement.expr instanceof fs)||!(e.statement.expr.fn instanceof Cu)){i=null;continue}let n=e.statement.expr.fn.value;if(!fF.has(n)){i=null;continue}if(i!==null&&fF.get(i.instruction)===n&&i.length<UX){let o=i.expression.callFn(e.statement.expr.args,e.statement.expr.sourceSpan,e.statement.expr.pure);i.expression=o,i.op.statement=o.toStmt(),i.length++,Ze.remove(e)}else i={op:e,instruction:n,expression:e.statement.expr,length:1}}}function WX(t){for(let i of t.units)for(let e of i.update)(e.kind===B.Attribute||e.kind===B.StyleProp||e.kind==B.StyleMap||e.kind===B.ClassMap)&&e.expression instanceof er&&e.expression.strings.length===2&&e.expression.strings.every(o=>o==="")&&(e.expression=e.expression.expressions[0])}function qX(t){for(let i of t.units)for(let e of i.ops()){if(e.kind!==B.Conditional)continue;let n,o=e.conditions.findIndex(c=>c.expr===null);if(o>=0){let c=e.conditions.splice(o,1)[0].targetSlot;n=new e1(c)}else n=Ee(-1);let r=e.test==null?null:new $c(e.test,t.allocateXrefId()),a=null;for(let c=e.conditions.length-1;c>=0;c--){let m=e.conditions[c];if(m.expr!==null){if(r!==null){let p=c===0?r:new $m(r.xref);m.expr=new Mi(ht.Identical,p,m.expr)}else m.alias!==null&&(a??=t.allocateXrefId(),m.expr=new $c(m.expr,a),e.contextValue=new $m(a));n=new Fc(m.expr,new e1(m.targetSlot),n)}}e.processed=n,e.conditions=[]}}var XX=new Map([["&&",ht.And],[">",ht.Bigger],[">=",ht.BiggerEquals],["|",ht.BitwiseOr],["&",ht.BitwiseAnd],["/",ht.Divide],["=",ht.Assign],["==",ht.Equals],["===",ht.Identical],["<",ht.Lower],["<=",ht.LowerEquals],["-",ht.Minus],["%",ht.Modulo],["**",ht.Exponentiation],["*",ht.Multiply],["!=",ht.NotEquals],["!==",ht.NotIdentical],["??",ht.NullishCoalesce],["||",ht.Or],["+",ht.Plus],["in",ht.In],["instanceof",ht.InstanceOf],["+=",ht.AdditionAssignment],["-=",ht.SubtractionAssignment],["*=",ht.MultiplicationAssignment],["/=",ht.DivisionAssignment],["%=",ht.RemainderAssignment],["**=",ht.ExponentiationAssignment],["&&=",ht.AndAssignment],["||=",ht.OrAssignment],["??=",ht.NullishCoalesceAssignment]]);function bL(t){let i=new Map([["svg",Ia.SVG],["math",Ia.Math]]);return t===null?Ia.HTML:i.get(t)??Ia.HTML}function QX(t){let i=new Map([["svg",Ia.SVG],["math",Ia.Math]]);for(let[e,n]of i.entries())if(n===t)return e;return null}function YX(t,i){return i===Ia.HTML?t:`:${QX(i)}:${t}`}function xf(t){return Array.isArray(t)?oo(t.map(xf)):Ee(t)}function KX(t){let i=new Map;for(let e of t.units)for(let n of e.create)if(n.kind===B.ExtractedAttribute){let o=i.get(n.target)||new FD;i.set(n.target,o),o.add(n.bindingKind,n.name,n.expression,n.namespace,n.trustedValueFn),Ze.remove(n)}if(t instanceof ov)for(let e of t.units)for(let n of e.create)if(n.kind==B.Projection){let o=i.get(n.xref);if(o!==void 0){let r=LD(o);r.entries.length>0&&(n.attributes=r)}}else Hm(n)&&(n.attributes=_F(t,i,n.xref),n.kind===B.RepeaterCreate&&n.emptyView!==null&&(n.emptyAttributes=_F(t,i,n.emptyView)));else if(t instanceof r1)for(let[e,n]of i.entries()){if(e!==t.root.xref)throw new Error("An attribute would be const collected into the host binding's template function, but is not associated with the root xref.");let o=LD(n);o.entries.length>0&&(t.root.attributes=o)}}function _F(t,i,e){let n=i.get(e);if(n!==void 0){let o=LD(n);if(o.entries.length>0)return t.addConst(o)}return null}var $h=Object.freeze([]),FD=class{known=new Map;byKind=new Map;propertyBindings=null;projectAs=null;get attributes(){return this.byKind.get(Qt.Attribute)??$h}get classes(){return this.byKind.get(Qt.ClassName)??$h}get styles(){return this.byKind.get(Qt.StyleProperty)??$h}get bindings(){return this.propertyBindings??$h}get template(){return this.byKind.get(Qt.Template)??$h}get i18n(){return this.byKind.get(Qt.I18n)??$h}isKnown(i,e){let n=this.known.get(i)??new Set;return this.known.set(i,n),n.has(e)?!0:(n.add(e),!1)}add(i,e,n,o,r){if(!(i===Qt.Attribute||i===Qt.ClassName||i===Qt.StyleProperty)&&this.isKnown(i,e))return;if(e==="ngProjectAs"){if(n===null||!(n instanceof _a)||n.value==null||typeof n.value?.toString()!="string")throw Error("ngProjectAs must have a string literal value");this.projectAs=n.value.toString()}let c=this.arrayFor(i);if(c.push(...ZX(o,e)),i===Qt.Attribute||i===Qt.StyleProperty){if(n===null)throw Error("Attribute, i18n attribute, & style element attributes must have a value");if(r!==null){if(!lL(n))throw Error("AssertionError: extracted attribute value should be string literal");c.push(hW(r,new b0([new Cx(n.value)],[]),void 0,n.sourceSpan))}else c.push(n)}}arrayFor(i){return i===Qt.Property||i===Qt.TwoWayProperty?(this.propertyBindings??=[],this.propertyBindings):(this.byKind.has(i)||this.byKind.set(i,[]),this.byKind.get(i))}};function ZX(t,i){let e=Ee(i);return t?[Ee(0),Ee(t),e]:[e]}function LD({attributes:t,bindings:i,classes:e,i18n:n,projectAs:o,styles:r,template:a}){let c=[...t];if(o!==null){let m=TP(o)[0];c.push(Ee(5),xf(m))}return e.length>0&&c.push(Ee(1),...e),r.length>0&&c.push(Ee(2),...r),i.length>0&&c.push(Ee(3),...i),a.length>0&&c.push(Ee(4),...a),n.length>0&&c.push(Ee(6),...n),oo(c)}function JX(t,i){let e=t.get(i);if(e===void 0)throw new Error("All attributes should have an element-like target.");return e}function eQ(t){let i=new Map;for(let e of t.units)for(let n of e.create)Hm(n)&&i.set(n.xref,n);for(let e of t.units)for(let n of e.ops())if(n.kind===B.AnimationBinding){let o=tQ(n);t.kind===Vt.Host?e.create.push(o):Ze.insertAfter(o,JX(i,n.target)),Ze.remove(n)}}function tQ(t){if(t.animationBindingKind===0)return bX(t.name,t.target,t.name==="animate.enter"?"enter":"leave",t.expression,t.securityContext,t.sourceSpan);{let i=t.expression;return CX(t.name,t.target,t.name==="animate.enter"?"enter":"leave",[Ws(new Ar(i,i.sourceSpan))],t.securityContext,t.sourceSpan)}}function nQ(t){let i=new Map;for(let e of t.units){for(let n of e.create)n.kind===B.I18nAttributes&&i.set(n.target,n);for(let n of e.update)switch(n.kind){case B.Property:case B.Attribute:if(n.i18nContext===null||!(n.expression instanceof er))continue;let o=i.get(n.target);if(o===void 0)throw new Error("AssertionError: An i18n attribute binding instruction requires the owning element to have an I18nAttributes create instruction");if(o.target!==n.target)throw new Error("AssertionError: Expected i18nAttributes target element to match binding target element");let r=[];for(let a=0;a<n.expression.expressions.length;a++){let c=n.expression.expressions[a];if(n.expression.i18nPlaceholders.length!==n.expression.expressions.length)throw new Error(`AssertionError: An i18n attribute binding instruction requires the same number of expressions and placeholders, but found ${n.expression.i18nPlaceholders.length} placeholders and ${n.expression.expressions.length} expressions`);r.push(sL(n.i18nContext,o.target,o.xref,o.handle,c,null,n.expression.i18nPlaceholders[a],Y0.Creation,kf.I18nAttribute,n.name,n.sourceSpan))}Ze.replaceWithMany(n,r);break}}}function iQ(t){let i=new Map;for(let o of t.units)for(let r of o.ops())switch(r.kind){case B.Binding:case B.Property:case B.Attribute:case B.ExtractedAttribute:if(r.i18nMessage===null)continue;if(!i.has(r.i18nMessage)){let a=RE(du.Attr,t.allocateXrefId(),null,r.i18nMessage,null);o.create.push(a),i.set(r.i18nMessage,a.xref)}r.i18nContext=i.get(r.i18nMessage);break}let e=new Map;for(let o of t.units)for(let r of o.create)switch(r.kind){case B.I18nStart:if(r.xref===r.root){let a=RE(du.RootI18n,t.allocateXrefId(),r.xref,r.message,null);o.create.push(a),r.context=a.xref,e.set(r.xref,a)}break}for(let o of t.units)for(let r of o.create)if(r.kind===B.I18nStart&&r.xref!==r.root){let a=e.get(r.root);if(a===void 0)throw Error("AssertionError: Root i18n block i18n context should have been created.");r.context=a.xref,e.set(r.xref,a)}let n=null;for(let o of t.units)for(let r of o.create)switch(r.kind){case B.I18nStart:n=r;break;case B.I18nEnd:n=null;break;case B.IcuStart:if(n===null)throw Error("AssertionError: Unexpected ICU outside of an i18n block.");if(r.message.id!==n.message.id){let a=RE(du.Icu,t.allocateXrefId(),n.root,r.message,null);o.create.push(a),r.context=a.xref}else r.context=n.context,e.get(n.xref).contextKind=du.Icu;break}}function oQ(t){let i=new Map;for(let e of t.units)for(let n of e.update.reversed())if(n.kind===B.Binding&&n.isTextAttribute){let o=i.get(n.target)||new Set;o.has(n.name)&&(n.name==="style"||n.name==="class")&&Ze.remove(n),o.add(n.name),i.set(n.target,o)}}function rQ(t){for(let i of t.units)for(let e of i.create)e.kind===B.Defer&&(e.placeholderMinimumTime!==null&&(e.placeholderConfig=new iv(xf([e.placeholderMinimumTime]))),(e.loadingMinimumTime!==null||e.loadingAfterTime!==null)&&(e.loadingConfig=new iv(xf([e.loadingMinimumTime,e.loadingAfterTime]))))}function aQ(t){let i=new Map;function e(o){if(i.has(o.xref))return i.get(o.xref);let r=new sQ;for(let a of o.create)if(!(!Hm(a)||a.localRefs===null)){if(!Array.isArray(a.localRefs))throw new Error("LocalRefs were already processed, but were needed to resolve defer targets.");for(let c of a.localRefs)c.target===""&&r.targets.set(c.name,{xref:a.xref,slot:a.handle})}return i.set(o.xref,r),r}function n(o,r,a){switch(r.trigger.kind){case po.Idle:case po.Never:case po.Immediate:case po.Timer:return;case po.Hover:case po.Interaction:case po.Viewport:if(r.trigger.targetName===null){if(a===null)throw new Error("defer on trigger with no target name must have a placeholder block");let p=t.views.get(a);if(p==null)throw new Error("AssertionError: could not find placeholder view for defer on trigger");for(let h of p.create)if(Tf(h)&&(Hm(h)||h.kind===B.Projection)){r.trigger.targetXref=h.xref,r.trigger.targetView=a,r.trigger.targetSlotViewSteps=-1,r.trigger.targetSlot=h.handle;return}return}let c=a!==null?t.views.get(a):o,m=a!==null?-1:0;for(;c!==null;){let p=e(c);if(p.targets.has(r.trigger.targetName)){let{xref:h,slot:g}=p.targets.get(r.trigger.targetName);r.trigger.targetXref=h,r.trigger.targetView=c.xref,r.trigger.targetSlotViewSteps=m,r.trigger.targetSlot=g;return}c=c.parent!==null?t.views.get(c.parent):null,m++}break;default:throw new Error(`Trigger kind ${r.trigger.kind} not handled`)}}for(let o of t.units){let r=new Map;for(let a of o.create)switch(a.kind){case B.Defer:r.set(a.xref,a);break;case B.DeferOn:let c=r.get(a.defer);n(o,a,a.modifier==="hydrate"?c.mainView:c.placeholderView);break}}}var sQ=class{targets=new Map},lQ=new Map([[B.ElementEnd,[B.ElementStart,B.Element]],[B.ContainerEnd,[B.ContainerStart,B.Container]],[B.I18nEnd,[B.I18nStart,B.I18n]]]),cQ=new Set([B.Pipe]);function dQ(t){for(let i of t.units)for(let e of i.create){let n=lQ.get(e.kind);if(n===void 0)continue;let[o,r]=n,a=e.prev;for(;a!==null&&cQ.has(a.kind);)a=a.prev;a!==null&&a.kind===o&&(a.kind=r,Ze.remove(e))}}function mQ(t){for(let i of t.units)for(let e of i.ops())tr(e,n=>_Q(n,{job:t}),$n.None),tr(e,vQ,$n.None)}function Ls(t){return t instanceof xu?Ls(t.expr):t instanceof Mi?Ls(t.lhs)||Ls(t.rhs):t instanceof Fc?t.falseCase&&Ls(t.falseCase)?!0:Ls(t.condition)||Ls(t.trueCase):t instanceof C0?Ls(t.condition):t instanceof $c?Ls(t.expr):t instanceof Hs?Ls(t.receiver):t instanceof Ad?Ls(t.receiver)||Ls(t.index):t instanceof nc?Ls(t.expr):t instanceof fs||t instanceof Lc||t instanceof ic||t instanceof Au||t instanceof Iu}function pQ(t){let i=new Set;return $t(t,e=>(e instanceof $c&&i.add(e.xref),e),$n.None),i}function uQ(t,i,e){return $t(t,n=>{if(n instanceof $c&&i.has(n.xref)){let o=new $m(n.xref);return new $c(o,o.xref)}return n},$n.None),t}function Hh(t,i,e){let n;if(Ls(t)){let o=e.job.allocateXrefId();n=[new $c(t,o),new $m(o)]}else n=[t,t.clone()],uQ(n[1],pQ(n[0]));return new Cf(n[0],i(n[1]))}function hQ(t){return t instanceof vf||t instanceof bf||t instanceof Au}function fQ(t){return t instanceof Hs||t instanceof Ad||t instanceof fs}function CL(t){return hQ(t)||fQ(t)}function gQ(t){if(CL(t)&&t.receiver instanceof Cf){let i=t.receiver;for(;i.expr instanceof Cf;)i=i.expr;return i}return null}function _Q(t,i){if(!CL(t))return t;let e=gQ(t);if(e){if(t instanceof fs)return e.expr=e.expr.callFn(t.args),t.receiver;if(t instanceof Hs)return e.expr=e.expr.prop(t.name),t.receiver;if(t instanceof Ad)return e.expr=e.expr.key(t.index),t.receiver;if(t instanceof Au)return e.expr=Hh(e.expr,n=>n.callFn(t.args),i),t.receiver;if(t instanceof vf)return e.expr=Hh(e.expr,n=>n.prop(t.name),i),t.receiver;if(t instanceof bf)return e.expr=Hh(e.expr,n=>n.key(t.index),i),t.receiver}else{if(t instanceof Au)return Hh(t.receiver,n=>n.callFn(t.args),i);if(t instanceof vf)return Hh(t.receiver,n=>n.prop(t.name),i);if(t instanceof bf)return Hh(t.receiver,n=>n.key(t.index),i)}return t}function vQ(t){return t instanceof Cf?new nc(new Fc(new Mi(ht.Equals,t.guard,lf),lf,t.expr)):t}var vF="\uFFFD",bQ="#",CQ="*",xQ="/",yQ=":",SQ="[",wQ="]",MQ="|";function kQ(t){let i=new Map,e=new Map,n=new Map;for(let r of t.units)for(let a of r.create)switch(a.kind){case B.I18nContext:let c=TQ(t,a);r.create.push(c),i.set(a.xref,c),n.set(a.xref,a);break;case B.I18nStart:e.set(a.xref,a);break}let o=null;for(let r of t.units)for(let a of r.create)switch(a.kind){case B.IcuStart:o=a,Ze.remove(a);let c=n.get(a.context);if(c.contextKind!==du.Icu)continue;let m=e.get(c.i18nBlock);if(m.context===c.xref)continue;let p=e.get(m.root),h=i.get(p.context);if(h===void 0)throw Error("AssertionError: ICU sub-message should belong to a root message.");let g=i.get(c.xref);g.messagePlaceholder=a.messagePlaceholder,h.subMessages.push(g.xref);break;case B.IcuEnd:o=null,Ze.remove(a);break;case B.IcuPlaceholder:if(o===null||o.context==null)throw Error("AssertionError: Unexpected ICU placeholder outside of i18n context");i.get(o.context).postprocessingParams.set(a.name,Ee(EQ(a))),Ze.remove(a);break}}function TQ(t,i,e){let n=bF(i.params),o=bF(i.postprocessingParams),r=[...i.params.values()].some(a=>a.length>1);return TX(t.allocateXrefId(),i.xref,i.i18nBlock,i.message,null,n,o,r)}function EQ(t){if(t.strings.length!==t.expressionPlaceholders.length+1)throw Error(`AssertionError: Invalid ICU placeholder with ${t.strings.length} strings and ${t.expressionPlaceholders.length} expressions`);let i=t.expressionPlaceholders.map(Zh);return t.strings.flatMap((e,n)=>[e,i[n]||""]).join("")}function bF(t){let i=new Map;for(let[e,n]of t){let o=DQ(n);o!==null&&i.set(e,Ee(o))}return i}function DQ(t){if(t.length===0)return null;let i=t.map(e=>Zh(e));return i.length===1?i[0]:`${SQ}${i.join(MQ)}${wQ}`}function Zh(t){if(t.flags&vo.ElementTag&&t.flags&vo.TemplateTag){if(typeof t.value!="object")throw Error("AssertionError: Expected i18n param value to have an element and template slot");let o=Zh(tt(H({},t),{value:t.value.element,flags:t.flags&~vo.TemplateTag})),r=Zh(tt(H({},t),{value:t.value.template,flags:t.flags&~vo.ElementTag}));return t.flags&vo.OpenTag&&t.flags&vo.CloseTag?`${r}${o}${r}`:t.flags&vo.CloseTag?`${o}${r}`:`${r}${o}`}if(t.flags&vo.OpenTag&&t.flags&vo.CloseTag)return`${Zh(tt(H({},t),{flags:t.flags&~vo.CloseTag}))}${Zh(tt(H({},t),{flags:t.flags&~vo.OpenTag}))}`;if(t.flags===vo.None)return`${t.value}`;let i="",e="";t.flags&vo.ElementTag?i=bQ:t.flags&vo.TemplateTag&&(i=CQ),i!==""&&(e=t.flags&vo.CloseTag?xQ:"");let n=t.subTemplateIndex===null?"":`${yQ}${t.subTemplateIndex}`;return`${vF}${e}${i}${t.value}${n}${vF}`}function PQ(t){for(let i of t.units){let e=new Map;for(let o of i.create){if(Tf(o)){if(o.handle.slot===null)throw new Error("AssertionError: expected slots to have been allocated before generating advance() calls")}else continue;e.set(o.xref,o.handle.slot)}let n=0;for(let o of i.update){let r=null;if(K0(o)?r=o:wr(o,c=>{r===null&&K0(c)&&(r=c)}),r===null)continue;if(!e.has(r.target))throw new Error(`AssertionError: reference to unknown slot for target ${r.target}`);let a=e.get(r.target);if(n!==a){let c=a-n;if(c<0)throw new Error("AssertionError: slot counter should never need to move backwards");Ze.insertBefore(sX(c,r.sourceSpan),o),n=a}}}}function IQ(t){for(let i of t.units)for(let e of i.update){if(e.kind!==B.StoreLet)continue;let n={kind:oa.Identifier,name:null,identifier:e.declaredName,local:!0};Ze.replace(e,Dm(t.allocateXrefId(),n,new Z0(e.target,e.value,e.sourceSpan),pl.None))}}function AQ(t){let e=[],n=0;for(let o of t.units)for(let r of o.create)r.kind===B.Projection&&(e.push(r.selector),r.projectionSlotIndex=n++);if(e.length>0){let o=null;if(e.length>1||e[0]!=="*"){let r=e.map(a=>a==="*"?a:TP(a));o=t.pool.getConstLiteral(xf(r),!0)}t.contentSelectors=t.pool.getConstLiteral(xf(e),!0),t.root.create.prepend([SX(o)])}}function OQ(t){i0(t.root,null)}function i0(t,i){let e=CF(t,i);for(let n of t.create)switch(n.kind){case B.ConditionalCreate:case B.ConditionalBranchCreate:case B.Template:i0(t.job.views.get(n.xref),e);break;case B.Projection:n.fallbackView!==null&&i0(t.job.views.get(n.fallbackView),e);break;case B.RepeaterCreate:i0(t.job.views.get(n.xref),e),n.emptyView&&i0(t.job.views.get(n.emptyView),e),n.trackByOps!==null&&n.trackByOps.prepend(o0(t,e,!1));break;case B.Animation:case B.AnimationListener:case B.Listener:case B.TwoWayListener:n.handlerOps.prepend(o0(t,e,!0));break}t.update.prepend(o0(t,e,!1));for(let n of t.functions)n.ops.prepend(o0(t,CF(t,i),!0))}function CF(t,i){let e={view:t.xref,viewContextVariable:{kind:oa.Context,name:null,view:t.xref},contextVariables:new Map,aliases:t.aliases,references:[],letDeclarations:[],parent:i};for(let n of t.contextVariables.keys())e.contextVariables.set(n,{kind:oa.Identifier,name:null,identifier:n,local:!1});for(let n of t.create)switch(n.kind){case B.ElementStart:case B.ConditionalCreate:case B.ConditionalBranchCreate:case B.Template:if(!Array.isArray(n.localRefs))throw new Error("AssertionError: expected localRefs to be an array");for(let o=0;o<n.localRefs.length;o++)e.references.push({name:n.localRefs[o].name,targetId:n.xref,targetSlot:n.handle,offset:o,variable:{kind:oa.Identifier,name:null,identifier:n.localRefs[o].name,local:!1}});break;case B.DeclareLet:e.letDeclarations.push({targetId:n.xref,targetSlot:n.handle,variable:{kind:oa.Identifier,name:null,identifier:n.declaredName,local:!1}});break}return e}function o0(t,i,e){let n=[];i.view!==t.xref&&n.push(Dm(t.job.allocateXrefId(),i.viewContextVariable,new Kx,pl.None));let o=t.job.views.get(i.view);for(let[r,a]of o.contextVariables){let c=new zm(i.view),m=a===gL?c:new Hs(c,a);n.push(Dm(t.job.allocateXrefId(),i.contextVariables.get(r),m,pl.None))}for(let r of o.aliases)n.push(Dm(t.job.allocateXrefId(),r,r.expression.clone(),pl.AlwaysInline));for(let r of i.references)n.push(Dm(t.job.allocateXrefId(),r.variable,new Yx(r.targetId,r.targetSlot,r.offset),pl.None));if(i.view!==t.xref||e)for(let r of i.letDeclarations)n.push(Dm(t.job.allocateXrefId(),r.variable,new J0(r.targetId,r.targetSlot),pl.None));return i.parent!==null&&n.push(...o0(t,i.parent,!1)),n}function NQ(t){for(let i of t.units)for(let e of i.ops())tr(e,n=>n instanceof iv?Ee(t.addConst(n.expr)):n,$n.None)}var xF="style.",yF="class.",RQ="style!",SF="class!",wF="!important";function FQ(t){for(let i of t.root.update)if(i.kind===B.Binding&&i.bindingKind===Qt.Property)if(i.name.endsWith(wF)&&(i.name=i.name.substring(0,i.name.length-wF.length)),i.name.startsWith(xF)){i.bindingKind=Qt.StyleProperty,i.name=i.name.substring(xF.length),LQ(i.name)||(i.name=BQ(i.name));let{property:e,suffix:n}=FE(i.name);i.name=e,i.unit=n}else i.name.startsWith(RQ)?(i.bindingKind=Qt.StyleProperty,i.name="style"):i.name.startsWith(yF)?(i.bindingKind=Qt.ClassName,i.name=FE(i.name.substring(yF.length)).property):i.name.startsWith(SF)&&(i.bindingKind=Qt.ClassName,i.name=FE(i.name.substring(SF.length)).property)}function LQ(t){return t.startsWith("--")}function BQ(t){return t.replace(/[a-z][A-Z]/g,i=>i.charAt(0)+"-"+i.charAt(1)).toLowerCase()}function FE(t){let i=t.indexOf("!important");i!==-1&&(t=i>0?t.substring(0,i):"");let e=null,n=t,o=t.lastIndexOf(".");return o>0&&(e=t.slice(o+1),n=t.substring(0,o)),{property:n,suffix:e}}function BD(t,i=!1){return gl(Object.keys(t).map(e=>({key:e,quoted:i,value:t[e]})))}var VD=class{visitText(i){return i.value}visitContainer(i){return i.children.map(e=>e.visit(this)).join("")}visitIcu(i){let e=Object.keys(i.cases).map(o=>`${o} {${i.cases[o].visit(this)}}`);return`{${i.expressionPlaceholder}, ${i.type}, ${e.join(" ")}}`}visitTagPlaceholder(i){return i.isVoid?this.formatPh(i.startName):`${this.formatPh(i.startName)}${i.children.map(e=>e.visit(this)).join("")}${this.formatPh(i.closeName)}`}visitPlaceholder(i){return this.formatPh(i.name)}visitBlockPlaceholder(i){return`${this.formatPh(i.startName)}${i.children.map(e=>e.visit(this)).join("")}${this.formatPh(i.closeName)}`}visitIcuPlaceholder(i,e){return this.formatPh(i.name)}formatPh(i){return`{${fv(i,!1)}}`}},VQ=new VD;function xL(t){return t.visit(VQ)}var Od=class{sourceSpan;i18n;constructor(i,e){this.sourceSpan=i,this.i18n=e}},Ou=class extends Od{value;tokens;constructor(i,e,n,o){super(e,o),this.value=i,this.tokens=n}visit(i,e){return i.visitText(this,e)}},fu=class extends Od{switchValue;type;cases;switchValueSourceSpan;constructor(i,e,n,o,r,a){super(o,a),this.switchValue=i,this.type=e,this.cases=n,this.switchValueSourceSpan=r}visit(i,e){return i.visitExpansion(this,e)}},a1=class{value;expression;sourceSpan;valueSourceSpan;expSourceSpan;constructor(i,e,n,o,r){this.value=i,this.expression=e,this.sourceSpan=n,this.valueSourceSpan=o,this.expSourceSpan=r}visit(i,e){return i.visitExpansionCase(this,e)}},zD=class extends Od{name;value;keySpan;valueSpan;valueTokens;constructor(i,e,n,o,r,a,c){super(n,c),this.name=i,this.value=e,this.keySpan=o,this.valueSpan=r,this.valueTokens=a}visit(i,e){return i.visitAttribute(this,e)}},sl=class extends Od{name;attrs;directives;children;isSelfClosing;startSourceSpan;endSourceSpan;isVoid;constructor(i,e,n,o,r,a,c,m=null,p,h){super(a,h),this.name=i,this.attrs=e,this.directives=n,this.children=o,this.isSelfClosing=r,this.startSourceSpan=c,this.endSourceSpan=m,this.isVoid=p}visit(i,e){return i.visitElement(this,e)}},rv=class{value;sourceSpan;constructor(i,e){this.value=i,this.sourceSpan=e}visit(i,e){return i.visitComment(this,e)}},dl=class extends Od{name;parameters;children;nameSpan;startSourceSpan;endSourceSpan;constructor(i,e,n,o,r,a,c=null,m){super(o,m),this.name=i,this.parameters=e,this.children=n,this.nameSpan=r,this.startSourceSpan=a,this.endSourceSpan=c}visit(i,e){return i.visitBlock(this,e)}},Ua=class extends Od{componentName;tagName;fullName;attrs;directives;children;isSelfClosing;startSourceSpan;endSourceSpan;constructor(i,e,n,o,r,a,c,m,p,h=null,g){super(m,g),this.componentName=i,this.tagName=e,this.fullName=n,this.attrs=o,this.directives=r,this.children=a,this.isSelfClosing=c,this.startSourceSpan=p,this.endSourceSpan=h}visit(i,e){return i.visitComponent(this,e)}},jD=class{name;attrs;sourceSpan;startSourceSpan;endSourceSpan;constructor(i,e,n,o,r=null){this.name=i,this.attrs=e,this.sourceSpan=n,this.startSourceSpan=o,this.endSourceSpan=r}visit(i,e){return i.visitDirective(this,e)}},s1=class{expression;sourceSpan;constructor(i,e){this.expression=i,this.sourceSpan=e}visit(i,e){return i.visitBlockParameter(this,e)}},l1=class{name;value;sourceSpan;nameSpan;valueSpan;constructor(i,e,n,o,r){this.name=i,this.value=e,this.sourceSpan=n,this.nameSpan=o,this.valueSpan=r}visit(i,e){return i.visitLetDeclaration(this,e)}};function Do(t,i,e=null){let n=[],o=t.visit?r=>t.visit(r,e)||r.visit(t,e):r=>r.visit(t,e);return i.forEach(r=>{let a=o(r);a&&n.push(a)}),n}var av={AElig:"\xC6",AMP:"&",amp:"&",Aacute:"\xC1",Abreve:"\u0102",Acirc:"\xC2",Acy:"\u0410",Afr:"\u{1D504}",Agrave:"\xC0",Alpha:"\u0391",Amacr:"\u0100",And:"\u2A53",Aogon:"\u0104",Aopf:"\u{1D538}",ApplyFunction:"\u2061",af:"\u2061",Aring:"\xC5",angst:"\xC5",Ascr:"\u{1D49C}",Assign:"\u2254",colone:"\u2254",coloneq:"\u2254",Atilde:"\xC3",Auml:"\xC4",Backslash:"\u2216",setminus:"\u2216",setmn:"\u2216",smallsetminus:"\u2216",ssetmn:"\u2216",Barv:"\u2AE7",Barwed:"\u2306",doublebarwedge:"\u2306",Bcy:"\u0411",Because:"\u2235",becaus:"\u2235",because:"\u2235",Bernoullis:"\u212C",Bscr:"\u212C",bernou:"\u212C",Beta:"\u0392",Bfr:"\u{1D505}",Bopf:"\u{1D539}",Breve:"\u02D8",breve:"\u02D8",Bumpeq:"\u224E",HumpDownHump:"\u224E",bump:"\u224E",CHcy:"\u0427",COPY:"\xA9",copy:"\xA9",Cacute:"\u0106",Cap:"\u22D2",CapitalDifferentialD:"\u2145",DD:"\u2145",Cayleys:"\u212D",Cfr:"\u212D",Ccaron:"\u010C",Ccedil:"\xC7",Ccirc:"\u0108",Cconint:"\u2230",Cdot:"\u010A",Cedilla:"\xB8",cedil:"\xB8",CenterDot:"\xB7",centerdot:"\xB7",middot:"\xB7",Chi:"\u03A7",CircleDot:"\u2299",odot:"\u2299",CircleMinus:"\u2296",ominus:"\u2296",CirclePlus:"\u2295",oplus:"\u2295",CircleTimes:"\u2297",otimes:"\u2297",ClockwiseContourIntegral:"\u2232",cwconint:"\u2232",CloseCurlyDoubleQuote:"\u201D",rdquo:"\u201D",rdquor:"\u201D",CloseCurlyQuote:"\u2019",rsquo:"\u2019",rsquor:"\u2019",Colon:"\u2237",Proportion:"\u2237",Colone:"\u2A74",Congruent:"\u2261",equiv:"\u2261",Conint:"\u222F",DoubleContourIntegral:"\u222F",ContourIntegral:"\u222E",conint:"\u222E",oint:"\u222E",Copf:"\u2102",complexes:"\u2102",Coproduct:"\u2210",coprod:"\u2210",CounterClockwiseContourIntegral:"\u2233",awconint:"\u2233",Cross:"\u2A2F",Cscr:"\u{1D49E}",Cup:"\u22D3",CupCap:"\u224D",asympeq:"\u224D",DDotrahd:"\u2911",DJcy:"\u0402",DScy:"\u0405",DZcy:"\u040F",Dagger:"\u2021",ddagger:"\u2021",Darr:"\u21A1",Dashv:"\u2AE4",DoubleLeftTee:"\u2AE4",Dcaron:"\u010E",Dcy:"\u0414",Del:"\u2207",nabla:"\u2207",Delta:"\u0394",Dfr:"\u{1D507}",DiacriticalAcute:"\xB4",acute:"\xB4",DiacriticalDot:"\u02D9",dot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",dblac:"\u02DD",DiacriticalGrave:"`",grave:"`",DiacriticalTilde:"\u02DC",tilde:"\u02DC",Diamond:"\u22C4",diam:"\u22C4",diamond:"\u22C4",DifferentialD:"\u2146",dd:"\u2146",Dopf:"\u{1D53B}",Dot:"\xA8",DoubleDot:"\xA8",die:"\xA8",uml:"\xA8",DotDot:"\u20DC",DotEqual:"\u2250",doteq:"\u2250",esdot:"\u2250",DoubleDownArrow:"\u21D3",Downarrow:"\u21D3",dArr:"\u21D3",DoubleLeftArrow:"\u21D0",Leftarrow:"\u21D0",lArr:"\u21D0",DoubleLeftRightArrow:"\u21D4",Leftrightarrow:"\u21D4",hArr:"\u21D4",iff:"\u21D4",DoubleLongLeftArrow:"\u27F8",Longleftarrow:"\u27F8",xlArr:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",Longleftrightarrow:"\u27FA",xhArr:"\u27FA",DoubleLongRightArrow:"\u27F9",Longrightarrow:"\u27F9",xrArr:"\u27F9",DoubleRightArrow:"\u21D2",Implies:"\u21D2",Rightarrow:"\u21D2",rArr:"\u21D2",DoubleRightTee:"\u22A8",vDash:"\u22A8",DoubleUpArrow:"\u21D1",Uparrow:"\u21D1",uArr:"\u21D1",DoubleUpDownArrow:"\u21D5",Updownarrow:"\u21D5",vArr:"\u21D5",DoubleVerticalBar:"\u2225",par:"\u2225",parallel:"\u2225",shortparallel:"\u2225",spar:"\u2225",DownArrow:"\u2193",ShortDownArrow:"\u2193",darr:"\u2193",downarrow:"\u2193",DownArrowBar:"\u2913",DownArrowUpArrow:"\u21F5",duarr:"\u21F5",DownBreve:"\u0311",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVector:"\u21BD",leftharpoondown:"\u21BD",lhard:"\u21BD",DownLeftVectorBar:"\u2956",DownRightTeeVector:"\u295F",DownRightVector:"\u21C1",rhard:"\u21C1",rightharpoondown:"\u21C1",DownRightVectorBar:"\u2957",DownTee:"\u22A4",top:"\u22A4",DownTeeArrow:"\u21A7",mapstodown:"\u21A7",Dscr:"\u{1D49F}",Dstrok:"\u0110",ENG:"\u014A",ETH:"\xD0",Eacute:"\xC9",Ecaron:"\u011A",Ecirc:"\xCA",Ecy:"\u042D",Edot:"\u0116",Efr:"\u{1D508}",Egrave:"\xC8",Element:"\u2208",in:"\u2208",isin:"\u2208",isinv:"\u2208",Emacr:"\u0112",EmptySmallSquare:"\u25FB",EmptyVerySmallSquare:"\u25AB",Eogon:"\u0118",Eopf:"\u{1D53C}",Epsilon:"\u0395",Equal:"\u2A75",EqualTilde:"\u2242",eqsim:"\u2242",esim:"\u2242",Equilibrium:"\u21CC",rightleftharpoons:"\u21CC",rlhar:"\u21CC",Escr:"\u2130",expectation:"\u2130",Esim:"\u2A73",Eta:"\u0397",Euml:"\xCB",Exists:"\u2203",exist:"\u2203",ExponentialE:"\u2147",ee:"\u2147",exponentiale:"\u2147",Fcy:"\u0424",Ffr:"\u{1D509}",FilledSmallSquare:"\u25FC",FilledVerySmallSquare:"\u25AA",blacksquare:"\u25AA",squarf:"\u25AA",squf:"\u25AA",Fopf:"\u{1D53D}",ForAll:"\u2200",forall:"\u2200",Fouriertrf:"\u2131",Fscr:"\u2131",GJcy:"\u0403",GT:">",gt:">",Gamma:"\u0393",Gammad:"\u03DC",Gbreve:"\u011E",Gcedil:"\u0122",Gcirc:"\u011C",Gcy:"\u0413",Gdot:"\u0120",Gfr:"\u{1D50A}",Gg:"\u22D9",ggg:"\u22D9",Gopf:"\u{1D53E}",GreaterEqual:"\u2265",ge:"\u2265",geq:"\u2265",GreaterEqualLess:"\u22DB",gel:"\u22DB",gtreqless:"\u22DB",GreaterFullEqual:"\u2267",gE:"\u2267",geqq:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",gl:"\u2277",gtrless:"\u2277",GreaterSlantEqual:"\u2A7E",geqslant:"\u2A7E",ges:"\u2A7E",GreaterTilde:"\u2273",gsim:"\u2273",gtrsim:"\u2273",Gscr:"\u{1D4A2}",Gt:"\u226B",NestedGreaterGreater:"\u226B",gg:"\u226B",HARDcy:"\u042A",Hacek:"\u02C7",caron:"\u02C7",Hat:"^",Hcirc:"\u0124",Hfr:"\u210C",Poincareplane:"\u210C",HilbertSpace:"\u210B",Hscr:"\u210B",hamilt:"\u210B",Hopf:"\u210D",quaternions:"\u210D",HorizontalLine:"\u2500",boxh:"\u2500",Hstrok:"\u0126",HumpEqual:"\u224F",bumpe:"\u224F",bumpeq:"\u224F",IEcy:"\u0415",IJlig:"\u0132",IOcy:"\u0401",Iacute:"\xCD",Icirc:"\xCE",Icy:"\u0418",Idot:"\u0130",Ifr:"\u2111",Im:"\u2111",image:"\u2111",imagpart:"\u2111",Igrave:"\xCC",Imacr:"\u012A",ImaginaryI:"\u2148",ii:"\u2148",Int:"\u222C",Integral:"\u222B",int:"\u222B",Intersection:"\u22C2",bigcap:"\u22C2",xcap:"\u22C2",InvisibleComma:"\u2063",ic:"\u2063",InvisibleTimes:"\u2062",it:"\u2062",Iogon:"\u012E",Iopf:"\u{1D540}",Iota:"\u0399",Iscr:"\u2110",imagline:"\u2110",Itilde:"\u0128",Iukcy:"\u0406",Iuml:"\xCF",Jcirc:"\u0134",Jcy:"\u0419",Jfr:"\u{1D50D}",Jopf:"\u{1D541}",Jscr:"\u{1D4A5}",Jsercy:"\u0408",Jukcy:"\u0404",KHcy:"\u0425",KJcy:"\u040C",Kappa:"\u039A",Kcedil:"\u0136",Kcy:"\u041A",Kfr:"\u{1D50E}",Kopf:"\u{1D542}",Kscr:"\u{1D4A6}",LJcy:"\u0409",LT:"<",lt:"<",Lacute:"\u0139",Lambda:"\u039B",Lang:"\u27EA",Laplacetrf:"\u2112",Lscr:"\u2112",lagran:"\u2112",Larr:"\u219E",twoheadleftarrow:"\u219E",Lcaron:"\u013D",Lcedil:"\u013B",Lcy:"\u041B",LeftAngleBracket:"\u27E8",lang:"\u27E8",langle:"\u27E8",LeftArrow:"\u2190",ShortLeftArrow:"\u2190",larr:"\u2190",leftarrow:"\u2190",slarr:"\u2190",LeftArrowBar:"\u21E4",larrb:"\u21E4",LeftArrowRightArrow:"\u21C6",leftrightarrows:"\u21C6",lrarr:"\u21C6",LeftCeiling:"\u2308",lceil:"\u2308",LeftDoubleBracket:"\u27E6",lobrk:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",dharl:"\u21C3",downharpoonleft:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",lfloor:"\u230A",LeftRightArrow:"\u2194",harr:"\u2194",leftrightarrow:"\u2194",LeftRightVector:"\u294E",LeftTee:"\u22A3",dashv:"\u22A3",LeftTeeArrow:"\u21A4",mapstoleft:"\u21A4",LeftTeeVector:"\u295A",LeftTriangle:"\u22B2",vartriangleleft:"\u22B2",vltri:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",ltrie:"\u22B4",trianglelefteq:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",uharl:"\u21BF",upharpoonleft:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",leftharpoonup:"\u21BC",lharu:"\u21BC",LeftVectorBar:"\u2952",LessEqualGreater:"\u22DA",leg:"\u22DA",lesseqgtr:"\u22DA",LessFullEqual:"\u2266",lE:"\u2266",leqq:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",lg:"\u2276",LessLess:"\u2AA1",LessSlantEqual:"\u2A7D",leqslant:"\u2A7D",les:"\u2A7D",LessTilde:"\u2272",lesssim:"\u2272",lsim:"\u2272",Lfr:"\u{1D50F}",Ll:"\u22D8",Lleftarrow:"\u21DA",lAarr:"\u21DA",Lmidot:"\u013F",LongLeftArrow:"\u27F5",longleftarrow:"\u27F5",xlarr:"\u27F5",LongLeftRightArrow:"\u27F7",longleftrightarrow:"\u27F7",xharr:"\u27F7",LongRightArrow:"\u27F6",longrightarrow:"\u27F6",xrarr:"\u27F6",Lopf:"\u{1D543}",LowerLeftArrow:"\u2199",swarr:"\u2199",swarrow:"\u2199",LowerRightArrow:"\u2198",searr:"\u2198",searrow:"\u2198",Lsh:"\u21B0",lsh:"\u21B0",Lstrok:"\u0141",Lt:"\u226A",NestedLessLess:"\u226A",ll:"\u226A",Map:"\u2905",Mcy:"\u041C",MediumSpace:"\u205F",Mellintrf:"\u2133",Mscr:"\u2133",phmmat:"\u2133",Mfr:"\u{1D510}",MinusPlus:"\u2213",mnplus:"\u2213",mp:"\u2213",Mopf:"\u{1D544}",Mu:"\u039C",NJcy:"\u040A",Nacute:"\u0143",Ncaron:"\u0147",Ncedil:"\u0145",Ncy:"\u041D",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",ZeroWidthSpace:"\u200B",NewLine:`
|
||
`,Nfr:"\u{1D511}",NoBreak:"\u2060",NonBreakingSpace:"\xA0",nbsp:"\xA0",Nopf:"\u2115",naturals:"\u2115",Not:"\u2AEC",NotCongruent:"\u2262",nequiv:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",npar:"\u2226",nparallel:"\u2226",nshortparallel:"\u2226",nspar:"\u2226",NotElement:"\u2209",notin:"\u2209",notinva:"\u2209",NotEqual:"\u2260",ne:"\u2260",NotEqualTilde:"\u2242\u0338",nesim:"\u2242\u0338",NotExists:"\u2204",nexist:"\u2204",nexists:"\u2204",NotGreater:"\u226F",ngt:"\u226F",ngtr:"\u226F",NotGreaterEqual:"\u2271",nge:"\u2271",ngeq:"\u2271",NotGreaterFullEqual:"\u2267\u0338",ngE:"\u2267\u0338",ngeqq:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",nGtv:"\u226B\u0338",NotGreaterLess:"\u2279",ntgl:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",NotGreaterTilde:"\u2275",ngsim:"\u2275",NotHumpDownHump:"\u224E\u0338",nbump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",nbumpe:"\u224F\u0338",NotLeftTriangle:"\u22EA",nltri:"\u22EA",ntriangleleft:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",nltrie:"\u22EC",ntrianglelefteq:"\u22EC",NotLess:"\u226E",nless:"\u226E",nlt:"\u226E",NotLessEqual:"\u2270",nle:"\u2270",nleq:"\u2270",NotLessGreater:"\u2278",ntlg:"\u2278",NotLessLess:"\u226A\u0338",nLtv:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",NotLessTilde:"\u2274",nlsim:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",NotPrecedes:"\u2280",npr:"\u2280",nprec:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",npre:"\u2AAF\u0338",npreceq:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",nprcue:"\u22E0",NotReverseElement:"\u220C",notni:"\u220C",notniva:"\u220C",NotRightTriangle:"\u22EB",nrtri:"\u22EB",ntriangleright:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",nrtrie:"\u22ED",ntrianglerighteq:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",nsqsube:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",nsqsupe:"\u22E3",NotSubset:"\u2282\u20D2",nsubset:"\u2282\u20D2",vnsub:"\u2282\u20D2",NotSubsetEqual:"\u2288",nsube:"\u2288",nsubseteq:"\u2288",NotSucceeds:"\u2281",nsc:"\u2281",nsucc:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",nsce:"\u2AB0\u0338",nsucceq:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",nsccue:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",nsupset:"\u2283\u20D2",vnsup:"\u2283\u20D2",NotSupersetEqual:"\u2289",nsupe:"\u2289",nsupseteq:"\u2289",NotTilde:"\u2241",nsim:"\u2241",NotTildeEqual:"\u2244",nsime:"\u2244",nsimeq:"\u2244",NotTildeFullEqual:"\u2247",ncong:"\u2247",NotTildeTilde:"\u2249",nap:"\u2249",napprox:"\u2249",NotVerticalBar:"\u2224",nmid:"\u2224",nshortmid:"\u2224",nsmid:"\u2224",Nscr:"\u{1D4A9}",Ntilde:"\xD1",Nu:"\u039D",OElig:"\u0152",Oacute:"\xD3",Ocirc:"\xD4",Ocy:"\u041E",Odblac:"\u0150",Ofr:"\u{1D512}",Ograve:"\xD2",Omacr:"\u014C",Omega:"\u03A9",ohm:"\u03A9",Omicron:"\u039F",Oopf:"\u{1D546}",OpenCurlyDoubleQuote:"\u201C",ldquo:"\u201C",OpenCurlyQuote:"\u2018",lsquo:"\u2018",Or:"\u2A54",Oscr:"\u{1D4AA}",Oslash:"\xD8",Otilde:"\xD5",Otimes:"\u2A37",Ouml:"\xD6",OverBar:"\u203E",oline:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",tbrk:"\u23B4",OverParenthesis:"\u23DC",PartialD:"\u2202",part:"\u2202",Pcy:"\u041F",Pfr:"\u{1D513}",Phi:"\u03A6",Pi:"\u03A0",PlusMinus:"\xB1",plusmn:"\xB1",pm:"\xB1",Popf:"\u2119",primes:"\u2119",Pr:"\u2ABB",Precedes:"\u227A",pr:"\u227A",prec:"\u227A",PrecedesEqual:"\u2AAF",pre:"\u2AAF",preceq:"\u2AAF",PrecedesSlantEqual:"\u227C",prcue:"\u227C",preccurlyeq:"\u227C",PrecedesTilde:"\u227E",precsim:"\u227E",prsim:"\u227E",Prime:"\u2033",Product:"\u220F",prod:"\u220F",Proportional:"\u221D",prop:"\u221D",propto:"\u221D",varpropto:"\u221D",vprop:"\u221D",Pscr:"\u{1D4AB}",Psi:"\u03A8",QUOT:'"',quot:'"',Qfr:"\u{1D514}",Qopf:"\u211A",rationals:"\u211A",Qscr:"\u{1D4AC}",RBarr:"\u2910",drbkarow:"\u2910",REG:"\xAE",circledR:"\xAE",reg:"\xAE",Racute:"\u0154",Rang:"\u27EB",Rarr:"\u21A0",twoheadrightarrow:"\u21A0",Rarrtl:"\u2916",Rcaron:"\u0158",Rcedil:"\u0156",Rcy:"\u0420",Re:"\u211C",Rfr:"\u211C",real:"\u211C",realpart:"\u211C",ReverseElement:"\u220B",SuchThat:"\u220B",ni:"\u220B",niv:"\u220B",ReverseEquilibrium:"\u21CB",leftrightharpoons:"\u21CB",lrhar:"\u21CB",ReverseUpEquilibrium:"\u296F",duhar:"\u296F",Rho:"\u03A1",RightAngleBracket:"\u27E9",rang:"\u27E9",rangle:"\u27E9",RightArrow:"\u2192",ShortRightArrow:"\u2192",rarr:"\u2192",rightarrow:"\u2192",srarr:"\u2192",RightArrowBar:"\u21E5",rarrb:"\u21E5",RightArrowLeftArrow:"\u21C4",rightleftarrows:"\u21C4",rlarr:"\u21C4",RightCeiling:"\u2309",rceil:"\u2309",RightDoubleBracket:"\u27E7",robrk:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",dharr:"\u21C2",downharpoonright:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",rfloor:"\u230B",RightTee:"\u22A2",vdash:"\u22A2",RightTeeArrow:"\u21A6",map:"\u21A6",mapsto:"\u21A6",RightTeeVector:"\u295B",RightTriangle:"\u22B3",vartriangleright:"\u22B3",vrtri:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",rtrie:"\u22B5",trianglerighteq:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",uharr:"\u21BE",upharpoonright:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",rharu:"\u21C0",rightharpoonup:"\u21C0",RightVectorBar:"\u2953",Ropf:"\u211D",reals:"\u211D",RoundImplies:"\u2970",Rrightarrow:"\u21DB",rAarr:"\u21DB",Rscr:"\u211B",realine:"\u211B",Rsh:"\u21B1",rsh:"\u21B1",RuleDelayed:"\u29F4",SHCHcy:"\u0429",SHcy:"\u0428",SOFTcy:"\u042C",Sacute:"\u015A",Sc:"\u2ABC",Scaron:"\u0160",Scedil:"\u015E",Scirc:"\u015C",Scy:"\u0421",Sfr:"\u{1D516}",ShortUpArrow:"\u2191",UpArrow:"\u2191",uarr:"\u2191",uparrow:"\u2191",Sigma:"\u03A3",SmallCircle:"\u2218",compfn:"\u2218",Sopf:"\u{1D54A}",Sqrt:"\u221A",radic:"\u221A",Square:"\u25A1",squ:"\u25A1",square:"\u25A1",SquareIntersection:"\u2293",sqcap:"\u2293",SquareSubset:"\u228F",sqsub:"\u228F",sqsubset:"\u228F",SquareSubsetEqual:"\u2291",sqsube:"\u2291",sqsubseteq:"\u2291",SquareSuperset:"\u2290",sqsup:"\u2290",sqsupset:"\u2290",SquareSupersetEqual:"\u2292",sqsupe:"\u2292",sqsupseteq:"\u2292",SquareUnion:"\u2294",sqcup:"\u2294",Sscr:"\u{1D4AE}",Star:"\u22C6",sstarf:"\u22C6",Sub:"\u22D0",Subset:"\u22D0",SubsetEqual:"\u2286",sube:"\u2286",subseteq:"\u2286",Succeeds:"\u227B",sc:"\u227B",succ:"\u227B",SucceedsEqual:"\u2AB0",sce:"\u2AB0",succeq:"\u2AB0",SucceedsSlantEqual:"\u227D",sccue:"\u227D",succcurlyeq:"\u227D",SucceedsTilde:"\u227F",scsim:"\u227F",succsim:"\u227F",Sum:"\u2211",sum:"\u2211",Sup:"\u22D1",Supset:"\u22D1",Superset:"\u2283",sup:"\u2283",supset:"\u2283",SupersetEqual:"\u2287",supe:"\u2287",supseteq:"\u2287",THORN:"\xDE",TRADE:"\u2122",trade:"\u2122",TSHcy:"\u040B",TScy:"\u0426",Tab:" ",Tau:"\u03A4",Tcaron:"\u0164",Tcedil:"\u0162",Tcy:"\u0422",Tfr:"\u{1D517}",Therefore:"\u2234",there4:"\u2234",therefore:"\u2234",Theta:"\u0398",ThickSpace:"\u205F\u200A",ThinSpace:"\u2009",thinsp:"\u2009",Tilde:"\u223C",sim:"\u223C",thicksim:"\u223C",thksim:"\u223C",TildeEqual:"\u2243",sime:"\u2243",simeq:"\u2243",TildeFullEqual:"\u2245",cong:"\u2245",TildeTilde:"\u2248",ap:"\u2248",approx:"\u2248",asymp:"\u2248",thickapprox:"\u2248",thkap:"\u2248",Topf:"\u{1D54B}",TripleDot:"\u20DB",tdot:"\u20DB",Tscr:"\u{1D4AF}",Tstrok:"\u0166",Uacute:"\xDA",Uarr:"\u219F",Uarrocir:"\u2949",Ubrcy:"\u040E",Ubreve:"\u016C",Ucirc:"\xDB",Ucy:"\u0423",Udblac:"\u0170",Ufr:"\u{1D518}",Ugrave:"\xD9",Umacr:"\u016A",UnderBar:"_",lowbar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",bbrk:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",bigcup:"\u22C3",xcup:"\u22C3",UnionPlus:"\u228E",uplus:"\u228E",Uogon:"\u0172",Uopf:"\u{1D54C}",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",udarr:"\u21C5",UpDownArrow:"\u2195",updownarrow:"\u2195",varr:"\u2195",UpEquilibrium:"\u296E",udhar:"\u296E",UpTee:"\u22A5",bot:"\u22A5",bottom:"\u22A5",perp:"\u22A5",UpTeeArrow:"\u21A5",mapstoup:"\u21A5",UpperLeftArrow:"\u2196",nwarr:"\u2196",nwarrow:"\u2196",UpperRightArrow:"\u2197",nearr:"\u2197",nearrow:"\u2197",Upsi:"\u03D2",upsih:"\u03D2",Upsilon:"\u03A5",Uring:"\u016E",Uscr:"\u{1D4B0}",Utilde:"\u0168",Uuml:"\xDC",VDash:"\u22AB",Vbar:"\u2AEB",Vcy:"\u0412",Vdash:"\u22A9",Vdashl:"\u2AE6",Vee:"\u22C1",bigvee:"\u22C1",xvee:"\u22C1",Verbar:"\u2016",Vert:"\u2016",VerticalBar:"\u2223",mid:"\u2223",shortmid:"\u2223",smid:"\u2223",VerticalLine:"|",verbar:"|",vert:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",wr:"\u2240",wreath:"\u2240",VeryThinSpace:"\u200A",hairsp:"\u200A",Vfr:"\u{1D519}",Vopf:"\u{1D54D}",Vscr:"\u{1D4B1}",Vvdash:"\u22AA",Wcirc:"\u0174",Wedge:"\u22C0",bigwedge:"\u22C0",xwedge:"\u22C0",Wfr:"\u{1D51A}",Wopf:"\u{1D54E}",Wscr:"\u{1D4B2}",Xfr:"\u{1D51B}",Xi:"\u039E",Xopf:"\u{1D54F}",Xscr:"\u{1D4B3}",YAcy:"\u042F",YIcy:"\u0407",YUcy:"\u042E",Yacute:"\xDD",Ycirc:"\u0176",Ycy:"\u042B",Yfr:"\u{1D51C}",Yopf:"\u{1D550}",Yscr:"\u{1D4B4}",Yuml:"\u0178",ZHcy:"\u0416",Zacute:"\u0179",Zcaron:"\u017D",Zcy:"\u0417",Zdot:"\u017B",Zeta:"\u0396",Zfr:"\u2128",zeetrf:"\u2128",Zopf:"\u2124",integers:"\u2124",Zscr:"\u{1D4B5}",aacute:"\xE1",abreve:"\u0103",ac:"\u223E",mstpos:"\u223E",acE:"\u223E\u0333",acd:"\u223F",acirc:"\xE2",acy:"\u0430",aelig:"\xE6",afr:"\u{1D51E}",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",alpha:"\u03B1",amacr:"\u0101",amalg:"\u2A3F",and:"\u2227",wedge:"\u2227",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",angle:"\u2220",ange:"\u29A4",angmsd:"\u2221",measuredangle:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angzarr:"\u237C",aogon:"\u0105",aopf:"\u{1D552}",apE:"\u2A70",apacir:"\u2A6F",ape:"\u224A",approxeq:"\u224A",apid:"\u224B",apos:"'",aring:"\xE5",ascr:"\u{1D4B6}",ast:"*",midast:"*",atilde:"\xE3",auml:"\xE4",awint:"\u2A11",bNot:"\u2AED",backcong:"\u224C",bcong:"\u224C",backepsilon:"\u03F6",bepsi:"\u03F6",backprime:"\u2035",bprime:"\u2035",backsim:"\u223D",bsim:"\u223D",backsimeq:"\u22CD",bsime:"\u22CD",barvee:"\u22BD",barwed:"\u2305",barwedge:"\u2305",bbrktbrk:"\u23B6",bcy:"\u0431",bdquo:"\u201E",ldquor:"\u201E",bemptyv:"\u29B0",beta:"\u03B2",beth:"\u2136",between:"\u226C",twixt:"\u226C",bfr:"\u{1D51F}",bigcirc:"\u25EF",xcirc:"\u25EF",bigodot:"\u2A00",xodot:"\u2A00",bigoplus:"\u2A01",xoplus:"\u2A01",bigotimes:"\u2A02",xotime:"\u2A02",bigsqcup:"\u2A06",xsqcup:"\u2A06",bigstar:"\u2605",starf:"\u2605",bigtriangledown:"\u25BD",xdtri:"\u25BD",bigtriangleup:"\u25B3",xutri:"\u25B3",biguplus:"\u2A04",xuplus:"\u2A04",bkarow:"\u290D",rbarr:"\u290D",blacklozenge:"\u29EB",lozf:"\u29EB",blacktriangle:"\u25B4",utrif:"\u25B4",blacktriangledown:"\u25BE",dtrif:"\u25BE",blacktriangleleft:"\u25C2",ltrif:"\u25C2",blacktriangleright:"\u25B8",rtrif:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bnot:"\u2310",bopf:"\u{1D553}",bowtie:"\u22C8",boxDL:"\u2557",boxDR:"\u2554",boxDl:"\u2556",boxDr:"\u2553",boxH:"\u2550",boxHD:"\u2566",boxHU:"\u2569",boxHd:"\u2564",boxHu:"\u2567",boxUL:"\u255D",boxUR:"\u255A",boxUl:"\u255C",boxUr:"\u2559",boxV:"\u2551",boxVH:"\u256C",boxVL:"\u2563",boxVR:"\u2560",boxVh:"\u256B",boxVl:"\u2562",boxVr:"\u255F",boxbox:"\u29C9",boxdL:"\u2555",boxdR:"\u2552",boxdl:"\u2510",boxdr:"\u250C",boxhD:"\u2565",boxhU:"\u2568",boxhd:"\u252C",boxhu:"\u2534",boxminus:"\u229F",minusb:"\u229F",boxplus:"\u229E",plusb:"\u229E",boxtimes:"\u22A0",timesb:"\u22A0",boxuL:"\u255B",boxuR:"\u2558",boxul:"\u2518",boxur:"\u2514",boxv:"\u2502",boxvH:"\u256A",boxvL:"\u2561",boxvR:"\u255E",boxvh:"\u253C",boxvl:"\u2524",boxvr:"\u251C",brvbar:"\xA6",bscr:"\u{1D4B7}",bsemi:"\u204F",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bumpE:"\u2AAE",cacute:"\u0107",cap:"\u2229",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",caps:"\u2229\uFE00",caret:"\u2041",ccaps:"\u2A4D",ccaron:"\u010D",ccedil:"\xE7",ccirc:"\u0109",ccups:"\u2A4C",ccupssm:"\u2A50",cdot:"\u010B",cemptyv:"\u29B2",cent:"\xA2",cfr:"\u{1D520}",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",chi:"\u03C7",cir:"\u25CB",cirE:"\u29C3",circ:"\u02C6",circeq:"\u2257",cire:"\u2257",circlearrowleft:"\u21BA",olarr:"\u21BA",circlearrowright:"\u21BB",orarr:"\u21BB",circledS:"\u24C8",oS:"\u24C8",circledast:"\u229B",oast:"\u229B",circledcirc:"\u229A",ocir:"\u229A",circleddash:"\u229D",odash:"\u229D",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",clubs:"\u2663",clubsuit:"\u2663",colon:":",comma:",",commat:"@",comp:"\u2201",complement:"\u2201",congdot:"\u2A6D",copf:"\u{1D554}",copysr:"\u2117",crarr:"\u21B5",cross:"\u2717",cscr:"\u{1D4B8}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",curlyeqprec:"\u22DE",cuesc:"\u22DF",curlyeqsucc:"\u22DF",cularr:"\u21B6",curvearrowleft:"\u21B6",cularrp:"\u293D",cup:"\u222A",cupbrcap:"\u2A48",cupcap:"\u2A46",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curvearrowright:"\u21B7",curarrm:"\u293C",curlyvee:"\u22CE",cuvee:"\u22CE",curlywedge:"\u22CF",cuwed:"\u22CF",curren:"\xA4",cwint:"\u2231",cylcty:"\u232D",dHar:"\u2965",dagger:"\u2020",daleth:"\u2138",dash:"\u2010",hyphen:"\u2010",dbkarow:"\u290F",rBarr:"\u290F",dcaron:"\u010F",dcy:"\u0434",ddarr:"\u21CA",downdownarrows:"\u21CA",ddotseq:"\u2A77",eDDot:"\u2A77",deg:"\xB0",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",dfr:"\u{1D521}",diamondsuit:"\u2666",diams:"\u2666",digamma:"\u03DD",gammad:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",djcy:"\u0452",dlcorn:"\u231E",llcorner:"\u231E",dlcrop:"\u230D",dollar:"$",dopf:"\u{1D555}",doteqdot:"\u2251",eDot:"\u2251",dotminus:"\u2238",minusd:"\u2238",dotplus:"\u2214",plusdo:"\u2214",dotsquare:"\u22A1",sdotb:"\u22A1",drcorn:"\u231F",lrcorner:"\u231F",drcrop:"\u230C",dscr:"\u{1D4B9}",dscy:"\u0455",dsol:"\u29F6",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",triangledown:"\u25BF",dwangle:"\u29A6",dzcy:"\u045F",dzigrarr:"\u27FF",eacute:"\xE9",easter:"\u2A6E",ecaron:"\u011B",ecir:"\u2256",eqcirc:"\u2256",ecirc:"\xEA",ecolon:"\u2255",eqcolon:"\u2255",ecy:"\u044D",edot:"\u0117",efDot:"\u2252",fallingdotseq:"\u2252",efr:"\u{1D522}",eg:"\u2A9A",egrave:"\xE8",egs:"\u2A96",eqslantgtr:"\u2A96",egsdot:"\u2A98",el:"\u2A99",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",eqslantless:"\u2A95",elsdot:"\u2A97",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",emptyv:"\u2205",varnothing:"\u2205",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",eng:"\u014B",ensp:"\u2002",eogon:"\u0119",eopf:"\u{1D556}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",epsilon:"\u03B5",epsiv:"\u03F5",straightepsilon:"\u03F5",varepsilon:"\u03F5",equals:"=",equest:"\u225F",questeq:"\u225F",equivDD:"\u2A78",eqvparsl:"\u29E5",erDot:"\u2253",risingdotseq:"\u2253",erarr:"\u2971",escr:"\u212F",eta:"\u03B7",eth:"\xF0",euml:"\xEB",euro:"\u20AC",excl:"!",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",ffr:"\u{1D523}",filig:"\uFB01",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",fopf:"\u{1D557}",fork:"\u22D4",pitchfork:"\u22D4",forkv:"\u2AD9",fpartint:"\u2A0D",frac12:"\xBD",half:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",sfrown:"\u2322",fscr:"\u{1D4BB}",gEl:"\u2A8C",gtreqqless:"\u2A8C",gacute:"\u01F5",gamma:"\u03B3",gap:"\u2A86",gtrapprox:"\u2A86",gbreve:"\u011F",gcirc:"\u011D",gcy:"\u0433",gdot:"\u0121",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",gfr:"\u{1D524}",gimel:"\u2137",gjcy:"\u0453",glE:"\u2A92",gla:"\u2AA5",glj:"\u2AA4",gnE:"\u2269",gneqq:"\u2269",gnap:"\u2A8A",gnapprox:"\u2A8A",gne:"\u2A88",gneq:"\u2A88",gnsim:"\u22E7",gopf:"\u{1D558}",gscr:"\u210A",gsime:"\u2A8E",gsiml:"\u2A90",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtrdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrarr:"\u2978",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",hardcy:"\u044A",harrcir:"\u2948",harrw:"\u21AD",leftrightsquigarrow:"\u21AD",hbar:"\u210F",hslash:"\u210F",planck:"\u210F",plankv:"\u210F",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",mldr:"\u2026",hercon:"\u22B9",hfr:"\u{1D525}",hksearow:"\u2925",searhk:"\u2925",hkswarow:"\u2926",swarhk:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",larrhk:"\u21A9",hookrightarrow:"\u21AA",rarrhk:"\u21AA",hopf:"\u{1D559}",horbar:"\u2015",hscr:"\u{1D4BD}",hstrok:"\u0127",hybull:"\u2043",iacute:"\xED",icirc:"\xEE",icy:"\u0438",iecy:"\u0435",iexcl:"\xA1",ifr:"\u{1D526}",igrave:"\xEC",iiiint:"\u2A0C",qint:"\u2A0C",iiint:"\u222D",tint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",ijlig:"\u0133",imacr:"\u012B",imath:"\u0131",inodot:"\u0131",imof:"\u22B7",imped:"\u01B5",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",intcal:"\u22BA",intercal:"\u22BA",intlarhk:"\u2A17",intprod:"\u2A3C",iprod:"\u2A3C",iocy:"\u0451",iogon:"\u012F",iopf:"\u{1D55A}",iota:"\u03B9",iquest:"\xBF",iscr:"\u{1D4BE}",isinE:"\u22F9",isindot:"\u22F5",isins:"\u22F4",isinsv:"\u22F3",itilde:"\u0129",iukcy:"\u0456",iuml:"\xEF",jcirc:"\u0135",jcy:"\u0439",jfr:"\u{1D527}",jmath:"\u0237",jopf:"\u{1D55B}",jscr:"\u{1D4BF}",jsercy:"\u0458",jukcy:"\u0454",kappa:"\u03BA",kappav:"\u03F0",varkappa:"\u03F0",kcedil:"\u0137",kcy:"\u043A",kfr:"\u{1D528}",kgreen:"\u0138",khcy:"\u0445",kjcy:"\u045C",kopf:"\u{1D55C}",kscr:"\u{1D4C0}",lAtail:"\u291B",lBarr:"\u290E",lEg:"\u2A8B",lesseqqgtr:"\u2A8B",lHar:"\u2962",lacute:"\u013A",laemptyv:"\u29B4",lambda:"\u03BB",langd:"\u2991",lap:"\u2A85",lessapprox:"\u2A85",laquo:"\xAB",larrbfs:"\u291F",larrfs:"\u291D",larrlp:"\u21AB",looparrowleft:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",leftarrowtail:"\u21A2",lat:"\u2AAB",latail:"\u2919",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lbbrk:"\u2772",lbrace:"{",lcub:"{",lbrack:"[",lsqb:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",lcaron:"\u013E",lcedil:"\u013C",lcy:"\u043B",ldca:"\u2936",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",le:"\u2264",leq:"\u2264",leftleftarrows:"\u21C7",llarr:"\u21C7",leftthreetimes:"\u22CB",lthree:"\u22CB",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessdot:"\u22D6",ltdot:"\u22D6",lfisht:"\u297C",lfr:"\u{1D529}",lgE:"\u2A91",lharul:"\u296A",lhblk:"\u2584",ljcy:"\u0459",llhard:"\u296B",lltri:"\u25FA",lmidot:"\u0140",lmoust:"\u23B0",lmoustache:"\u23B0",lnE:"\u2268",lneqq:"\u2268",lnap:"\u2A89",lnapprox:"\u2A89",lne:"\u2A87",lneq:"\u2A87",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",longmapsto:"\u27FC",xmap:"\u27FC",looparrowright:"\u21AC",rarrlp:"\u21AC",lopar:"\u2985",lopf:"\u{1D55D}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",loz:"\u25CA",lozenge:"\u25CA",lpar:"(",lparlt:"\u2993",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lscr:"\u{1D4C1}",lsime:"\u2A8D",lsimg:"\u2A8F",lsquor:"\u201A",sbquo:"\u201A",lstrok:"\u0142",ltcc:"\u2AA6",ltcir:"\u2A79",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltrPar:"\u2996",ltri:"\u25C3",triangleleft:"\u25C3",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",mDDot:"\u223A",macr:"\xAF",strns:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",marker:"\u25AE",mcomma:"\u2A29",mcy:"\u043C",mdash:"\u2014",mfr:"\u{1D52A}",mho:"\u2127",micro:"\xB5",midcir:"\u2AF0",minus:"\u2212",minusdu:"\u2A2A",mlcp:"\u2ADB",models:"\u22A7",mopf:"\u{1D55E}",mscr:"\u{1D4C2}",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nGg:"\u22D9\u0338",nGt:"\u226B\u20D2",nLeftarrow:"\u21CD",nlArr:"\u21CD",nLeftrightarrow:"\u21CE",nhArr:"\u21CE",nLl:"\u22D8\u0338",nLt:"\u226A\u20D2",nRightarrow:"\u21CF",nrArr:"\u21CF",nVDash:"\u22AF",nVdash:"\u22AE",nacute:"\u0144",nang:"\u2220\u20D2",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",natur:"\u266E",natural:"\u266E",ncap:"\u2A43",ncaron:"\u0148",ncedil:"\u0146",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",ncy:"\u043D",ndash:"\u2013",neArr:"\u21D7",nearhk:"\u2924",nedot:"\u2250\u0338",nesear:"\u2928",toea:"\u2928",nfr:"\u{1D52B}",nharr:"\u21AE",nleftrightarrow:"\u21AE",nhpar:"\u2AF2",nis:"\u22FC",nisd:"\u22FA",njcy:"\u045A",nlE:"\u2266\u0338",nleqq:"\u2266\u0338",nlarr:"\u219A",nleftarrow:"\u219A",nldr:"\u2025",nopf:"\u{1D55F}",not:"\xAC",notinE:"\u22F9\u0338",notindot:"\u22F5\u0338",notinvb:"\u22F7",notinvc:"\u22F6",notnivb:"\u22FE",notnivc:"\u22FD",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",nrarr:"\u219B",nrightarrow:"\u219B",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nscr:"\u{1D4C3}",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsubseteqq:"\u2AC5\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupseteqq:"\u2AC6\u0338",ntilde:"\xF1",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvDash:"\u22AD",nvHarr:"\u2904",nvap:"\u224D\u20D2",nvdash:"\u22AC",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwArr:"\u21D6",nwarhk:"\u2923",nwnear:"\u2927",oacute:"\xF3",ocirc:"\xF4",ocy:"\u043E",odblac:"\u0151",odiv:"\u2A38",odsold:"\u29BC",oelig:"\u0153",ofcir:"\u29BF",ofr:"\u{1D52C}",ogon:"\u02DB",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",olcir:"\u29BE",olcross:"\u29BB",olt:"\u29C0",omacr:"\u014D",omega:"\u03C9",omicron:"\u03BF",omid:"\u29B6",oopf:"\u{1D560}",opar:"\u29B7",operp:"\u29B9",or:"\u2228",vee:"\u2228",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",oscr:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oslash:"\xF8",osol:"\u2298",otilde:"\xF5",otimesas:"\u2A36",ouml:"\xF6",ovbar:"\u233D",para:"\xB6",parsim:"\u2AF3",parsl:"\u2AFD",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",pertenk:"\u2031",pfr:"\u{1D52D}",phi:"\u03C6",phiv:"\u03D5",straightphi:"\u03D5",varphi:"\u03D5",phone:"\u260E",pi:"\u03C0",piv:"\u03D6",varpi:"\u03D6",planckh:"\u210E",plus:"+",plusacir:"\u2A23",pluscir:"\u2A22",plusdu:"\u2A25",pluse:"\u2A72",plussim:"\u2A26",plustwo:"\u2A27",pointint:"\u2A15",popf:"\u{1D561}",pound:"\xA3",prE:"\u2AB3",prap:"\u2AB7",precapprox:"\u2AB7",precnapprox:"\u2AB9",prnap:"\u2AB9",precneqq:"\u2AB5",prnE:"\u2AB5",precnsim:"\u22E8",prnsim:"\u22E8",prime:"\u2032",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prurel:"\u22B0",pscr:"\u{1D4C5}",psi:"\u03C8",puncsp:"\u2008",qfr:"\u{1D52E}",qopf:"\u{1D562}",qprime:"\u2057",qscr:"\u{1D4C6}",quatint:"\u2A16",quest:"?",rAtail:"\u291C",rHar:"\u2964",race:"\u223D\u0331",racute:"\u0155",raemptyv:"\u29B3",rangd:"\u2992",range:"\u29A5",raquo:"\xBB",rarrap:"\u2975",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrpl:"\u2945",rarrsim:"\u2974",rarrtl:"\u21A3",rightarrowtail:"\u21A3",rarrw:"\u219D",rightsquigarrow:"\u219D",ratail:"\u291A",ratio:"\u2236",rbbrk:"\u2773",rbrace:"}",rcub:"}",rbrack:"]",rsqb:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",rcaron:"\u0159",rcedil:"\u0157",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdsh:"\u21B3",rect:"\u25AD",rfisht:"\u297D",rfr:"\u{1D52F}",rharul:"\u296C",rho:"\u03C1",rhov:"\u03F1",varrho:"\u03F1",rightrightarrows:"\u21C9",rrarr:"\u21C9",rightthreetimes:"\u22CC",rthree:"\u22CC",ring:"\u02DA",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",ropar:"\u2986",ropf:"\u{1D563}",roplus:"\u2A2E",rotimes:"\u2A35",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rsaquo:"\u203A",rscr:"\u{1D4C7}",rtimes:"\u22CA",rtri:"\u25B9",triangleright:"\u25B9",rtriltri:"\u29CE",ruluhar:"\u2968",rx:"\u211E",sacute:"\u015B",scE:"\u2AB4",scap:"\u2AB8",succapprox:"\u2AB8",scaron:"\u0161",scedil:"\u015F",scirc:"\u015D",scnE:"\u2AB6",succneqq:"\u2AB6",scnap:"\u2ABA",succnapprox:"\u2ABA",scnsim:"\u22E9",succnsim:"\u22E9",scpolint:"\u2A13",scy:"\u0441",sdot:"\u22C5",sdote:"\u2A66",seArr:"\u21D8",sect:"\xA7",semi:";",seswar:"\u2929",tosa:"\u2929",sext:"\u2736",sfr:"\u{1D530}",sharp:"\u266F",shchcy:"\u0449",shcy:"\u0448",shy:"\xAD",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",varsigma:"\u03C2",simdot:"\u2A6A",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",smashp:"\u2A33",smeparsl:"\u29E4",smile:"\u2323",ssmile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",softcy:"\u044C",sol:"/",solb:"\u29C4",solbar:"\u233F",sopf:"\u{1D564}",spades:"\u2660",spadesuit:"\u2660",sqcaps:"\u2293\uFE00",sqcups:"\u2294\uFE00",sscr:"\u{1D4C8}",star:"\u2606",sub:"\u2282",subset:"\u2282",subE:"\u2AC5",subseteqq:"\u2AC5",subdot:"\u2ABD",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subsetneqq:"\u2ACB",subne:"\u228A",subsetneq:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",sung:"\u266A",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",supE:"\u2AC6",supseteqq:"\u2AC6",supdot:"\u2ABE",supdsub:"\u2AD8",supedot:"\u2AC4",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supsetneqq:"\u2ACC",supne:"\u228B",supsetneq:"\u228B",supplus:"\u2AC0",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swArr:"\u21D9",swnwar:"\u292A",szlig:"\xDF",target:"\u2316",tau:"\u03C4",tcaron:"\u0165",tcedil:"\u0163",tcy:"\u0442",telrec:"\u2315",tfr:"\u{1D531}",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",vartheta:"\u03D1",thorn:"\xFE",times:"\xD7",timesbar:"\u2A31",timesd:"\u2A30",topbot:"\u2336",topcir:"\u2AF1",topf:"\u{1D565}",topfork:"\u2ADA",tprime:"\u2034",triangle:"\u25B5",utri:"\u25B5",triangleq:"\u225C",trie:"\u225C",tridot:"\u25EC",triminus:"\u2A3A",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",tscr:"\u{1D4C9}",tscy:"\u0446",tshcy:"\u045B",tstrok:"\u0167",uHar:"\u2963",uacute:"\xFA",ubrcy:"\u045E",ubreve:"\u016D",ucirc:"\xFB",ucy:"\u0443",udblac:"\u0171",ufisht:"\u297E",ufr:"\u{1D532}",ugrave:"\xF9",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",umacr:"\u016B",uogon:"\u0173",uopf:"\u{1D566}",upsi:"\u03C5",upsilon:"\u03C5",upuparrows:"\u21C8",uuarr:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",uring:"\u016F",urtri:"\u25F9",uscr:"\u{1D4CA}",utdot:"\u22F0",utilde:"\u0169",uuml:"\xFC",uwangle:"\u29A7",vBar:"\u2AE8",vBarv:"\u2AE9",vangrt:"\u299C",varsubsetneq:"\u228A\uFE00",vsubne:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",vsubnE:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",vsupne:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vsupnE:"\u2ACC\uFE00",vcy:"\u0432",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",vfr:"\u{1D533}",vopf:"\u{1D567}",vscr:"\u{1D4CB}",vzigzag:"\u299A",wcirc:"\u0175",wedbar:"\u2A5F",wedgeq:"\u2259",weierp:"\u2118",wp:"\u2118",wfr:"\u{1D534}",wopf:"\u{1D568}",wscr:"\u{1D4CC}",xfr:"\u{1D535}",xi:"\u03BE",xnis:"\u22FB",xopf:"\u{1D569}",xscr:"\u{1D4CD}",yacute:"\xFD",yacy:"\u044F",ycirc:"\u0177",ycy:"\u044B",yen:"\xA5",yfr:"\u{1D536}",yicy:"\u0457",yopf:"\u{1D56A}",yscr:"\u{1D4CE}",yucy:"\u044E",yuml:"\xFF",zacute:"\u017A",zcaron:"\u017E",zcy:"\u0437",zdot:"\u017C",zeta:"\u03B6",zfr:"\u{1D537}",zhcy:"\u0436",zigrarr:"\u21DD",zopf:"\u{1D56B}",zscr:"\u{1D4CF}",zwj:"\u200D",zwnj:"\u200C"},yL="\uE500";av.ngsp=yL;var $D=class{tokens;errors;nonNormalizedIcuExpressions;constructor(i,e,n){this.tokens=i,this.errors=e,this.nonNormalizedIcuExpressions=n}};function zQ(t,i,e,n={}){let o=new UD(new qx(t,i),e,n);return o.tokenize(),new $D(YQ(o.tokens),o.errors,o.nonNormalizedIcuExpressions)}var jQ=/\r\n?/g;function Uh(t){return`Unexpected character "${t===ia?"EOF":String.fromCharCode(t)}"`}function MF(t){return`Unknown entity "${t}" - use the "&#<decimal>;" or "&#x<hex>;" syntax`}function $Q(t,i){return`Unable to parse entity "${i}" - ${t} character reference entities must end with ";"`}var HD=(function(t){return t.HEX="hexadecimal",t.DEC="decimal",t})(HD||{}),HQ=["@if","@else","@for","@switch","@case","@default","@empty","@defer","@placeholder","@loading","@error"],X_={start:"{{",end:"}}"},UD=class{_getTagDefinition;_cursor;_tokenizeIcu;_leadingTriviaCodePoints;_currentTokenStart=null;_currentTokenType=null;_expansionCaseStack=[];_openDirectiveCount=0;_inInterpolation=!1;_preserveLineEndings;_i18nNormalizeLineEndingsInICUs;_tokenizeBlocks;_tokenizeLet;_selectorlessEnabled;tokens=[];errors=[];nonNormalizedIcuExpressions=[];constructor(i,e,n){this._getTagDefinition=e,this._tokenizeIcu=n.tokenizeExpansionForms||!1,this._leadingTriviaCodePoints=n.leadingTriviaChars&&n.leadingTriviaChars.map(r=>r.codePointAt(0)||0);let o=n.range||{endPos:i.content.length,startPos:0,startLine:0,startCol:0};this._cursor=n.escapedString?new GD(i,o):new c1(i,o),this._preserveLineEndings=n.preserveLineEndings||!1,this._i18nNormalizeLineEndingsInICUs=n.i18nNormalizeLineEndingsInICUs||!1,this._tokenizeBlocks=n.tokenizeBlocks??!0,this._tokenizeLet=n.tokenizeLet??!0,this._selectorlessEnabled=n.selectorlessEnabled??!1;try{this._cursor.init()}catch(r){this.handleError(r)}}_processCarriageReturns(i){return this._preserveLineEndings?i:i.replace(jQ,`
|
||
`)}tokenize(){for(;this._cursor.peek()!==ia;){let i=this._cursor.clone();try{this._attemptCharCode(nf)?this._attemptCharCode(yD)?this._attemptCharCode(Oc)?this._consumeCdata(i):this._attemptCharCode(Gx)?this._consumeComment(i):this._consumeDocType(i):this._attemptCharCode(ll)?this._consumeTagClose(i):this._consumeTagOpen(i):this._tokenizeLet&&this._cursor.peek()===jh&&!this._inInterpolation&&this._isLetStart()?this._consumeLetDeclaration(i):this._tokenizeBlocks&&this._isBlockStart()?this._consumeBlockStart(i):this._tokenizeBlocks&&!this._inInterpolation&&!this._isInExpansionCase()&&!this._isInExpansionForm()&&this._attemptCharCode(Ga)?this._consumeBlockEnd(i):this._tokenizeIcu&&this._tokenizeExpansionForm()||this._consumeWithInterpolation(5,8,()=>this._isTextEnd(),()=>this._isTagStart())}catch(e){this.handleError(e)}}this._beginToken(41),this._endToken([])}_getBlockName(){let i=!1,e=this._cursor.clone();return this._attemptCharCodeUntilFn(n=>q0(n)?!i:QQ(n)?(i=!0,!1):!0),this._cursor.getChars(e).trim()}_consumeBlockStart(i){this._requireCharCode(jh),this._beginToken(24,i);let e=this._endToken([this._getBlockName()]);if(e.parts[0]==="default never"&&this._attemptCharCode(ms)){this._beginToken(25),this._endToken([]),this._beginToken(26),this._endToken([]);return}if(this._cursor.peek()===qa)if(this._cursor.advance(),this._consumeBlockParameters(),this._attemptCharCodeUntilFn(Wo),this._attemptCharCode(Pr))this._attemptCharCodeUntilFn(Wo);else{e.type=28;return}this._attemptCharCode(ml)?(this._beginToken(25),this._endToken([])):this._isBlockStart()&&(e.parts[0]==="case"||e.parts[0]==="default")?(this._beginToken(25),this._endToken([]),this._beginToken(26),this._endToken([])):e.type=28}_consumeBlockEnd(i){this._beginToken(26,i),this._endToken([])}_consumeBlockParameters(){for(this._attemptCharCodeUntilFn(TF);this._cursor.peek()!==Pr&&this._cursor.peek()!==ia;){this._beginToken(27);let i=this._cursor.clone(),e=null,n=0;for(;this._cursor.peek()!==ms&&this._cursor.peek()!==ia||e!==null;){let o=this._cursor.peek();if(o===hu)this._cursor.advance();else if(o===e)e=null;else if(e===null&&c0(o))e=o;else if(o===qa&&e===null)n++;else if(o===Pr&&e===null){if(n===0)break;n>0&&n--}this._cursor.advance()}this._endToken([this._cursor.getChars(i)]),this._attemptCharCodeUntilFn(TF)}}_consumeLetDeclaration(i){if(this._requireStr("@let"),this._beginToken(29,i),q0(this._cursor.peek()))this._attemptCharCodeUntilFn(Wo);else{let o=this._endToken([this._cursor.getChars(i)]);o.type=32;return}let e=this._endToken([this._getLetDeclarationName()]);if(this._attemptCharCodeUntilFn(Wo),!this._attemptCharCode(ta)){e.type=32;return}this._attemptCharCodeUntilFn(o=>Wo(o)&&!Wx(o)),this._consumeLetDeclarationValue(),this._cursor.peek()===ms?(this._beginToken(31),this._endToken([]),this._cursor.advance()):(e.type=32,e.sourceSpan=this._cursor.getSpan(i))}_getLetDeclarationName(){let i=this._cursor.clone(),e=!1;return this._attemptCharCodeUntilFn(n=>Vm(n)||n===M1||n===Gm||e&&cl(n)?(e=!0,!1):!0),this._cursor.getChars(i).trim()}_consumeLetDeclarationValue(){let i=this._cursor.clone();for(this._beginToken(30,i);this._cursor.peek()!==ia;){let e=this._cursor.peek();if(e===ms)break;c0(e)&&(this._cursor.advance(),this._attemptCharCodeUntilFn(n=>n===hu?(this._cursor.advance(),!1):n===e)),this._cursor.advance()}this._endToken([this._cursor.getChars(i)])}_tokenizeExpansionForm(){if(this.isExpansionFormStart())return this._consumeExpansionFormStart(),!0;if(qQ(this._cursor.peek())&&this._isInExpansionForm())return this._consumeExpansionCaseStart(),!0;if(this._cursor.peek()===Ga){if(this._isInExpansionCase())return this._consumeExpansionCaseEnd(),!0;if(this._isInExpansionForm())return this._consumeExpansionFormEnd(),!0}return!1}_beginToken(i,e=this._cursor.clone()){this._currentTokenStart=e,this._currentTokenType=i}_endToken(i,e){if(this._currentTokenStart===null)throw new mn(this._cursor.getSpan(e),"Programming error - attempted to end a token when there was no start to the token");if(this._currentTokenType===null)throw new mn(this._cursor.getSpan(this._currentTokenStart),"Programming error - attempted to end a token which has no token type");let n={type:this._currentTokenType,parts:i,sourceSpan:(e??this._cursor).getSpan(this._currentTokenStart,this._leadingTriviaCodePoints)};return this.tokens.push(n),this._currentTokenStart=null,this._currentTokenType=null,n}_createError(i,e){this._isInExpansionForm()&&(i+=` (Do you have an unescaped "{" in your template? Use "{{ '{' }}") to escape it.)`);let n=new mn(e,i);return this._currentTokenStart=null,this._currentTokenType=null,n}handleError(i){if(i instanceof sv&&(i=this._createError(i.msg,this._cursor.getSpan(i.cursor))),i instanceof mn)this.errors.push(i);else throw i}_attemptCharCode(i){return this._cursor.peek()===i?(this._cursor.advance(),!0):!1}_attemptCharCodeCaseInsensitive(i){return XQ(this._cursor.peek(),i)?(this._cursor.advance(),!0):!1}_requireCharCode(i){let e=this._cursor.clone();if(!this._attemptCharCode(i))throw this._createError(Uh(this._cursor.peek()),this._cursor.getSpan(e))}_attemptStr(i){let e=i.length;if(this._cursor.charsLeft()<e)return!1;let n=this._cursor.clone();for(let o=0;o<e;o++)if(!this._attemptCharCode(i.charCodeAt(o)))return this._cursor=n,!1;return!0}_attemptStrCaseInsensitive(i){for(let e=0;e<i.length;e++)if(!this._attemptCharCodeCaseInsensitive(i.charCodeAt(e)))return!1;return!0}_requireStr(i){let e=this._cursor.clone();if(!this._attemptStr(i))throw this._createError(Uh(this._cursor.peek()),this._cursor.getSpan(e))}_attemptCharCodeUntilFn(i){for(;!i(this._cursor.peek());)this._cursor.advance()}_requireCharCodeUntilFn(i,e){let n=this._cursor.clone();if(this._attemptCharCodeUntilFn(i),this._cursor.diff(n)<e)throw this._createError(Uh(this._cursor.peek()),this._cursor.getSpan(n))}_attemptUntilChar(i){for(;this._cursor.peek()!==i;)this._cursor.advance()}_readChar(){let i=String.fromCodePoint(this._cursor.peek());return this._cursor.advance(),i}_peekStr(i){let e=i.length;if(this._cursor.charsLeft()<e)return!1;let n=this._cursor.clone();for(let o=0;o<e;o++){if(n.peek()!==i.charCodeAt(o))return!1;n.advance()}return!0}_isBlockStart(){return this._cursor.peek()===jh&&HQ.some(i=>this._peekStr(i))}_isLetStart(){return this._cursor.peek()===jh&&this._peekStr("@let")}_consumeEntity(i){this._beginToken(9);let e=this._cursor.clone();if(this._cursor.advance(),this._attemptCharCode(W6)){let n=this._attemptCharCode(eL)||this._attemptCharCode(rq),o=this._cursor.clone();if(this._attemptCharCodeUntilFn(GQ),this._cursor.peek()!=ms){this._cursor.advance();let a=n?HD.HEX:HD.DEC;throw this._createError($Q(a,this._cursor.getChars(e)),this._cursor.getSpan())}let r=this._cursor.getChars(o);this._cursor.advance();try{let a=parseInt(r,n?16:10);this._endToken([String.fromCodePoint(a),this._cursor.getChars(e)])}catch{throw this._createError(MF(this._cursor.getChars(e)),this._cursor.getSpan())}}else{let n=this._cursor.clone();if(this._attemptCharCodeUntilFn(WQ),this._cursor.peek()!=ms)this._beginToken(i,e),this._cursor=n,this._endToken(["&"]);else{let o=this._cursor.getChars(n);this._cursor.advance();let r=av.hasOwnProperty(o)&&av[o];if(!r)throw this._createError(MF(o),this._cursor.getSpan(e));this._endToken([r,`&${o};`])}}}_consumeRawText(i,e){this._beginToken(i?6:7);let n=[];for(;;){let o=this._cursor.clone(),r=e();if(this._cursor=o,r)break;i&&this._cursor.peek()===Ux?(this._endToken([this._processCarriageReturns(n.join(""))]),n.length=0,this._consumeEntity(6),this._beginToken(6)):n.push(this._readChar())}this._endToken([this._processCarriageReturns(n.join(""))])}_consumeComment(i){this._beginToken(10,i),this._requireCharCode(Gx),this._endToken([]),this._consumeRawText(!1,()=>this._attemptStr("-->")),this._beginToken(11),this._requireStr("-->"),this._endToken([])}_consumeCdata(i){this._beginToken(12,i),this._requireStr("CDATA["),this._endToken([]),this._consumeRawText(!1,()=>this._attemptStr("]]>")),this._beginToken(13),this._requireStr("]]>"),this._endToken([])}_consumeDocType(i){this._beginToken(18,i);let e=this._cursor.clone();this._attemptUntilChar(Bs);let n=this._cursor.getChars(e);this._cursor.advance(),this._endToken([n])}_consumePrefixAndName(i){let e=this._cursor.clone(),n="";for(;this._cursor.peek()!==Pc&&!UQ(this._cursor.peek());)this._cursor.advance();let o;this._cursor.peek()===Pc?(n=this._cursor.getChars(e),this._cursor.advance(),o=this._cursor.clone()):o=e,this._requireCharCodeUntilFn(i,n===""?0:1);let r=this._cursor.getChars(o);return[n,r]}_consumeTagOpen(i){let e,n,o,r;try{if(this._selectorlessEnabled&&ex(this._cursor.peek()))r=this._consumeComponentOpenStart(i),[o,n,e]=r.parts,n&&(o+=`:${n}`),e&&(o+=`:${e}`),this._attemptCharCodeUntilFn(Wo);else{if(!Vm(this._cursor.peek()))throw this._createError(Uh(this._cursor.peek()),this._cursor.getSpan(i));r=this._consumeTagOpenStart(i),n=r.parts[0],e=o=r.parts[1],this._attemptCharCodeUntilFn(Wo)}for(;!DF(this._cursor.peek());)if(this._selectorlessEnabled&&this._cursor.peek()===jh){let c=this._cursor.clone(),m=c.clone();m.advance(),ex(m.peek())&&this._consumeDirective(c,m)}else this._consumeAttribute();r.type===33?this._consumeComponentOpenEnd():this._consumeTagOpenEnd()}catch(c){if(c instanceof mn){r?r.type=r.type===33?37:4:(this._beginToken(5,i),this._endToken(["<"]));return}throw c}let a=this._getTagDefinition(e).getContentType(n);a===Dc.RAW_TEXT?this._consumeRawTextWithTagClose(r,o,!1):a===Dc.ESCAPABLE_RAW_TEXT&&this._consumeRawTextWithTagClose(r,o,!0)}_consumeRawTextWithTagClose(i,e,n){this._consumeRawText(n,()=>!this._attemptCharCode(nf)||!this._attemptCharCode(ll)||(this._attemptCharCodeUntilFn(Wo),!this._attemptStrCaseInsensitive(e))?!1:(this._attemptCharCodeUntilFn(Wo),this._attemptCharCode(Bs))),this._beginToken(i.type===33?36:3),this._requireCharCodeUntilFn(o=>o===Bs,3),this._cursor.advance(),this._endToken(i.parts)}_consumeTagOpenStart(i){this._beginToken(0,i);let e=this._consumePrefixAndName(tu);return this._endToken(e)}_consumeComponentOpenStart(i){this._beginToken(33,i);let e=this._consumeComponentName();return this._endToken(e)}_consumeComponentName(){let i=this._cursor.clone();for(;EF(this._cursor.peek());)this._cursor.advance();let e=this._cursor.getChars(i),n="",o="";return this._cursor.peek()===Pc&&(this._cursor.advance(),[n,o]=this._consumePrefixAndName(tu)),[e,n,o]}_consumeAttribute(){this._consumeAttributeName(),this._attemptCharCodeUntilFn(Wo),this._attemptCharCode(ta)&&(this._attemptCharCodeUntilFn(Wo),this._consumeAttributeValue()),this._attemptCharCodeUntilFn(Wo)}_consumeAttributeName(){let i=this._cursor.peek();if(i===W0||i===G0)throw this._createError(Uh(i),this._cursor.getSpan());this._beginToken(14);let e;if(this._openDirectiveCount>0){let o=0;e=r=>{if(this._openDirectiveCount>0){if(r===qa)o++;else if(r===Pr){if(o===0)return!0;o--}}return tu(r)}}else if(i===Oc){let o=0;e=r=>(r===Oc?o++:r===Ed&&o--,o<=0?tu(r):Wx(r))}else e=tu;let n=this._consumePrefixAndName(e);this._endToken(n)}_consumeAttributeValue(){if(this._cursor.peek()===W0||this._cursor.peek()===G0){let i=this._cursor.peek();this._consumeQuote(i);let e=()=>this._cursor.peek()===i;this._consumeWithInterpolation(16,17,e,e),this._consumeQuote(i)}else{let i=()=>tu(this._cursor.peek());this._consumeWithInterpolation(16,17,i,i)}}_consumeQuote(i){this._beginToken(15),this._requireCharCode(i),this._endToken([String.fromCodePoint(i)])}_consumeTagOpenEnd(){let i=this._attemptCharCode(ll)?2:1;this._beginToken(i),this._requireCharCode(Bs),this._endToken([])}_consumeComponentOpenEnd(){let i=this._attemptCharCode(ll)?35:34;this._beginToken(i),this._requireCharCode(Bs),this._endToken([])}_consumeTagClose(i){if(this._selectorlessEnabled){let n=i.clone();for(;n.peek()!==Bs&&!ex(n.peek());)n.advance();if(ex(n.peek())){this._beginToken(36,i);let o=this._consumeComponentName();this._attemptCharCodeUntilFn(Wo),this._requireCharCode(Bs),this._endToken(o);return}}this._beginToken(3,i),this._attemptCharCodeUntilFn(Wo);let e=this._consumePrefixAndName(tu);this._attemptCharCodeUntilFn(Wo),this._requireCharCode(Bs),this._endToken(e)}_consumeExpansionFormStart(){this._beginToken(19),this._requireCharCode(ml),this._endToken([]),this._expansionCaseStack.push(19),this._beginToken(7);let i=this._readUntil(Pa),e=this._processCarriageReturns(i);if(this._i18nNormalizeLineEndingsInICUs)this._endToken([e]);else{let o=this._endToken([i]);e!==i&&this.nonNormalizedIcuExpressions.push(o)}this._requireCharCode(Pa),this._attemptCharCodeUntilFn(Wo),this._beginToken(7);let n=this._readUntil(Pa);this._endToken([n]),this._requireCharCode(Pa),this._attemptCharCodeUntilFn(Wo)}_consumeExpansionCaseStart(){this._beginToken(20);let i=this._readUntil(ml).trim();this._endToken([i]),this._attemptCharCodeUntilFn(Wo),this._beginToken(21),this._requireCharCode(ml),this._endToken([]),this._attemptCharCodeUntilFn(Wo),this._expansionCaseStack.push(21)}_consumeExpansionCaseEnd(){this._beginToken(22),this._requireCharCode(Ga),this._endToken([]),this._attemptCharCodeUntilFn(Wo),this._expansionCaseStack.pop()}_consumeExpansionFormEnd(){this._beginToken(23),this._requireCharCode(Ga),this._endToken([]),this._expansionCaseStack.pop()}_consumeWithInterpolation(i,e,n,o){this._beginToken(i);let r=[];for(;!n();){let a=this._cursor.clone();this._attemptStr(X_.start)?(this._endToken([this._processCarriageReturns(r.join(""))],a),r.length=0,this._consumeInterpolation(e,a,o),this._beginToken(i)):this._cursor.peek()===Ux?(this._endToken([this._processCarriageReturns(r.join(""))]),r.length=0,this._consumeEntity(i),this._beginToken(i)):r.push(this._readChar())}this._inInterpolation=!1,this._endToken([this._processCarriageReturns(r.join(""))])}_consumeInterpolation(i,e,n){let o=[];this._beginToken(i,e),o.push(X_.start);let r=this._cursor.clone(),a=null,c=!1;for(;this._cursor.peek()!==ia&&(n===null||!n());){let m=this._cursor.clone();if(this._isTagStart()){this._cursor=m,o.push(this._getProcessedChars(r,m)),this._endToken(o);return}if(a===null)if(this._attemptStr(X_.end)){o.push(this._getProcessedChars(r,m)),o.push(X_.end),this._endToken(o);return}else this._attemptStr("//")&&(c=!0);let p=this._cursor.peek();this._cursor.advance(),p===hu?this._cursor.advance():p===a?a=null:!c&&a===null&&c0(p)&&(a=p)}o.push(this._getProcessedChars(r,this._cursor)),this._endToken(o)}_consumeDirective(i,e){for(this._requireCharCode(jh),this._cursor.advance();EF(this._cursor.peek());)this._cursor.advance();this._beginToken(38,i);let n=this._cursor.getChars(e);if(this._endToken([n]),this._attemptCharCodeUntilFn(Wo),this._cursor.peek()===qa){for(this._openDirectiveCount++,this._beginToken(39),this._cursor.advance(),this._endToken([]),this._attemptCharCodeUntilFn(Wo);!DF(this._cursor.peek())&&this._cursor.peek()!==Pr;)this._consumeAttribute();if(this._attemptCharCodeUntilFn(Wo),this._openDirectiveCount--,this._cursor.peek()!==Pr){if(this._cursor.peek()===Bs||this._cursor.peek()===ll)return;throw this._createError(Uh(this._cursor.peek()),this._cursor.getSpan(i))}this._beginToken(40),this._cursor.advance(),this._endToken([]),this._attemptCharCodeUntilFn(Wo)}}_getProcessedChars(i,e){return this._processCarriageReturns(e.getChars(i))}_isTextEnd(){return!!(this._isTagStart()||this._cursor.peek()===ia||this._tokenizeIcu&&!this._inInterpolation&&(this.isExpansionFormStart()||this._cursor.peek()===Ga&&this._isInExpansionCase())||this._tokenizeBlocks&&!this._inInterpolation&&!this._isInExpansion()&&(this._isBlockStart()||this._isLetStart()||this._cursor.peek()===Ga))}_isTagStart(){if(this._cursor.peek()===nf){let i=this._cursor.clone();i.advance();let e=i.peek();if(Eu<=e&&e<=gv||Um<=e&&e<=Mf||e===ll||e===yD)return!0}return!1}_readUntil(i){let e=this._cursor.clone();return this._attemptUntilChar(i),this._cursor.getChars(e)}_isInExpansion(){return this._isInExpansionCase()||this._isInExpansionForm()}_isInExpansionCase(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===21}_isInExpansionForm(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===19}isExpansionFormStart(){if(this._cursor.peek()!==ml)return!1;let i=this._cursor.clone(),e=this._attemptStr(X_.start);return this._cursor=i,!e}};function Wo(t){return!q0(t)||t===ia}function tu(t){return q0(t)||t===Bs||t===nf||t===ll||t===W0||t===G0||t===ta||t===ia}function UQ(t){return(t<Eu||gv<t)&&(t<Um||Mf<t)&&(t<FP||t>X6)}function GQ(t){return t===ms||t===ia||!cq(t)}function WQ(t){return t===ms||t===ia||!(Vm(t)||cl(t))}function qQ(t){return t!==Ga}function XQ(t,i){return kF(t)===kF(i)}function kF(t){return t>=Eu&&t<=gv?t-Eu+Um:t}function QQ(t){return Vm(t)||cl(t)||t===Gm}function TF(t){return t!==ms&&Wo(t)}function ex(t){return t===Gm||t>=Um&&t<=Mf}function EF(t){return Vm(t)||cl(t)||t===Gm}function DF(t){return t===ll||t===Bs||t===nf||t===ia}function YQ(t){let i=[],e;for(let n=0;n<t.length;n++){let o=t[n];e&&e.type===5&&o.type===5||e&&e.type===16&&o.type===16?(e.parts[0]+=o.parts[0],e.sourceSpan.end=o.sourceSpan.end):(e=o,i.push(e))}return i}var c1=class t{state;file;input;end;constructor(i,e){if(i instanceof t){this.file=i.file,this.input=i.input,this.end=i.end;let n=i.state;this.state={peek:n.peek,offset:n.offset,line:n.line,column:n.column}}else{if(!e)throw new Error("Programming error: the range argument must be provided with a file argument.");this.file=i,this.input=i.content,this.end=e.endPos,this.state={peek:-1,offset:e.startPos,line:e.startLine,column:e.startCol}}}clone(){return new t(this)}peek(){return this.state.peek}charsLeft(){return this.end-this.state.offset}diff(i){return this.state.offset-i.state.offset}advance(){this.advanceState(this.state)}init(){this.updatePeek(this.state)}getSpan(i,e){i=i||this;let n=i;if(e)for(;this.diff(i)>0&&e.indexOf(i.peek())!==-1;)n===i&&(i=i.clone()),i.advance();let o=this.locationFromCursor(i),r=this.locationFromCursor(this),a=n!==i?this.locationFromCursor(n):o;return new bn(o,r,a)}getChars(i){return this.input.substring(i.state.offset,this.state.offset)}charAt(i){return this.input.charCodeAt(i)}advanceState(i){if(i.offset>=this.end)throw this.state=i,new sv('Unexpected character "EOF"',this);let e=this.charAt(i.offset);e===uu?(i.line++,i.column=0):Wx(e)||i.column++,i.offset++,this.updatePeek(i)}updatePeek(i){i.peek=i.offset>=this.end?ia:this.charAt(i.offset)}locationFromCursor(i){return new X0(i.file,i.state.offset,i.state.line,i.state.column)}},GD=class t extends c1{internalState;constructor(i,e){i instanceof t?(super(i),this.internalState=H({},i.internalState)):(super(i,e),this.internalState=this.state)}advance(){this.state=this.internalState,super.advance(),this.processEscapeSequence()}init(){super.init(),this.processEscapeSequence()}clone(){return new t(this)}getChars(i){let e=i.clone(),n="";for(;e.internalState.offset<this.internalState.offset;)n+=String.fromCodePoint(e.peek()),e.advance();return n}processEscapeSequence(){let i=()=>this.internalState.peek;if(i()===hu)if(this.internalState=H({},this.state),this.advanceState(this.internalState),i()===Q6)this.state.peek=uu;else if(i()===Y6)this.state.peek=RP;else if(i()===J6)this.state.peek=H6;else if(i()===K6)this.state.peek=NP;else if(i()===sq)this.state.peek=eq;else if(i()===LP)this.state.peek=U6;else if(i()===Z6)if(this.advanceState(this.internalState),i()===ml){this.advanceState(this.internalState);let e=this.clone(),n=0;for(;i()!==Ga;)this.advanceState(this.internalState),n++;this.state.peek=this.decodeHexDigits(e,n)}else{let e=this.clone();this.advanceState(this.internalState),this.advanceState(this.internalState),this.advanceState(this.internalState),this.state.peek=this.decodeHexDigits(e,4)}else if(i()===eL){this.advanceState(this.internalState);let e=this.clone();this.advanceState(this.internalState),this.state.peek=this.decodeHexDigits(e,2)}else if(iF(i())){let e="",n=0,o=this.clone();for(;iF(i())&&n<3;)o=this.clone(),e+=String.fromCodePoint(i()),this.advanceState(this.internalState),n++;this.state.peek=parseInt(e,8),this.internalState=o.internalState}else Wx(this.internalState.peek)?(this.advanceState(this.internalState),this.state=this.internalState):this.state.peek=this.internalState.peek}decodeHexDigits(i,e){let n=this.input.slice(i.internalState.offset,i.internalState.offset+e),o=parseInt(n,16);if(isNaN(o))throw i.state=i.internalState,new sv("Invalid hexadecimal escape sequence",i);return o}},sv=class extends Error{msg;cursor;constructor(i,e){super(i),this.msg=i,this.cursor=e,Object.setPrototypeOf(this,new.target.prototype)}},Sr=class t extends mn{elementName;static create(i,e,n){return new t(i,e,n)}constructor(i,e,n){super(e,n),this.elementName=i}},d1=class{rootNodes;errors;constructor(i,e){this.rootNodes=i,this.errors=e}},KQ=class{getTagDefinition;constructor(i){this.getTagDefinition=i}parse(i,e,n){let o=zQ(i,e,this.getTagDefinition,n),r=new WD(o.tokens,this.getTagDefinition);return r.build(),new d1(r.rootNodes,[...o.errors,...r.errors])}},WD=class t{tokens;tagDefinitionResolver;_index=-1;_peek;_containerStack=[];rootNodes=[];errors=[];constructor(i,e){this.tokens=i,this.tagDefinitionResolver=e,this._advance()}build(){for(;this._peek.type!==41;)this._peek.type===0||this._peek.type===4?this._consumeElementStartTag(this._advance()):this._peek.type===3?this._consumeElementEndTag(this._advance()):this._peek.type===12?(this._closeVoidElement(),this._consumeCdata(this._advance())):this._peek.type===10?(this._closeVoidElement(),this._consumeComment(this._advance())):this._peek.type===5||this._peek.type===7||this._peek.type===6?(this._closeVoidElement(),this._consumeText(this._advance())):this._peek.type===19?this._consumeExpansion(this._advance()):this._peek.type===24?(this._closeVoidElement(),this._consumeBlockOpen(this._advance())):this._peek.type===26?(this._closeVoidElement(),this._consumeBlockClose(this._advance())):this._peek.type===28?(this._closeVoidElement(),this._consumeIncompleteBlock(this._advance())):this._peek.type===29?(this._closeVoidElement(),this._consumeLet(this._advance())):this._peek.type===32?(this._closeVoidElement(),this._consumeIncompleteLet(this._advance())):this._peek.type===33||this._peek.type===37?this._consumeComponentStartTag(this._advance()):this._peek.type===36?this._consumeComponentEndTag(this._advance()):this._advance();for(let i of this._containerStack)i instanceof dl&&this.errors.push(Sr.create(i.name,i.sourceSpan,`Unclosed block "${i.name}"`))}_advance(){let i=this._peek;return this._index<this.tokens.length-1&&this._index++,this._peek=this.tokens[this._index],i}_advanceIf(i){return this._peek.type===i?this._advance():null}_consumeCdata(i){this._consumeText(this._advance()),this._advanceIf(13)}_consumeComment(i){let e=this._advanceIf(7),n=this._advanceIf(11),o=e!=null?e.parts[0].trim():null,r=n==null?i.sourceSpan:new bn(i.sourceSpan.start,n.sourceSpan.end,i.sourceSpan.fullStart);this._addToParent(new rv(o,r))}_consumeExpansion(i){let e=this._advance(),n=this._advance(),o=[];for(;this._peek.type===20;){let a=this._parseExpansionCase();if(!a)return;o.push(a)}if(this._peek.type!==23){this.errors.push(Sr.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '}'."));return}let r=new bn(i.sourceSpan.start,this._peek.sourceSpan.end,i.sourceSpan.fullStart);this._addToParent(new fu(e.parts[0],n.parts[0],o,r,e.sourceSpan)),this._advance()}_parseExpansionCase(){let i=this._advance();if(this._peek.type!==21)return this.errors.push(Sr.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '{'.")),null;let e=this._advance(),n=this._collectExpansionExpTokens(e);if(!n)return null;let o=this._advance();n.push({type:41,parts:[],sourceSpan:o.sourceSpan});let r=new t(n,this.tagDefinitionResolver);if(r.build(),r.errors.length>0)return this.errors=this.errors.concat(r.errors),null;let a=new bn(i.sourceSpan.start,o.sourceSpan.end,i.sourceSpan.fullStart),c=new bn(e.sourceSpan.start,o.sourceSpan.end,e.sourceSpan.fullStart);return new a1(i.parts[0],r.rootNodes,a,i.sourceSpan,c)}_collectExpansionExpTokens(i){let e=[],n=[21];for(;;){if((this._peek.type===19||this._peek.type===21)&&n.push(this._peek.type),this._peek.type===22)if(PF(n,21)){if(n.pop(),n.length===0)return e}else return this.errors.push(Sr.create(null,i.sourceSpan,"Invalid ICU message. Missing '}'.")),null;if(this._peek.type===23)if(PF(n,19))n.pop();else return this.errors.push(Sr.create(null,i.sourceSpan,"Invalid ICU message. Missing '}'.")),null;if(this._peek.type===41)return this.errors.push(Sr.create(null,i.sourceSpan,"Invalid ICU message. Missing '}'.")),null;e.push(this._advance())}}_consumeText(i){let e=[i],n=i.sourceSpan,o=i.parts[0];if(o.length>0&&o[0]===`
|
||
`){let r=this._getContainer();r!=null&&r.children.length===0&&this._getTagDefinition(r)?.ignoreFirstLf&&(o=o.substring(1),e[0]={type:i.type,sourceSpan:i.sourceSpan,parts:[o]})}for(;this._peek.type===8||this._peek.type===5||this._peek.type===9;)i=this._advance(),e.push(i),i.type===8?o+=i.parts.join("").replace(/&([^;]+);/g,IF):i.type===9?o+=i.parts[0]:o+=i.parts.join("");if(o.length>0){let r=i.sourceSpan;this._addToParent(new Ou(o,new bn(n.start,r.end,n.fullStart,n.details),e))}}_closeVoidElement(){let i=this._getContainer();i!==null&&this._getTagDefinition(i)?.isVoid&&this._containerStack.pop()}_consumeElementStartTag(i){let e=[],n=[];this._consumeAttributesAndDirectives(e,n);let o=this._getElementFullName(i,this._getClosestElementLikeParent()),r=this._getTagDefinition(o),a=!1;this._peek.type===2?(this._advance(),a=!0,r?.canSelfClose||mD(o)!==null||r?.isVoid||this.errors.push(Sr.create(o,i.sourceSpan,`Only void, custom and foreign elements can be self closed "${i.parts[1]}"`))):this._peek.type===1&&(this._advance(),a=!1);let c=this._peek.sourceSpan.fullStart,m=new bn(i.sourceSpan.start,c,i.sourceSpan.fullStart),p=new bn(i.sourceSpan.start,c,i.sourceSpan.fullStart),h=new sl(o,e,n,[],a,m,p,void 0,r?.isVoid??!1),g=this._getContainer(),M=g!==null&&!!this._getTagDefinition(g)?.isClosedByChild(h.name);this._pushContainer(h,M),a?this._popContainer(o,sl,m):i.type===4&&(this._popContainer(o,sl,null),this.errors.push(Sr.create(o,m,`Opening tag "${o}" not terminated.`)))}_consumeComponentStartTag(i){let e=i.parts[0],n=[],o=[];this._consumeAttributesAndDirectives(n,o);let r=this._getClosestElementLikeParent(),a=this._getComponentTagName(i,r),c=this._getComponentFullName(i,r),m=this._peek.type===35;this._advance();let p=this._peek.sourceSpan.fullStart,h=new bn(i.sourceSpan.start,p,i.sourceSpan.fullStart),g=new bn(i.sourceSpan.start,p,i.sourceSpan.fullStart),M=new Ua(e,a,c,n,o,[],m,h,g,void 0),C=this._getContainer(),_=C!==null&&M.tagName!==null&&!!this._getTagDefinition(C)?.isClosedByChild(M.tagName);this._pushContainer(M,_),m?this._popContainer(c,Ua,h):i.type===37&&(this._popContainer(c,Ua,null),this.errors.push(Sr.create(c,h,`Opening tag "${c}" not terminated.`)))}_consumeAttributesAndDirectives(i,e){for(;this._peek.type===14||this._peek.type===38;)this._peek.type===38?e.push(this._consumeDirective(this._peek)):i.push(this._consumeAttr(this._advance()))}_consumeComponentEndTag(i){let e=this._getComponentFullName(i,this._getClosestElementLikeParent());if(!this._popContainer(e,Ua,i.sourceSpan)){let n=this._containerStack[this._containerStack.length-1],o;n instanceof Ua&&n.componentName===i.parts[0]?o=`, did you mean "${n.fullName}"?`:o=". It may happen when the tag has already been closed by another tag.";let r=`Unexpected closing tag "${e}"${o}`;this.errors.push(Sr.create(e,i.sourceSpan,r))}}_getTagDefinition(i){return typeof i=="string"?this.tagDefinitionResolver(i):i instanceof sl?this.tagDefinitionResolver(i.name):i instanceof Ua&&i.tagName!==null?this.tagDefinitionResolver(i.tagName):null}_pushContainer(i,e){e&&this._containerStack.pop(),this._addToParent(i),this._containerStack.push(i)}_consumeElementEndTag(i){let e=this._getElementFullName(i,this._getClosestElementLikeParent());if(this._getTagDefinition(e)?.isVoid)this.errors.push(Sr.create(e,i.sourceSpan,`Void elements do not have end tags "${i.parts[1]}"`));else if(!this._popContainer(e,sl,i.sourceSpan)){let n=`Unexpected closing tag "${e}". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags`;this.errors.push(Sr.create(e,i.sourceSpan,n))}}_popContainer(i,e,n){let o=!1;for(let r=this._containerStack.length-1;r>=0;r--){let a=this._containerStack[r];if(((a instanceof Ua?a.fullName:a.name)===i||i===null)&&a instanceof e)return a.endSourceSpan=n,a.sourceSpan.end=n!==null?n.end:a.sourceSpan.end,this._containerStack.splice(r,this._containerStack.length-r),!o;(a instanceof dl||!this._getTagDefinition(a)?.closedByParent)&&(o=!0)}return!1}_consumeAttr(i){let e=mx(i.parts[0],i.parts[1]),n=i.sourceSpan.end;this._peek.type===15&&this._advance();let o="",r=[],a,c;if(this._peek.type===16)for(a=this._peek.sourceSpan,c=this._peek.sourceSpan.end;this._peek.type===16||this._peek.type===17||this._peek.type===9;){let h=this._advance();r.push(h),h.type===17?o+=h.parts.join("").replace(/&([^;]+);/g,IF):h.type===9?o+=h.parts[0]:o+=h.parts.join(""),c=n=h.sourceSpan.end}this._peek.type===15&&(n=this._advance().sourceSpan.end);let p=a&&c&&new bn(a.start,c,a.fullStart);return new zD(e,o,new bn(i.sourceSpan.start,n,i.sourceSpan.fullStart),i.sourceSpan,p,r.length>0?r:void 0,void 0)}_consumeDirective(i){let e=[],n=i.sourceSpan.end,o=null;if(this._advance(),this._peek.type===39){for(n=this._peek.sourceSpan.end,this._advance();this._peek.type===14;)e.push(this._consumeAttr(this._advance()));this._peek.type===40?(o=this._peek.sourceSpan,this._advance()):this.errors.push(Sr.create(null,i.sourceSpan,"Unterminated directive definition"))}let r=new bn(i.sourceSpan.start,n,i.sourceSpan.fullStart),a=new bn(r.start,o===null?i.sourceSpan.end:o.end,r.fullStart);return new jD(i.parts[0],e,a,r,o)}_consumeBlockOpen(i){let e=[];for(;this._peek.type===27;){let c=this._advance();e.push(new s1(c.parts[0],c.sourceSpan))}this._peek.type===25&&this._advance();let n=this._peek.sourceSpan.fullStart,o=new bn(i.sourceSpan.start,n,i.sourceSpan.fullStart),r=new bn(i.sourceSpan.start,n,i.sourceSpan.fullStart),a=new dl(i.parts[0],e,[],o,i.sourceSpan,r);this._pushContainer(a,!1)}_consumeBlockClose(i){let e=this._containerStack.length,n=this._containerStack[e-1];if(!this._popContainer(null,dl,i.sourceSpan)){if(this._containerStack.length<e){let o=n instanceof Ua?n.fullName:n.name;this.errors.push(Sr.create(null,i.sourceSpan,`Unexpected closing block. The block may have been closed earlier. Did you forget to close the <${o}> element? If you meant to write the \`}\` character, you should use the "}" HTML entity instead.`));return}this.errors.push(Sr.create(null,i.sourceSpan,'Unexpected closing block. The block may have been closed earlier. If you meant to write the `}` character, you should use the "}" HTML entity instead.'))}}_consumeIncompleteBlock(i){let e=[];for(;this._peek.type===27;){let c=this._advance();e.push(new s1(c.parts[0],c.sourceSpan))}let n=this._peek.sourceSpan.fullStart,o=new bn(i.sourceSpan.start,n,i.sourceSpan.fullStart),r=new bn(i.sourceSpan.start,n,i.sourceSpan.fullStart),a=new dl(i.parts[0],e,[],o,i.sourceSpan,r);this._pushContainer(a,!1),this._popContainer(null,dl,null),this.errors.push(Sr.create(i.parts[0],o,`Incomplete block "${i.parts[0]}". If you meant to write the @ character, you should use the "@" HTML entity instead.`))}_consumeLet(i){let e=i.parts[0],n,o;if(this._peek.type!==30){this.errors.push(Sr.create(i.parts[0],i.sourceSpan,`Invalid @let declaration "${e}". Declaration must have a value.`));return}else n=this._advance();if(this._peek.type!==31){this.errors.push(Sr.create(i.parts[0],i.sourceSpan,`Unterminated @let declaration "${e}". Declaration must be terminated with a semicolon.`));return}else o=this._advance();let r=o.sourceSpan.fullStart,a=new bn(i.sourceSpan.start,r,i.sourceSpan.fullStart),c=i.sourceSpan.toString().lastIndexOf(e),m=i.sourceSpan.start.moveBy(c),p=new bn(m,i.sourceSpan.end),h=new l1(e,n.parts[0],a,p,n.sourceSpan);this._addToParent(h)}_consumeIncompleteLet(i){let e=i.parts[0]??"",n=e?` "${e}"`:"";if(e.length>0){let o=i.sourceSpan.toString().lastIndexOf(e),r=i.sourceSpan.start.moveBy(o),a=new bn(r,i.sourceSpan.end),c=new bn(i.sourceSpan.start,i.sourceSpan.start.moveBy(0)),m=new l1(e,"",i.sourceSpan,a,c);this._addToParent(m)}this.errors.push(Sr.create(i.parts[0],i.sourceSpan,`Incomplete @let declaration${n}. @let declarations must be written as \`@let <name> = <value>;\``))}_getContainer(){return this._containerStack.length>0?this._containerStack[this._containerStack.length-1]:null}_getClosestElementLikeParent(){for(let i=this._containerStack.length-1;i>-1;i--){let e=this._containerStack[i];if(e instanceof sl||e instanceof Ua)return e}return null}_addToParent(i){let e=this._getContainer();e===null?this.rootNodes.push(i):e.children.push(i)}_getElementFullName(i,e){let n=this._getPrefix(i,e);return mx(n,i.parts[1])}_getComponentFullName(i,e){let n=i.parts[0],o=this._getComponentTagName(i,e);return o===null?n:o.startsWith(":")?n+o:`${n}:${o}`}_getComponentTagName(i,e){let n=this._getPrefix(i,e),o=i.parts[2];return!n&&!o?null:!n&&o?o:mx(n,o||"ng-component")}_getPrefix(i,e){let n,o;if(i.type===33||i.type===37||i.type===36?(n=i.parts[1],o=i.parts[2]):(n=i.parts[0],o=i.parts[1]),n=n||this._getTagDefinition(o)?.implicitNamespacePrefix||"",!n&&e){let r=e instanceof sl?e.name:e.tagName;if(r!==null){let a=oc(r)[1],c=this._getTagDefinition(a);c!==null&&!c.preventNamespaceInheritance&&(n=mD(r))}}return n}};function PF(t,i){return t.length>0&&t[t.length-1]===i}function IF(t,i){return av[i]!==void 0?av[i]||t:/^#x[a-f0-9]+$/i.test(i)?String.fromCodePoint(parseInt(i.slice(2),16)):/^#\d+$/.test(i)?String.fromCodePoint(parseInt(i.slice(1),10)):t}var SL="ngPreserveWhitespaces",AF=new Set(["pre","template","textarea","script","style"]),wL=` \f
|
||
\r \v\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`,ZQ=new RegExp(`[^${wL}]`),JQ=new RegExp(`[${wL}]{2,}`,"g");function OF(t){return t.some(i=>i.name===SL)}function ML(t){return t.replace(new RegExp(yL,"g")," ")}var m1=class{preserveSignificantWhitespace;originalNodeMap;requireContext;icuExpansionDepth=0;constructor(i,e,n=!0){this.preserveSignificantWhitespace=i,this.originalNodeMap=e,this.requireContext=n}visitElement(i,e){if(AF.has(i.name)||OF(i.attrs)){let o=new sl(i.name,kc(this,i.attrs),kc(this,i.directives),i.children,i.isSelfClosing,i.sourceSpan,i.startSourceSpan,i.endSourceSpan,i.isVoid,i.i18n);return this.originalNodeMap?.set(o,i),o}let n=new sl(i.name,i.attrs,i.directives,kc(this,i.children),i.isSelfClosing,i.sourceSpan,i.startSourceSpan,i.endSourceSpan,i.isVoid,i.i18n);return this.originalNodeMap?.set(n,i),n}visitAttribute(i,e){return i.name!==SL?i:null}visitText(i,e){let n=i.value.match(ZQ),o=e&&(e.prev instanceof fu||e.next instanceof fu);if(this.icuExpansionDepth>0&&this.preserveSignificantWhitespace)return i;if(n||o){let a=i.tokens.map(h=>h.type===5?iY(h):h);if(!this.preserveSignificantWhitespace&&a.length>0){let h=a[0];a.splice(0,1,eY(h,e));let g=a[a.length-1];a.splice(a.length-1,1,tY(g,e))}let c=TL(i.value),m=this.preserveSignificantWhitespace?c:nY(c,e),p=new Ou(m,i.sourceSpan,a,i.i18n);return this.originalNodeMap?.set(p,i),p}return null}visitComment(i,e){return i}visitExpansion(i,e){this.icuExpansionDepth++;let n;try{n=new fu(i.switchValue,i.type,kc(this,i.cases),i.sourceSpan,i.switchValueSourceSpan,i.i18n)}finally{this.icuExpansionDepth--}return this.originalNodeMap?.set(n,i),n}visitExpansionCase(i,e){let n=new a1(i.value,kc(this,i.expression),i.sourceSpan,i.valueSourceSpan,i.expSourceSpan);return this.originalNodeMap?.set(n,i),n}visitBlock(i,e){let n=new dl(i.name,i.parameters,kc(this,i.children),i.sourceSpan,i.nameSpan,i.startSourceSpan,i.endSourceSpan);return this.originalNodeMap?.set(n,i),n}visitBlockParameter(i,e){return i}visitLetDeclaration(i,e){return i}visitComponent(i,e){if(i.tagName&&AF.has(i.tagName)||OF(i.attrs)){let o=new Ua(i.componentName,i.tagName,i.fullName,kc(this,i.attrs),kc(this,i.directives),i.children,i.isSelfClosing,i.sourceSpan,i.startSourceSpan,i.endSourceSpan,i.i18n);return this.originalNodeMap?.set(o,i),o}let n=new Ua(i.componentName,i.tagName,i.fullName,i.attrs,i.directives,kc(this,i.children),i.isSelfClosing,i.sourceSpan,i.startSourceSpan,i.endSourceSpan,i.i18n);return this.originalNodeMap?.set(n,i),n}visitDirective(i,e){return i}visit(i,e){if(this.requireContext&&!e)throw new Error("WhitespaceVisitor requires context. Visit via `visitAllWithSiblings` to get this context.");return!1}};function eY(t,i){return t.type!==5||!!i?.prev?t:kL(t,n=>n.trimStart())}function tY(t,i){return t.type!==5||!!i?.next?t:kL(t,n=>n.trimEnd())}function nY(t,i){let e=!i?.prev,n=!i?.next,o=e?t.trimStart():t;return n?o.trimEnd():o}function iY({type:t,parts:i,sourceSpan:e}){return{type:t,parts:[TL(i[0])],sourceSpan:e}}function kL({type:t,parts:i,sourceSpan:e},n){return{type:t,parts:[n(i[0])],sourceSpan:e}}function TL(t){return ML(t).replace(JQ," ")}function kc(t,i){let e=[];return i.forEach((n,o)=>{let r={prev:i[o-1],next:i[o+1]},a=n.visit(t,r);a&&e.push(a)}),e}var _n=(function(t){return t[t.Character=0]="Character",t[t.Identifier=1]="Identifier",t[t.PrivateIdentifier=2]="PrivateIdentifier",t[t.Keyword=3]="Keyword",t[t.String=4]="String",t[t.Operator=5]="Operator",t[t.Number=6]="Number",t[t.RegExpBody=7]="RegExpBody",t[t.RegExpFlags=8]="RegExpFlags",t[t.Error=9]="Error",t})(_n||{}),gu=(function(t){return t[t.Plain=0]="Plain",t[t.TemplateLiteralPart=1]="TemplateLiteralPart",t[t.TemplateLiteralEnd=2]="TemplateLiteralEnd",t})(gu||{}),oY=["var","let","as","null","undefined","true","false","if","else","this","typeof","void","in","instanceof"],lv=class{tokenize(i){return new qD(i).scan()}},qs=class{index;end;type;numValue;strValue;constructor(i,e,n,o,r){this.index=i,this.end=e,this.type=n,this.numValue=o,this.strValue=r}isCharacter(i){return this.type===_n.Character&&this.numValue===i}isNumber(){return this.type===_n.Number}isString(){return this.type===_n.String}isOperator(i){return this.type===_n.Operator&&this.strValue===i}isIdentifier(){return this.type===_n.Identifier}isPrivateIdentifier(){return this.type===_n.PrivateIdentifier}isKeyword(){return this.type===_n.Keyword}isKeywordLet(){return this.type===_n.Keyword&&this.strValue==="let"}isKeywordAs(){return this.type===_n.Keyword&&this.strValue==="as"}isKeywordNull(){return this.type===_n.Keyword&&this.strValue==="null"}isKeywordUndefined(){return this.type===_n.Keyword&&this.strValue==="undefined"}isKeywordTrue(){return this.type===_n.Keyword&&this.strValue==="true"}isKeywordFalse(){return this.type===_n.Keyword&&this.strValue==="false"}isKeywordThis(){return this.type===_n.Keyword&&this.strValue==="this"}isKeywordTypeof(){return this.type===_n.Keyword&&this.strValue==="typeof"}isKeywordVoid(){return this.type===_n.Keyword&&this.strValue==="void"}isKeywordIn(){return this.type===_n.Keyword&&this.strValue==="in"}isKeywordInstanceOf(){return this.type===_n.Keyword&&this.strValue==="instanceof"}isError(){return this.type===_n.Error}isRegExpBody(){return this.type===_n.RegExpBody}isRegExpFlags(){return this.type===_n.RegExpFlags}toNumber(){return this.type===_n.Number?this.numValue:-1}isTemplateLiteralPart(){return this.isString()&&this.kind===gu.TemplateLiteralPart}isTemplateLiteralEnd(){return this.isString()&&this.kind===gu.TemplateLiteralEnd}isTemplateLiteralInterpolationStart(){return this.isOperator("${")}toString(){switch(this.type){case _n.Character:case _n.Identifier:case _n.Keyword:case _n.Operator:case _n.PrivateIdentifier:case _n.String:case _n.Error:case _n.RegExpBody:case _n.RegExpFlags:return this.strValue;case _n.Number:return this.numValue.toString();default:return null}}},d0=class extends qs{kind;constructor(i,e,n,o){super(i,e,_n.String,0,n),this.kind=o}};function Q_(t,i,e){return new qs(t,i,_n.Character,e,String.fromCharCode(e))}function rY(t,i,e){return new qs(t,i,_n.Identifier,0,e)}function aY(t,i,e){return new qs(t,i,_n.PrivateIdentifier,0,e)}function sY(t,i,e){return new qs(t,i,_n.Keyword,0,e)}function Sm(t,i,e){return new qs(t,i,_n.Operator,0,e)}function lY(t,i,e){return new qs(t,i,_n.Number,e,"")}function cY(t,i,e){return new qs(t,i,_n.Error,0,e)}function dY(t,i,e){return new qs(t,i,_n.RegExpBody,0,e)}function mY(t,i,e){return new qs(t,i,_n.RegExpFlags,0,e)}var Y_=new qs(-1,-1,_n.Character,0,""),qD=class{input;tokens=[];length;peek=0;index=-1;braceStack=[];constructor(i){this.input=i,this.length=i.length,this.advance()}scan(){let i=this.scanToken();for(;i!==null;)this.tokens.push(i),i=this.scanToken();return this.tokens}advance(){this.peek=++this.index>=this.length?ia:this.input.charCodeAt(this.index)}scanToken(){let i=this.input,e=this.length,n=this.peek,o=this.index;for(;n<=G6;)if(++o>=e){n=ia;break}else n=i.charCodeAt(o);if(this.peek=n,this.index=o,o>=e)return null;if(NF(n))return this.scanIdentifier();if(cl(n))return this.scanNumber(o);let r=o;switch(n){case nu:return this.advance(),cl(this.peek)?this.scanNumber(r):this.peek!==nu?Q_(r,this.index,nu):(this.advance(),this.peek===nu?(this.advance(),Sm(r,this.index,"...")):this.error(`Unexpected character [${String.fromCharCode(n)}]`,0));case qa:case Pr:case Oc:case Ed:case Pa:case Pc:case ms:return this.scanCharacter(r,n);case ml:return this.scanOpenBrace(r,n);case Ga:return this.scanCloseBrace(r,n);case W0:case G0:return this.scanString();case SD:return this.advance(),this.scanTemplateLiteralPart(r);case W6:return this.scanPrivateIdentifier();case q6:return this.scanComplexOperator(r,"+",ta,"=");case Gx:return this.scanComplexOperator(r,"-",ta,"=");case ll:return this.isStartOfRegex()?this.scanRegex(o):this.scanComplexOperator(r,"/",ta,"=");case tq:return this.scanComplexOperator(r,"%",ta,"=");case aq:return this.scanOperator(r,"^");case eF:return this.scanStar(r);case tF:return this.scanQuestion(r);case nf:case Bs:return this.scanComplexOperator(r,String.fromCharCode(n),ta,"=");case yD:return this.scanComplexOperator(r,"!",ta,"=",ta,"=");case ta:return this.scanEquals(r);case Ux:return this.scanComplexOperator(r,"&",Ux,"&",ta,"=");case nF:return this.scanComplexOperator(r,"|",nF,"|",ta,"=");case tL:for(;q0(this.peek);)this.advance();return this.scanToken()}return this.advance(),this.error(`Unexpected character [${String.fromCharCode(n)}]`,0)}scanCharacter(i,e){return this.advance(),Q_(i,this.index,e)}scanOperator(i,e){return this.advance(),Sm(i,this.index,e)}scanOpenBrace(i,e){return this.braceStack.push("expression"),this.advance(),Q_(i,this.index,e)}scanCloseBrace(i,e){return this.advance(),this.braceStack.pop()==="interpolation"?(this.tokens.push(Q_(i,this.index,Ga)),this.scanTemplateLiteralPart(this.index)):Q_(i,this.index,e)}scanComplexOperator(i,e,n,o,r,a){this.advance();let c=e;return this.peek==n&&(this.advance(),c+=o),r!=null&&this.peek==r&&(this.advance(),c+=a),Sm(i,this.index,c)}scanEquals(i){this.advance();let e="=";if(this.peek===ta)this.advance(),e+="=";else if(this.peek===Bs)return this.advance(),e+=">",Sm(i,this.index,e);return this.peek===ta&&(this.advance(),e+="="),Sm(i,this.index,e)}scanIdentifier(){let i=this.index;for(this.advance();RF(this.peek);)this.advance();let e=this.input.substring(i,this.index);return oY.indexOf(e)>-1?sY(i,this.index,e):rY(i,this.index,e)}scanPrivateIdentifier(){let i=this.index;if(this.advance(),!NF(this.peek))return this.error("Invalid character [#]",-1);for(;RF(this.peek);)this.advance();let e=this.input.substring(i,this.index);return aY(i,this.index,e)}scanNumber(i){let e=this.index===i,n=!1;for(this.advance();;){if(!cl(this.peek))if(this.peek===Gm){if(!cl(this.input.charCodeAt(this.index-1))||!cl(this.input.charCodeAt(this.index+1)))return this.error("Invalid numeric separator",0);n=!0}else if(this.peek===nu)e=!1;else if(pY(this.peek)){if(this.advance(),uY(this.peek)&&this.advance(),!cl(this.peek))return this.error("Invalid exponent",-1);e=!1}else break;this.advance()}let o=this.input.substring(i,this.index);n&&(o=o.replace(/_/g,""));let r=e?fY(o):parseFloat(o);return lY(i,this.index,r)}scanString(){let i=this.index,e=this.peek;this.advance();let n="",o=this.index,r=this.input;for(;this.peek!=e;)if(this.peek==hu){let c=this.scanStringBackslash(n,o);if(typeof c!="string")return c;n=c,o=this.index}else{if(this.peek==ia)return this.error("Unterminated quote",0);this.advance()}let a=r.substring(o,this.index);return this.advance(),new d0(i,this.index,n+a,gu.Plain)}scanQuestion(i){this.advance();let e="?";return this.peek===tF?(e+="?",this.advance(),this.peek===ta&&(e+="=",this.advance())):this.peek===nu&&(e+=".",this.advance()),Sm(i,this.index,e)}scanTemplateLiteralPart(i){let e="",n=this.index;for(;this.peek!==SD;)if(this.peek===hu){let r=this.scanStringBackslash(e,n);if(typeof r!="string")return r;e=r,n=this.index}else if(this.peek===M1){let r=this.index;if(this.advance(),this.peek===ml)return this.braceStack.push("interpolation"),this.tokens.push(new d0(i,r,e+this.input.substring(n,r),gu.TemplateLiteralPart)),this.advance(),Sm(r,this.index,this.input.substring(r,this.index))}else{if(this.peek===ia)return this.error("Unterminated template literal",0);this.advance()}let o=this.input.substring(n,this.index);return this.advance(),new d0(i,this.index,e+o,gu.TemplateLiteralEnd)}error(i,e){let n=this.index+e;return cY(n,this.index,`Lexer Error: ${i} at column ${n} in expression [${this.input}]`)}scanStringBackslash(i,e){i+=this.input.substring(e,this.index);let n;if(this.advance(),this.peek===Z6){let o=this.input.substring(this.index+1,this.index+5);if(/^[0-9a-f]+$/i.test(o))n=parseInt(o,16);else return this.error(`Invalid unicode escape [\\u${o}]`,0);for(let r=0;r<5;r++)this.advance()}else n=hY(this.peek),this.advance();return i+=String.fromCharCode(n),i}scanStar(i){this.advance();let e="*";return this.peek===eF?(e+="*",this.advance(),this.peek===ta&&(e+="=",this.advance())):this.peek===ta&&(e+="=",this.advance()),Sm(i,this.index,e)}isStartOfRegex(){if(this.tokens.length===0)return!0;let i=this.tokens[this.tokens.length-1];if(i.isOperator("!")){let e=this.tokens.length>1?this.tokens[this.tokens.length-2]:null;return e===null||e.type!==_n.Identifier&&!e.isCharacter(Pr)&&!e.isCharacter(Ed)}return i.type===_n.Operator||i.isCharacter(qa)||i.isCharacter(Oc)||i.isCharacter(Pa)||i.isCharacter(Pc)}scanRegex(i){this.advance();let e=this.index,n=!1,o=!1;for(;;){let m=this.peek;if(m===ia)return this.error("Unterminated regular expression",0);if(n)n=!1;else if(m===hu)n=!0;else if(m===Oc)o=!0;else if(m===Ed)o=!1;else if(m===ll&&!o)break;this.advance()}let r=this.input.substring(e,this.index);this.advance();let a=dY(i,this.index,r),c=this.scanRegexFlags(this.index);return c!==null?(this.tokens.push(a),c):a}scanRegexFlags(i){if(!Vm(this.peek))return null;for(;Vm(this.peek);)this.advance();return mY(i,this.index,this.input.substring(i,this.index))}};function NF(t){return Eu<=t&&t<=gv||Um<=t&&t<=Mf||t==Gm||t==M1}function RF(t){return Vm(t)||cl(t)||t==Gm||t==M1}function pY(t){return t==lq||t==iq}function uY(t){return t==Gx||t==q6}function hY(t){switch(t){case Q6:return uu;case LP:return U6;case Y6:return RP;case K6:return NP;case J6:return H6;default:return t}}function fY(t){let i=parseInt(t);if(isNaN(i))throw new Error("Invalid integer literal when parsing "+t);return i}var XD=class{strings;expressions;offsets;constructor(i,e,n){this.strings=i,this.expressions=e,this.offsets=n}},QD=class{templateBindings;warnings;errors;constructor(i,e,n){this.templateBindings=i,this.warnings=e,this.errors=n}};function Em(t){return t.start.toString()||"(unknown)"}var p1=class{_lexer;_supportsDirectPipeReferences;constructor(i,e=!1){this._lexer=i,this._supportsDirectPipeReferences=e}parseAction(i,e,n){let o=[];this._checkNoInterpolation(o,i,e);let{stripped:r}=this._stripComments(i),a=this._lexer.tokenize(r),c=new au(i,e,n,a,1,o,0,this._supportsDirectPipeReferences).parseChain();return new ps(c,i,Em(e),n,o)}parseBinding(i,e,n){let o=[],r=this._parseBindingAst(i,e,n,o);return new ps(r,i,Em(e),n,o)}checkSimpleExpression(i){let e=new YD;return i.visit(e),e.errors}parseSimpleBinding(i,e,n){let o=[],r=this._parseBindingAst(i,e,n,o),a=this.checkSimpleExpression(r);return a.length>0&&o.push(Jh(`Host binding expression cannot contain ${a.join(" ")}`,i,"",e)),new ps(r,i,Em(e),n,o)}_parseBindingAst(i,e,n,o){this._checkNoInterpolation(o,i,e);let{stripped:r}=this._stripComments(i),a=this._lexer.tokenize(r);return new au(i,e,n,a,0,o,0,this._supportsDirectPipeReferences).parseChain()}parseTemplateBindings(i,e,n,o,r){let a=this._lexer.tokenize(e),c=[];return new au(e,n,r,a,0,c,0,this._supportsDirectPipeReferences).parseTemplateBindings({source:i,span:new zs(o,o+i.length)})}parseInterpolation(i,e,n,o){let r=[],{strings:a,expressions:c,offsets:m}=this.splitInterpolation(i,e,r,o);if(c.length===0)return null;let p=[];for(let h=0;h<c.length;++h){let g=o?.[h*2+1]?.sourceSpan,M=c[h].text,{stripped:C,hasComments:_}=this._stripComments(M),w=this._lexer.tokenize(C);if(_&&C.trim().length===0&&w.length===0){r.push(Jh("Interpolation expression cannot only contain a comment",i,`at column ${c[h].start} in`,e));continue}let S=new au(g?M:i,g||e,n,w,0,r,m[h],this._supportsDirectPipeReferences).parseChain();p.push(S)}return this.createInterpolationAst(a.map(h=>h.text),p,i,Em(e),n,r)}parseInterpolationExpression(i,e,n){let{stripped:o}=this._stripComments(i),r=this._lexer.tokenize(o),a=[],c=new au(i,e,n,r,0,a,0,this._supportsDirectPipeReferences).parseChain(),m=["",""];return this.createInterpolationAst(m,[c],i,Em(e),n,a)}createInterpolationAst(i,e,n,o,r,a){let c=new wu(0,n.length),m=new hv(c,c.toAbsolute(r),i,e);return new ps(m,n,o,r,a)}splitInterpolation(i,e,n,o){let r=[],a=[],c=[],m=o?gY(o):null,p=0,h=!1,g=!1,M="{{",C="}}";for(;p<i.length;)if(h){let _=p,w=_+M.length,S=this._getInterpolationEndIndex(i,C,w);if(S===-1){h=!1,g=!0;break}let y=S+C.length,k=i.substring(w,S);k.trim().length===0&&n.push(Jh("Blank expressions are not allowed in interpolated strings",i,`at column ${p} in`,e)),a.push({text:k,start:_,end:y});let E=(m?.get(_)??_)+M.length;c.push(E),p=y,h=!1}else{let _=p;p=i.indexOf(M,p),p===-1&&(p=i.length);let w=i.substring(_,p);r.push({text:w,start:_,end:p}),h=!0}if(!h)if(g){let _=r[r.length-1];_.text+=i.substring(p),_.end=i.length}else r.push({text:i.substring(p),start:p,end:i.length});return new XD(r,a,c)}wrapLiteralPrimitive(i,e,n){let o=new wu(0,i==null?0:i.length);return new ps(new ds(o,o.toAbsolute(n),i),i,typeof e=="string"?e:Em(e),n,[])}_stripComments(i){let e=this._commentStart(i);return e!=null?{stripped:i.substring(0,e),hasComments:!0}:{stripped:i,hasComments:!1}}_commentStart(i){let e=null;for(let n=0;n<i.length-1;n++){let o=i.charCodeAt(n),r=i.charCodeAt(n+1);if(o===ll&&r==ll&&e==null)return n;e===o?e=null:e==null&&c0(o)&&(e=o)}return null}_checkNoInterpolation(i,e,n){let o=-1,r=-1;for(let a of this._forEachUnquotedChar(e,0))if(o===-1)e.startsWith("{{")&&(o=a);else if(r=this._getInterpolationEndIndex(e,"}}",a),r>-1)break;o>-1&&r>-1&&i.push(Jh("Got interpolation ({{}}) where expression was expected",e,`at column ${o} in`,n))}_getInterpolationEndIndex(i,e,n){for(let o of this._forEachUnquotedChar(i,n)){if(i.startsWith(e,o))return o;if(i.startsWith("//",o))return i.indexOf(e,o)}return-1}*_forEachUnquotedChar(i,e){let n=null,o=0;for(let r=e;r<i.length;r++){let a=i[r];c0(i.charCodeAt(r))&&(n===null||n===a)&&o%2===0?n=n===null?a:null:n===null&&(yield r),o=a==="\\"?o+1:0}}},r0=(function(t){return t[t.None=0]="None",t[t.Writable=1]="Writable",t})(r0||{}),FF=new Set(["d","g","i","m","s","u","v","y"]),au=class{input;parseSourceSpan;absoluteOffset;tokens;parseFlags;errors;offset;supportsDirectPipeReferences;rparensExpected=0;rbracketsExpected=0;rbracesExpected=0;context=r0.None;sourceSpanCache=new Map;index=0;constructor(i,e,n,o,r,a,c,m){this.input=i,this.parseSourceSpan=e,this.absoluteOffset=n,this.tokens=o,this.parseFlags=r,this.errors=a,this.offset=c,this.supportsDirectPipeReferences=m}peek(i){let e=this.index+i;return e<this.tokens.length?this.tokens[e]:Y_}get next(){return this.peek(0)}get atEOF(){return this.index>=this.tokens.length}get inputIndex(){return this.atEOF?this.currentEndIndex:this.next.index+this.offset}get currentEndIndex(){return this.index>0?this.peek(-1).end+this.offset:this.tokens.length===0?this.input.length+this.offset:this.next.index+this.offset}get currentAbsoluteOffset(){return this.absoluteOffset+this.inputIndex}span(i,e){let n=this.currentEndIndex;if(e!==void 0&&e>this.currentEndIndex&&(n=e),i>n){let o=n;n=i,i=o}return new wu(i,n)}sourceSpan(i,e){let n=`${i}@${this.inputIndex}:${e}`;return this.sourceSpanCache.has(n)||this.sourceSpanCache.set(n,this.span(i,e).toAbsolute(this.absoluteOffset)),this.sourceSpanCache.get(n)}advance(){this.index++}withContext(i,e){this.context|=i;let n=e();return this.context^=i,n}consumeOptionalCharacter(i){return this.next.isCharacter(i)?(this.advance(),!0):!1}peekKeywordLet(){return this.next.isKeywordLet()}peekKeywordAs(){return this.next.isKeywordAs()}expectCharacter(i){this.consumeOptionalCharacter(i)||this.error(`Missing expected ${String.fromCharCode(i)}`)}consumeOptionalOperator(i){return this.next.isOperator(i)?(this.advance(),!0):!1}isAssignmentOperator(i){return i.type===_n.Operator&&Ha.isAssignmentOperation(i.strValue)}expectOperator(i){this.consumeOptionalOperator(i)||this.error(`Missing expected operator ${i}`)}prettyPrintToken(i){return i===Y_?"end of input":`token ${i}`}expectIdentifierOrKeyword(){let i=this.next;return!i.isIdentifier()&&!i.isKeyword()?(i.isPrivateIdentifier()?this._reportErrorForPrivateIdentifier(i,"expected identifier or keyword"):this.error(`Unexpected ${this.prettyPrintToken(i)}, expected identifier or keyword`),null):(this.advance(),i.toString())}expectIdentifierOrKeywordOrString(){let i=this.next;return!i.isIdentifier()&&!i.isKeyword()&&!i.isString()?(i.isPrivateIdentifier()?this._reportErrorForPrivateIdentifier(i,"expected identifier, keyword or string"):this.error(`Unexpected ${this.prettyPrintToken(i)}, expected identifier, keyword, or string`),""):(this.advance(),i.toString())}parseChain(){let i=[],e=this.inputIndex;for(;this.index<this.tokens.length;){let n=this.parsePipe();if(i.push(n),this.consumeOptionalCharacter(ms))for(this.parseFlags&1||this.error("Binding expression cannot contain chained expression");this.consumeOptionalCharacter(ms););else if(this.index<this.tokens.length){let o=this.index;if(this.error(`Unexpected token '${this.next}'`),this.index===o)break}}if(i.length===0){let n=this.offset,o=this.offset+this.input.length;return new Da(this.span(n,o),this.sourceSpan(n,o))}return i.length==1?i[0]:new cf(this.span(e),this.sourceSpan(e),i)}parsePipe(){let i=this.inputIndex,e=this.parseExpression();if(this.consumeOptionalOperator("|")){this.parseFlags&1&&this.error("Cannot have a pipe in an action expression");do{let n=this.inputIndex,o=this.expectIdentifierOrKeyword(),r,a;o!==null?r=this.sourceSpan(n):(o="",a=this.next.index!==-1?this.next.index:this.input.length+this.offset,r=new wu(a,a).toAbsolute(this.absoluteOffset));let c=[];for(;this.consumeOptionalCharacter(Pc);)c.push(this.parseExpression());let m;if(this.supportsDirectPipeReferences){let p=o.charCodeAt(0);m=p===Gm||p>=Um&&p<=Mf?dx.ReferencedDirectly:dx.ReferencedByName}else m=dx.ReferencedByName;e=new Dx(this.span(i),this.sourceSpan(i,a),e,o,c,m,r)}while(this.consumeOptionalOperator("|"))}return e}parseExpression(){return this.parseConditional()}parseConditional(){let i=this.inputIndex,e=this.parseLogicalOr();if(this.consumeOptionalOperator("?")){let n=this.parsePipe(),o;if(this.consumeOptionalCharacter(Pc))o=this.parsePipe();else{let r=this.inputIndex,a=this.input.substring(i,r);this.error(`Conditional expression ${a} requires all 3 expressions`),o=new Da(this.span(i),this.sourceSpan(i))}return new Ex(this.span(i),this.sourceSpan(i),e,n,o)}else return e}parseLogicalOr(){let i=this.inputIndex,e=this.parseLogicalAnd();for(;this.consumeOptionalOperator("||");){let n=this.parseLogicalAnd();e=new Ha(this.span(i),this.sourceSpan(i),"||",e,n)}return e}parseLogicalAnd(){let i=this.inputIndex,e=this.parseNullishCoalescing();for(;this.consumeOptionalOperator("&&");){let n=this.parseNullishCoalescing();e=new Ha(this.span(i),this.sourceSpan(i),"&&",e,n)}return e}parseNullishCoalescing(){let i=this.inputIndex,e=this.parseEquality();for(;this.consumeOptionalOperator("??");){let n=this.parseEquality();e=new Ha(this.span(i),this.sourceSpan(i),"??",e,n)}return e}parseEquality(){let i=this.inputIndex,e=this.parseRelational();for(;this.next.type==_n.Operator;){let n=this.next.strValue;switch(n){case"==":case"===":case"!=":case"!==":this.advance();let o=this.parseRelational();e=new Ha(this.span(i),this.sourceSpan(i),n,e,o);continue}break}return e}parseRelational(){let i=this.inputIndex,e=this.parseAdditive();for(;this.next.type==_n.Operator||this.next.isKeywordIn()||this.next.isKeywordInstanceOf();){let n=this.next.strValue;switch(n){case"<":case">":case"<=":case">=":case"in":case"instanceof":this.advance();let o=this.parseAdditive();e=new Ha(this.span(i),this.sourceSpan(i),n,e,o);continue}break}return e}parseAdditive(){let i=this.inputIndex,e=this.parseMultiplicative();for(;this.next.type==_n.Operator;){let n=this.next.strValue;switch(n){case"+":case"-":this.advance();let o=this.parseMultiplicative();e=new Ha(this.span(i),this.sourceSpan(i),n,e,o);continue}break}return e}parseMultiplicative(){let i=this.inputIndex,e=this.parseExponentiation();for(;this.next.type==_n.Operator;){let n=this.next.strValue;switch(n){case"*":case"%":case"/":this.advance();let o=this.parseExponentiation();e=new Ha(this.span(i),this.sourceSpan(i),n,e,o);continue}break}return e}parseExponentiation(){let i=this.inputIndex,e=this.parsePrefix();for(;this.next.type==_n.Operator&&this.next.strValue==="**";){(e instanceof tf||e instanceof E0||e instanceof D0||e instanceof P0)&&this.error("Unary operator used immediately before exponentiation expression. Parenthesis must be used to disambiguate operator precedence"),this.advance();let n=this.parseExponentiation();e=new Ha(this.span(i),this.sourceSpan(i),"**",e,n)}return e}parsePrefix(){if(this.next.type==_n.Operator){let i=this.inputIndex,e=this.next.strValue,n;switch(e){case"+":return this.advance(),n=this.parsePrefix(),tf.createPlus(this.span(i),this.sourceSpan(i),n);case"-":return this.advance(),n=this.parsePrefix(),tf.createMinus(this.span(i),this.sourceSpan(i),n);case"!":return this.advance(),n=this.parsePrefix(),new E0(this.span(i),this.sourceSpan(i),n)}}else if(this.next.isKeywordTypeof()){let i=this.inputIndex;this.advance();let e=this.parsePrefix();return new D0(this.span(i),this.sourceSpan(i),e)}else if(this.next.isKeywordVoid()){let i=this.inputIndex;this.advance();let e=this.parsePrefix();return new P0(this.span(i),this.sourceSpan(i),e)}return this.parseCallChain()}parseCallChain(){let i=this.inputIndex,e=this.parsePrimary();for(;;)if(this.consumeOptionalCharacter(nu))e=this.parseAccessMember(e,i,!1);else if(this.consumeOptionalOperator("?."))this.consumeOptionalCharacter(qa)?e=this.parseCall(e,i,!0):e=this.consumeOptionalCharacter(Oc)?this.parseKeyedReadOrWrite(e,i,!0):this.parseAccessMember(e,i,!0);else if(this.consumeOptionalCharacter(Oc))e=this.parseKeyedReadOrWrite(e,i,!1);else if(this.consumeOptionalCharacter(qa))e=this.parseCall(e,i,!1);else if(this.consumeOptionalOperator("!"))e=new I0(this.span(i),this.sourceSpan(i),e);else if(this.next.isTemplateLiteralEnd())e=this.parseNoInterpolationTaggedTemplateLiteral(e,i);else if(this.next.isTemplateLiteralPart())e=this.parseTaggedTemplateLiteral(e,i);else return e}parsePrimary(){let i=this.inputIndex;if(this.isArrowFunction())return this.parseArrowFunction(i);if(this.consumeOptionalCharacter(qa)){this.rparensExpected++;let e=this.parsePipe();return this.consumeOptionalCharacter(Pr)||(this.error("Missing closing parentheses"),this.consumeOptionalCharacter(Pr)),this.rparensExpected--,new N0(this.span(i),this.sourceSpan(i),e)}else{if(this.next.isKeywordNull())return this.advance(),new ds(this.span(i),this.sourceSpan(i),null);if(this.next.isKeywordUndefined())return this.advance(),new ds(this.span(i),this.sourceSpan(i),void 0);if(this.next.isKeywordTrue())return this.advance(),new ds(this.span(i),this.sourceSpan(i),!0);if(this.next.isKeywordFalse())return this.advance(),new ds(this.span(i),this.sourceSpan(i),!1);if(this.next.isKeywordIn())return this.advance(),new ds(this.span(i),this.sourceSpan(i),"in");if(this.next.isKeywordThis())return this.advance(),new w0(this.span(i),this.sourceSpan(i));if(this.consumeOptionalCharacter(Oc))return this.parseLiteralArray(i);if(this.next.isCharacter(ml))return this.parseLiteralMap();if(this.next.isIdentifier())return this.parseAccessMember(new Bc(this.span(i),this.sourceSpan(i)),i,!1);if(this.next.isNumber()){let e=this.next.toNumber();return this.advance(),new ds(this.span(i),this.sourceSpan(i),e)}else{if(this.next.isTemplateLiteralEnd())return this.parseNoInterpolationTemplateLiteral();if(this.next.isTemplateLiteralPart())return this.parseTemplateLiteral();if(this.next.isString()&&this.next.kind===gu.Plain){let e=this.next.toString();return this.advance(),new ds(this.span(i),this.sourceSpan(i),e)}else return this.next.isPrivateIdentifier()?(this._reportErrorForPrivateIdentifier(this.next,null),new Da(this.span(i),this.sourceSpan(i))):this.next.isRegExpBody()?this.parseRegularExpressionLiteral():this.index>=this.tokens.length?(this.error(`Unexpected end of expression: ${this.input}`),new Da(this.span(i),this.sourceSpan(i))):(this.error(`Unexpected token ${this.next}`),new Da(this.span(i),this.sourceSpan(i)))}}}parseLiteralArray(i){this.rbracketsExpected++;let e=[];do if(this.next.isOperator("..."))e.push(this.parseSpreadElement());else if(!this.next.isCharacter(Ed))e.push(this.parsePipe());else break;while(this.consumeOptionalCharacter(Pa));return this.rbracketsExpected--,this.expectCharacter(Ed),new T0(this.span(i),this.sourceSpan(i),e)}parseLiteralMap(){let i=[],e=[],n=this.inputIndex;if(this.expectCharacter(ml),!this.consumeOptionalCharacter(Ga)){this.rbracesExpected++;do{let o=this.inputIndex;if(this.next.isOperator("...")){this.advance(),i.push({kind:"spread",span:this.span(o),sourceSpan:this.sourceSpan(o)}),e.push(this.parsePipe());continue}let r=this.next.isString(),a=this.expectIdentifierOrKeywordOrString(),c=this.span(o),m=this.sourceSpan(o),p={kind:"property",key:a,quoted:r,span:c,sourceSpan:m};i.push(p),r?(this.expectCharacter(Pc),e.push(this.parsePipe())):this.consumeOptionalCharacter(Pc)?e.push(this.parsePipe()):(p.isShorthandInitialized=!0,e.push(new Ac(c,m,m,new Bc(c,m),a)))}while(this.consumeOptionalCharacter(Pa)&&!this.next.isCharacter(Ga));this.rbracesExpected--,this.expectCharacter(Ga)}return new ku(this.span(n),this.sourceSpan(n),i,e)}parseAccessMember(i,e,n){let o=this.inputIndex,r=this.withContext(r0.Writable,()=>{let c=this.expectIdentifierOrKeyword()??"";return c.length===0&&this.error("Expected identifier for property access",i.span.end),c}),a=this.sourceSpan(o);if(n)return this.isAssignmentOperator(this.next)?(this.advance(),this.error("The '?.' operator cannot be used in the assignment"),new Da(this.span(e),this.sourceSpan(e))):new M0(this.span(e),this.sourceSpan(e),a,i,r);if(this.isAssignmentOperator(this.next)){let c=this.next.strValue;if(!(this.parseFlags&1))return this.advance(),this.error("Bindings cannot contain assignments"),new Da(this.span(e),this.sourceSpan(e));let m=new Ac(this.span(e),this.sourceSpan(e),a,i,r);this.advance();let p=this.parseConditional();return new Ha(this.span(e),this.sourceSpan(e),c,m,p)}else return new Ac(this.span(e),this.sourceSpan(e),a,i,r)}parseCall(i,e,n){let o=this.inputIndex;this.rparensExpected++;let r=this.parseCallArguments(),a=this.span(o,this.inputIndex).toAbsolute(this.absoluteOffset);this.expectCharacter(Pr),this.rparensExpected--;let c=this.span(e),m=this.sourceSpan(e);return n?new Ix(c,m,i,r,a):new df(c,m,i,r,a)}parseCallArguments(){if(this.next.isCharacter(Pr))return[];let i=[];do i.push(this.next.isOperator("...")?this.parseSpreadElement():this.parsePipe());while(this.consumeOptionalCharacter(Pa));return i}parseSpreadElement(){this.next.isOperator("...")||this.error("Spread element must start with '...' operator");let i=this.inputIndex;this.advance();let e=this.parsePipe(),n=this.span(i),o=this.sourceSpan(i);return new Px(n,o,e)}expectTemplateBindingKey(){let i="",e=!1,n=this.currentAbsoluteOffset;do i+=this.expectIdentifierOrKeywordOrString(),e=this.consumeOptionalOperator("-"),e&&(i+="-");while(e);return{source:i,span:new zs(n,n+i.length)}}parseTemplateBindings(i){let e=[];for(e.push(...this.parseDirectiveKeywordBindings(i));this.index<this.tokens.length;){let n=this.parseLetBinding();if(n)e.push(n);else{let o=this.expectTemplateBindingKey(),r=this.parseAsBinding(o);r?e.push(r):(o.source=i.source+o.source.charAt(0).toUpperCase()+o.source.substring(1),e.push(...this.parseDirectiveKeywordBindings(o)))}this.consumeStatementTerminator()}return new QD(e,[],this.errors)}parseKeyedReadOrWrite(i,e,n){return this.withContext(r0.Writable,()=>{this.rbracketsExpected++;let o=this.parsePipe();if(o instanceof Da&&this.error("Key access cannot be empty"),this.rbracketsExpected--,this.expectCharacter(Ed),this.isAssignmentOperator(this.next)){let r=this.next.strValue;if(n)this.advance(),this.error("The '?.' operator cannot be used in the assignment");else{let a=new Mu(this.span(e),this.sourceSpan(e),i,o);this.advance();let c=this.parseConditional();return new Ha(this.span(e),this.sourceSpan(e),r,a,c)}}else return n?new k0(this.span(e),this.sourceSpan(e),i,o):new Mu(this.span(e),this.sourceSpan(e),i,o);return new Da(this.span(e),this.sourceSpan(e))})}parseDirectiveKeywordBindings(i){let e=[];this.consumeOptionalCharacter(Pc);let n=this.getDirectiveBoundTarget(),o=this.currentAbsoluteOffset,r=this.parseAsBinding(i);r||(this.consumeStatementTerminator(),o=this.currentAbsoluteOffset);let a=new zs(i.span.start,o);return e.push(new lD(a,i,n)),r&&e.push(r),e}getDirectiveBoundTarget(){if(this.next===Y_||this.peekKeywordAs()||this.peekKeywordLet())return null;let i=this.parsePipe(),{start:e,end:n}=i.span,o=this.input.substring(e,n);return new ps(i,o,Em(this.parseSourceSpan),this.absoluteOffset+e,this.errors)}parseAsBinding(i){if(!this.peekKeywordAs())return null;this.advance();let e=this.expectTemplateBindingKey();this.consumeStatementTerminator();let n=new zs(i.span.start,this.currentAbsoluteOffset);return new R0(n,e,i)}parseLetBinding(){if(!this.peekKeywordLet())return null;let i=this.currentAbsoluteOffset;this.advance();let e=this.expectTemplateBindingKey(),n=null;this.consumeOptionalOperator("=")&&(n=this.expectTemplateBindingKey()),this.consumeStatementTerminator();let o=new zs(i,this.currentAbsoluteOffset);return new R0(o,e,n)}parseNoInterpolationTaggedTemplateLiteral(i,e){let n=this.parseNoInterpolationTemplateLiteral();return new A0(this.span(e),this.sourceSpan(e),i,n)}parseNoInterpolationTemplateLiteral(){let i=this.next.strValue,e=this.inputIndex;this.advance();let n=this.span(e),o=this.sourceSpan(e);return new O0(n,o,[new Ax(n,o,i)],[])}parseTaggedTemplateLiteral(i,e){let n=this.parseTemplateLiteral();return new A0(this.span(e),this.sourceSpan(e),i,n)}parseTemplateLiteral(){let i=[],e=[],n=this.inputIndex;for(;this.next!==Y_;){let o=this.next;if(o.isTemplateLiteralPart()||o.isTemplateLiteralEnd()){let r=this.inputIndex;if(this.advance(),i.push(new Ax(this.span(r),this.sourceSpan(r),o.strValue)),o.isTemplateLiteralEnd())break}else if(o.isTemplateLiteralInterpolationStart()){this.advance(),this.rbracesExpected++;let r=this.parsePipe();r instanceof Da?this.error("Template literal interpolation cannot be empty"):e.push(r),this.rbracesExpected--}else this.advance()}return new O0(this.span(n),this.sourceSpan(n),i,e)}parseRegularExpressionLiteral(){let i=this.next;if(this.advance(),!i.isRegExpBody())return new Da(this.span(this.inputIndex),this.sourceSpan(this.inputIndex));let e=null;if(this.next.isRegExpFlags()){e=this.next,this.advance();let r=new Set;for(let a=0;a<e.strValue.length;a++){let c=e.strValue[a];FF.has(c)?r.has(c)?this.error(`Duplicate regular expression flag "${c}"`,e.index+a):r.add(c):this.error(`Unsupported regular expression flag "${c}". The supported flags are: `+Array.from(FF,m=>`"${m}"`).join(", "),e.index+a)}}let n=i.index,o=e?e.end:i.end;return new Nx(this.span(n,o),this.sourceSpan(n,o),i.strValue,e?e.strValue:null)}parseArrowFunction(i){let e;if(this.next.isIdentifier()){let o=this.next;this.advance(),e=[this.getArrowFunctionIdentifierArg(o)]}else this.next.isCharacter(qa)?(this.rparensExpected++,this.advance(),e=this.parseArrowFunctionParameters(),this.rparensExpected--):(e=[],this.error(`Unexpected token ${this.next}`));this.expectOperator("=>");let n;if(this.next.isCharacter(ml))this.error("Multi-line arrow functions are not supported. If you meant to return an object literal, wrap it with parentheses."),n=new Da(this.span(i),this.sourceSpan(i));else{let o=this.parseFlags;this.parseFlags=1,n=this.parseExpression(),this.parseFlags=o}return new Ox(this.span(i),this.sourceSpan(i),e,n)}parseArrowFunctionParameters(){let i=[];if(!this.consumeOptionalCharacter(Pr))for(;this.next!==Y_;)if(this.next.isIdentifier()){let e=this.next;if(this.advance(),i.push(this.getArrowFunctionIdentifierArg(e)),this.consumeOptionalCharacter(Pr))break;this.expectCharacter(Pa)}else{this.error(`Unexpected token ${this.next}`);break}return i}getArrowFunctionIdentifierArg(i){return new sD(i.strValue,this.span(i.index),this.sourceSpan(i.index))}isArrowFunction(){let i=this.index,e=this.tokens;if(i>e.length-2)return!1;if(e[i].isIdentifier()&&e[i+1].isOperator("=>"))return!0;if(e[i].isCharacter(qa)){let n=i+1;for(n;n<e.length&&!(!e[n].isIdentifier()&&!e[n].isCharacter(Pa));n++);return n<e.length-1&&e[n].isCharacter(Pr)&&e[n+1].isOperator("=>")}return!1}consumeStatementTerminator(){this.consumeOptionalCharacter(ms)||this.consumeOptionalCharacter(Pa)}error(i,e=this.index){this.errors.push(Jh(i,this.input,this.getErrorLocationText(e),this.parseSourceSpan)),this.skip()}getErrorLocationText(i){return i<this.tokens.length?`at column ${this.tokens[i].index+1} in`:"at the end of the expression"}_reportErrorForPrivateIdentifier(i,e){let n=`Private identifiers are not supported. Unexpected private identifier: ${i}`;e!==null&&(n+=`, ${e}`),this.error(n)}skip(){let i=this.next;for(;this.index<this.tokens.length&&!i.isCharacter(ms)&&!i.isOperator("|")&&(this.rparensExpected<=0||!i.isCharacter(Pr))&&(this.rbracesExpected<=0||!i.isCharacter(Ga))&&(this.rbracketsExpected<=0||!i.isCharacter(Ed))&&(!(this.context&r0.Writable)||!this.isAssignmentOperator(i));)this.next.isError()&&this.errors.push(Jh(this.next.toString(),this.input,this.getErrorLocationText(this.next.index),this.parseSourceSpan)),this.advance(),i=this.next}};function Jh(t,i,e,n){e.length>0&&(e=` ${e} `);let o=Em(n),r=`Parser Error: ${t}${e}[${i}] in ${o}`;return new mn(n,r)}var YD=class extends mf{errors=[];visitPipe(){this.errors.push("pipes")}};function gY(t){let i=new Map,e=0,n=0,o=0;for(;o<t.length;){let r=t[o];if(r.type===9){let[a,c]=r.parts;e+=c.length,n+=a.length}else{let a=r.parts.reduce((c,m)=>c+m.length,0);n+=a,e+=a}i.set(n,e),o++}return i}function _Y(t){return t.visit(new KD)}var KD=class{visitUnary(i,e){return`${i.operator}${i.expr.visit(this,e)}`}visitBinary(i,e){return`${i.left.visit(this,e)} ${i.operation} ${i.right.visit(this,e)}`}visitChain(i,e){return i.expressions.map(n=>n.visit(this,e)).join("; ")}visitConditional(i,e){return`${i.condition.visit(this,e)} ? ${i.trueExp.visit(this,e)} : ${i.falseExp.visit(this,e)}`}visitThisReceiver(){return"this"}visitImplicitReceiver(){return""}visitInterpolation(i,e){return bY(i.strings,i.expressions.map(n=>n.visit(this,e))).join("")}visitKeyedRead(i,e){return`${i.receiver.visit(this,e)}[${i.key.visit(this,e)}]`}visitLiteralArray(i,e){return`[${i.expressions.map(n=>n.visit(this,e)).join(", ")}]`}visitLiteralMap(i,e){return`{${vY(i.keys.map(n=>n.kind==="spread"?"...":n.quoted?`'${n.key}'`:n.key),i.values.map(n=>n.visit(this,e))).map(([n,o])=>`${n}: ${o}`).join(", ")}}`}visitLiteralPrimitive(i){if(i.value===null)return"null";switch(typeof i.value){case"number":case"boolean":return i.value.toString();case"undefined":return"undefined";case"string":return`'${i.value.replace(/'/g,"\\'")}'`;default:throw new Error(`Unsupported primitive type: ${i.value}`)}}visitPipe(i,e){return`${i.exp.visit(this,e)} | ${i.name}`}visitPrefixNot(i,e){return`!${i.expression.visit(this,e)}`}visitNonNullAssert(i,e){return`${i.expression.visit(this,e)}!`}visitPropertyRead(i,e){return i.receiver instanceof Bc||i.receiver instanceof w0?i.name:`${i.receiver.visit(this,e)}.${i.name}`}visitSafePropertyRead(i,e){return`${i.receiver.visit(this,e)}?.${i.name}`}visitSafeKeyedRead(i,e){return`${i.receiver.visit(this,e)}?.[${i.key.visit(this,e)}]`}visitCall(i,e){return`${i.receiver.visit(this,e)}(${i.args.map(n=>n.visit(this,e)).join(", ")})`}visitSafeCall(i,e){return`${i.receiver.visit(this,e)}?.(${i.args.map(n=>n.visit(this,e)).join(", ")})`}visitTypeofExpression(i,e){return`typeof ${i.expression.visit(this,e)}`}visitVoidExpression(i,e){return`void ${i.expression.visit(this,e)}`}visitRegularExpressionLiteral(i,e){return`/${i.body}/${i.flags||""}`}visitArrowFunction(i,e){let n;return i.parameters.length===1?n=i.parameters[0].name:n=`(${i.parameters.map(o=>o.name).join(", ")})`,`${n} => ${i.body.visit(this,e)}`}visitASTWithSource(i,e){return i.ast.visit(this,e)}visitTemplateLiteral(i,e){let n="";for(let o=0;o<i.elements.length;o++){n+=i.elements[o].visit(this,e);let r=o<i.expressions.length?i.expressions[o]:null;r!==null&&(n+="${"+r.visit(this,e)+"}")}return"`"+n+"`"}visitTemplateLiteralElement(i,e){return i.text}visitTaggedTemplateLiteral(i,e){return i.tag.visit(this,e)+i.template.visit(this,e)}visitSpreadElement(i,e){return`...${i.expression.visit(this,e)}`}visitParenthesizedExpression(i,e){return"("+i.expression.visit(this,e)+")"}};function vY(t,i){if(t.length!==i.length)throw new Error("Array lengths must match");return t.map((e,n)=>[e,i[n]])}function bY(t,i){let e=[];for(let n=0;n<Math.max(t.length,i.length);n++)n<t.length&&e.push(t[n]),n<i.length&&e.push(i[n]);return e}var px;function LF(){return px||(px={},K_(uo.HTML,["iframe|srcdoc","*|innerHTML","*|outerHTML"]),K_(uo.STYLE,["*|style"]),K_(uo.URL,["*|formAction","area|href","a|href","a|xlink:href","form|action","annotation|href","annotation|xlink:href","annotation-xml|href","annotation-xml|xlink:href","maction|href","maction|xlink:href","malignmark|href","malignmark|xlink:href","math|href","math|xlink:href","mroot|href","mroot|xlink:href","msqrt|href","msqrt|xlink:href","merror|href","merror|xlink:href","mfrac|href","mfrac|xlink:href","mglyph|href","mglyph|xlink:href","msub|href","msub|xlink:href","msup|href","msup|xlink:href","msubsup|href","msubsup|xlink:href","mmultiscripts|href","mmultiscripts|xlink:href","mprescripts|href","mprescripts|xlink:href","mi|href","mi|xlink:href","mn|href","mn|xlink:href","mo|href","mo|xlink:href","mpadded|href","mpadded|xlink:href","mphantom|href","mphantom|xlink:href","mrow|href","mrow|xlink:href","ms|href","ms|xlink:href","mspace|href","mspace|xlink:href","mstyle|href","mstyle|xlink:href","mtable|href","mtable|xlink:href","mtd|href","mtd|xlink:href","mtr|href","mtr|xlink:href","mtext|href","mtext|xlink:href","mover|href","mover|xlink:href","munder|href","munder|xlink:href","munderover|href","munderover|xlink:href","semantics|href","semantics|xlink:href","none|href","none|xlink:href","img|src","video|src"]),K_(uo.RESOURCE_URL,["base|href","embed|src","frame|src","iframe|src","link|href","object|codebase","object|data","script|src","script|href","script|xlink:href"]),K_(uo.ATTRIBUTE_NO_BINDING,["animate|attributeName","set|attributeName","animateMotion|attributeName","animateTransform|attributeName","unknown|attributeName","iframe|sandbox","iframe|allow","iframe|allowFullscreen","iframe|referrerPolicy","iframe|csp","iframe|fetchPriority","unknown|sandbox","unknown|allow","unknown|allowFullscreen","unknown|referrerPolicy","unknown|csp","unknown|fetchPriority"])),px}function K_(t,i){for(let e of i)px[e.toLowerCase()]=t}var ZD=class{},CY="boolean",xY="number",yY="string",SY="object",wY=["[Element]|textContent,%ariaActiveDescendantElement,%ariaAtomic,%ariaAutoComplete,%ariaBusy,%ariaChecked,%ariaColCount,%ariaColIndex,%ariaColIndexText,%ariaColSpan,%ariaControlsElements,%ariaCurrent,%ariaDescribedByElements,%ariaDescription,%ariaDetailsElements,%ariaDisabled,%ariaErrorMessageElements,%ariaExpanded,%ariaFlowToElements,%ariaHasPopup,%ariaHidden,%ariaInvalid,%ariaKeyShortcuts,%ariaLabel,%ariaLabelledByElements,%ariaLevel,%ariaLive,%ariaModal,%ariaMultiLine,%ariaMultiSelectable,%ariaOrientation,%ariaOwnsElements,%ariaPlaceholder,%ariaPosInSet,%ariaPressed,%ariaReadOnly,%ariaRelevant,%ariaRequired,%ariaRoleDescription,%ariaRowCount,%ariaRowIndex,%ariaRowIndexText,%ariaRowSpan,%ariaSelected,%ariaSetSize,%ariaSort,%ariaValueMax,%ariaValueMin,%ariaValueNow,%ariaValueText,%classList,className,elementTiming,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*fullscreenchange,*fullscreenerror,*search,*webkitfullscreenchange,*webkitfullscreenerror,outerHTML,%part,#scrollLeft,#scrollTop,slot,*message,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored","[HTMLElement]^[Element]|accessKey,autocapitalize,!autofocus,contentEditable,dir,!draggable,enterKeyHint,!hidden,!inert,innerText,inputMode,lang,nonce,*abort,*animationend,*animationiteration,*animationstart,*auxclick,*beforexrselect,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*formdata,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*paste,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerrawupdate,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*securitypolicyviolation,*seeked,*seeking,*select,*selectionchange,*selectstart,*slotchange,*stalled,*submit,*suspend,*timeupdate,*toggle,*transitioncancel,*transitionend,*transitionrun,*transitionstart,*volumechange,*waiting,*webkitanimationend,*webkitanimationiteration,*webkitanimationstart,*webkittransitionend,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate,virtualKeyboardPolicy","abbr,address,article,aside,b,bdi,bdo,cite,content,code,dd,dfn,dt,em,figcaption,figure,footer,header,hgroup,i,kbd,main,mark,nav,noscript,rb,rp,rt,rtc,ruby,s,samp,search,section,small,strong,sub,sup,u,var,wbr^[HTMLElement]|accessKey,autocapitalize,!autofocus,contentEditable,dir,!draggable,enterKeyHint,!hidden,innerText,inputMode,lang,nonce,*abort,*animationend,*animationiteration,*animationstart,*auxclick,*beforexrselect,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*formdata,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*paste,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerrawupdate,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*securitypolicyviolation,*seeked,*seeking,*select,*selectionchange,*selectstart,*slotchange,*stalled,*submit,*suspend,*timeupdate,*toggle,*transitioncancel,*transitionend,*transitionrun,*transitionstart,*volumechange,*waiting,*webkitanimationend,*webkitanimationiteration,*webkitanimationstart,*webkittransitionend,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate,virtualKeyboardPolicy","media^[HTMLElement]|!autoplay,!controls,%controlsList,%crossOrigin,#currentTime,!defaultMuted,#defaultPlaybackRate,!disableRemotePlayback,!loop,!muted,*encrypted,*waitingforkey,#playbackRate,preload,!preservesPitch,src,%srcObject,#volume",":svg:^[HTMLElement]|!autofocus,nonce,*abort,*animationend,*animationiteration,*animationstart,*auxclick,*beforexrselect,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*formdata,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*paste,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerrawupdate,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*securitypolicyviolation,*seeked,*seeking,*select,*selectionchange,*selectstart,*slotchange,*stalled,*submit,*suspend,*timeupdate,*toggle,*transitioncancel,*transitionend,*transitionrun,*transitionstart,*volumechange,*waiting,*webkitanimationend,*webkitanimationiteration,*webkitanimationstart,*webkittransitionend,*wheel,%style,#tabIndex",":svg:graphics^:svg:|",":svg:animation^:svg:|*begin,*end,*repeat",":svg:geometry^:svg:|",":svg:componentTransferFunction^:svg:|",":svg:gradient^:svg:|",":svg:textContent^:svg:graphics|",":svg:textPositioning^:svg:textContent|","a^[HTMLElement]|charset,coords,download,hash,host,hostname,href,hreflang,name,password,pathname,ping,port,protocol,referrerPolicy,rel,%relList,rev,search,shape,target,text,type,username","area^[HTMLElement]|alt,coords,download,hash,host,hostname,href,!noHref,password,pathname,ping,port,protocol,referrerPolicy,rel,%relList,search,shape,target,username","audio^media|","br^[HTMLElement]|clear","base^[HTMLElement]|href,target","body^[HTMLElement]|aLink,background,bgColor,link,*afterprint,*beforeprint,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*messageerror,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,text,vLink","button^[HTMLElement]|!disabled,formAction,formEnctype,formMethod,!formNoValidate,formTarget,name,type,value","canvas^[HTMLElement]|#height,#width","content^[HTMLElement]|select","dl^[HTMLElement]|!compact","data^[HTMLElement]|value","datalist^[HTMLElement]|","details^[HTMLElement]|!open","dialog^[HTMLElement]|!open,returnValue","dir^[HTMLElement]|!compact","div^[HTMLElement]|align","embed^[HTMLElement]|align,height,name,src,type,width","fieldset^[HTMLElement]|!disabled,name","font^[HTMLElement]|color,face,size","form^[HTMLElement]|acceptCharset,action,autocomplete,encoding,enctype,method,name,!noValidate,target","frame^[HTMLElement]|frameBorder,longDesc,marginHeight,marginWidth,name,!noResize,scrolling,src","frameset^[HTMLElement]|cols,*afterprint,*beforeprint,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*messageerror,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,rows","geolocation^[HTMLElement]|accuracymode,!autolocate,*location,*promptaction,*promptdismiss,*validationstatuschange,!watch","hr^[HTMLElement]|align,color,!noShade,size,width","head^[HTMLElement]|","h1,h2,h3,h4,h5,h6^[HTMLElement]|align","html^[HTMLElement]|version","iframe^[HTMLElement]|align,allow,!allowFullscreen,!allowPaymentRequest,csp,frameBorder,height,loading,longDesc,marginHeight,marginWidth,name,referrerPolicy,%sandbox,scrolling,src,srcdoc,width","img^[HTMLElement]|align,alt,border,%crossOrigin,decoding,#height,#hspace,!isMap,loading,longDesc,lowsrc,name,referrerPolicy,sizes,src,srcset,useMap,#vspace,#width","input^[HTMLElement]|accept,align,alt,autocomplete,!checked,!defaultChecked,defaultValue,dirName,!disabled,%files,formAction,formEnctype,formMethod,!formNoValidate,formTarget,#height,!incremental,!indeterminate,max,#maxLength,min,#minLength,!multiple,name,pattern,placeholder,!readOnly,!required,selectionDirection,#selectionEnd,#selectionStart,#size,src,step,type,useMap,value,%valueAsDate,#valueAsNumber,#width","li^[HTMLElement]|type,#value","label^[HTMLElement]|htmlFor","legend^[HTMLElement]|align","link^[HTMLElement]|as,charset,%crossOrigin,!disabled,href,hreflang,imageSizes,imageSrcset,integrity,media,referrerPolicy,rel,%relList,rev,%sizes,target,type","map^[HTMLElement]|name","marquee^[HTMLElement]|behavior,bgColor,direction,height,#hspace,#loop,#scrollAmount,#scrollDelay,!trueSpeed,#vspace,width","menu^[HTMLElement]|!compact","meta^[HTMLElement]|content,httpEquiv,media,name,scheme","meter^[HTMLElement]|#high,#low,#max,#min,#optimum,#value","ins,del^[HTMLElement]|cite,dateTime","ol^[HTMLElement]|!compact,!reversed,#start,type","object^[HTMLElement]|align,archive,border,code,codeBase,codeType,data,!declare,height,#hspace,name,standby,type,useMap,#vspace,width","optgroup^[HTMLElement]|!disabled,label","option^[HTMLElement]|!defaultSelected,!disabled,label,!selected,text,value","output^[HTMLElement]|defaultValue,%htmlFor,name,value","p^[HTMLElement]|align","param^[HTMLElement]|name,type,value,valueType","picture^[HTMLElement]|","pre^[HTMLElement]|#width","progress^[HTMLElement]|#max,#value","q,blockquote,cite^[HTMLElement]|","script^[HTMLElement]|!async,charset,%crossOrigin,!defer,event,htmlFor,integrity,!noModule,%referrerPolicy,src,text,type","select^[HTMLElement]|autocomplete,!disabled,#length,!multiple,name,!required,#selectedIndex,#size,value","selectedcontent^[HTMLElement]|","slot^[HTMLElement]|name","source^[HTMLElement]|#height,media,sizes,src,srcset,type,#width","span^[HTMLElement]|","style^[HTMLElement]|!disabled,media,type","search^[HTMLELement]|","caption^[HTMLElement]|align","th,td^[HTMLElement]|abbr,align,axis,bgColor,ch,chOff,#colSpan,headers,height,!noWrap,#rowSpan,scope,vAlign,width","col,colgroup^[HTMLElement]|align,ch,chOff,#span,vAlign,width","table^[HTMLElement]|align,bgColor,border,%caption,cellPadding,cellSpacing,frame,rules,summary,%tFoot,%tHead,width","tr^[HTMLElement]|align,bgColor,ch,chOff,vAlign","tfoot,thead,tbody^[HTMLElement]|align,ch,chOff,vAlign","template^[HTMLElement]|","textarea^[HTMLElement]|autocomplete,#cols,defaultValue,dirName,!disabled,#maxLength,#minLength,name,placeholder,!readOnly,!required,#rows,selectionDirection,#selectionEnd,#selectionStart,value,wrap","time^[HTMLElement]|dateTime","title^[HTMLElement]|text","track^[HTMLElement]|!default,kind,label,src,srclang","ul^[HTMLElement]|!compact,type","unknown^[HTMLElement]|","video^media|!disablePictureInPicture,#height,*enterpictureinpicture,*leavepictureinpicture,!playsInline,poster,#width",":svg:a^:svg:graphics|",":svg:animate^:svg:animation|",":svg:animateMotion^:svg:animation|",":svg:animateTransform^:svg:animation|",":svg:circle^:svg:geometry|",":svg:clipPath^:svg:graphics|",":svg:defs^:svg:graphics|",":svg:desc^:svg:|",":svg:discard^:svg:|",":svg:ellipse^:svg:geometry|",":svg:feBlend^:svg:|",":svg:feColorMatrix^:svg:|",":svg:feComponentTransfer^:svg:|",":svg:feComposite^:svg:|",":svg:feConvolveMatrix^:svg:|",":svg:feDiffuseLighting^:svg:|",":svg:feDisplacementMap^:svg:|",":svg:feDistantLight^:svg:|",":svg:feDropShadow^:svg:|",":svg:feFlood^:svg:|",":svg:feFuncA^:svg:componentTransferFunction|",":svg:feFuncB^:svg:componentTransferFunction|",":svg:feFuncG^:svg:componentTransferFunction|",":svg:feFuncR^:svg:componentTransferFunction|",":svg:feGaussianBlur^:svg:|",":svg:feImage^:svg:|",":svg:feMerge^:svg:|",":svg:feMergeNode^:svg:|",":svg:feMorphology^:svg:|",":svg:feOffset^:svg:|",":svg:fePointLight^:svg:|",":svg:feSpecularLighting^:svg:|",":svg:feSpotLight^:svg:|",":svg:feTile^:svg:|",":svg:feTurbulence^:svg:|",":svg:filter^:svg:|",":svg:foreignObject^:svg:graphics|",":svg:g^:svg:graphics|",":svg:image^:svg:graphics|decoding",":svg:line^:svg:geometry|",":svg:linearGradient^:svg:gradient|",":svg:mpath^:svg:|",":svg:marker^:svg:|",":svg:mask^:svg:|",":svg:metadata^:svg:|",":svg:path^:svg:geometry|",":svg:pattern^:svg:|",":svg:polygon^:svg:geometry|",":svg:polyline^:svg:geometry|",":svg:radialGradient^:svg:gradient|",":svg:rect^:svg:geometry|",":svg:svg^:svg:graphics|#currentScale,#zoomAndPan",":svg:script^:svg:|type",":svg:set^:svg:animation|",":svg:stop^:svg:|",":svg:style^:svg:|!disabled,media,title,type",":svg:switch^:svg:graphics|",":svg:symbol^:svg:|",":svg:tspan^:svg:textPositioning|",":svg:text^:svg:textPositioning|",":svg:textPath^:svg:textContent|",":svg:title^:svg:|",":svg:use^:svg:graphics|",":svg:view^:svg:|#zoomAndPan","data^[HTMLElement]|value","keygen^[HTMLElement]|!autofocus,challenge,!disabled,form,keytype,name","menuitem^[HTMLElement]|type,label,icon,!disabled,!checked,radiogroup,!default","summary^[HTMLElement]|","time^[HTMLElement]|dateTime",":svg:cursor^:svg:|",":math:^[HTMLElement]|!autofocus,nonce,*abort,*animationend,*animationiteration,*animationstart,*auxclick,*beforeinput,*beforematch,*beforetoggle,*beforexrselect,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contentvisibilityautostatechange,*contextlost,*contextmenu,*contextrestored,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*formdata,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*paste,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerrawupdate,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*scrollend,*securitypolicyviolation,*seeked,*seeking,*select,*selectionchange,*selectstart,*slotchange,*stalled,*submit,*suspend,*timeupdate,*toggle,*transitioncancel,*transitionend,*transitionrun,*transitionstart,*volumechange,*waiting,*webkitanimationend,*webkitanimationiteration,*webkitanimationstart,*webkittransitionend,*wheel,%style,#tabIndex",":math:math^:math:|",":math:maction^:math:|",":math:menclose^:math:|",":math:merror^:math:|",":math:mfenced^:math:|",":math:mfrac^:math:|",":math:mi^:math:|",":math:mmultiscripts^:math:|",":math:mn^:math:|",":math:mo^:math:|",":math:mover^:math:|",":math:mpadded^:math:|",":math:mphantom^:math:|",":math:mroot^:math:|",":math:mrow^:math:|",":math:ms^:math:|",":math:mspace^:math:|",":math:msqrt^:math:|",":math:mstyle^:math:|",":math:msub^:math:|",":math:msubsup^:math:|",":math:msup^:math:|",":math:mtable^:math:|",":math:mtd^:math:|",":math:mtext^:math:|",":math:mtr^:math:|",":math:munder^:math:|",":math:munderover^:math:|",":math:semantics^:math:|"],EL=new Map(Object.entries({class:"className",for:"htmlFor",formaction:"formAction",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex","aria-activedescendant":"ariaActiveDescendantElement","aria-atomic":"ariaAtomic","aria-autocomplete":"ariaAutoComplete","aria-busy":"ariaBusy","aria-checked":"ariaChecked","aria-colcount":"ariaColCount","aria-colindex":"ariaColIndex","aria-colindextext":"ariaColIndexText","aria-colspan":"ariaColSpan","aria-controls":"ariaControlsElements","aria-current":"ariaCurrent","aria-describedby":"ariaDescribedByElements","aria-description":"ariaDescription","aria-details":"ariaDetailsElements","aria-disabled":"ariaDisabled","aria-errormessage":"ariaErrorMessageElements","aria-expanded":"ariaExpanded","aria-flowto":"ariaFlowToElements","aria-haspopup":"ariaHasPopup","aria-hidden":"ariaHidden","aria-invalid":"ariaInvalid","aria-keyshortcuts":"ariaKeyShortcuts","aria-label":"ariaLabel","aria-labelledby":"ariaLabelledByElements","aria-level":"ariaLevel","aria-live":"ariaLive","aria-modal":"ariaModal","aria-multiline":"ariaMultiLine","aria-multiselectable":"ariaMultiSelectable","aria-orientation":"ariaOrientation","aria-owns":"ariaOwnsElements","aria-placeholder":"ariaPlaceholder","aria-posinset":"ariaPosInSet","aria-pressed":"ariaPressed","aria-readonly":"ariaReadOnly","aria-required":"ariaRequired","aria-roledescription":"ariaRoleDescription","aria-rowcount":"ariaRowCount","aria-rowindex":"ariaRowIndex","aria-rowindextext":"ariaRowIndexText","aria-rowspan":"ariaRowSpan","aria-selected":"ariaSelected","aria-setsize":"ariaSetSize","aria-sort":"ariaSort","aria-valuemax":"ariaValueMax","aria-valuemin":"ariaValueMin","aria-valuenow":"ariaValueNow","aria-valuetext":"ariaValueText"})),MY=Array.from(EL).reduce((t,[i,e])=>(t.set(i,e),t),new Map),yf=class extends ZD{_schema=new Map;_eventSchema=new Map;constructor(){super(),wY.forEach(i=>{let e=new Map,n=new Set,[o,r]=i.split("|"),a=r.split(","),[c,m]=o.split("^");c.split(",").forEach(h=>{this._schema.set(h.toLowerCase(),e),this._eventSchema.set(h.toLowerCase(),n)});let p=m&&this._schema.get(m.toLowerCase());if(p){for(let[h,g]of p)e.set(h,g);for(let h of this._eventSchema.get(m.toLowerCase()))n.add(h)}a.forEach(h=>{if(h.length>0)switch(h[0]){case"*":n.add(h.substring(1));break;case"!":e.set(h.substring(1),CY);break;case"#":e.set(h.substring(1),xY);break;case"%":e.set(h.substring(1),SY);break;default:e.set(h,yY)}})})}hasProperty(i,e,n){if(n.some(r=>r.name===LR.name))return!0;if(i.indexOf("-")>-1){if(QR(i)||dD(i))return!1;if(n.some(r=>r.name===FR.name))return!0}return(this._schema.get(i.toLowerCase())||this._schema.get("unknown")).has(e)}hasElement(i,e){return e.some(n=>n.name===LR.name)||i.indexOf("-")>-1&&(QR(i)||dD(i)||e.some(n=>n.name===FR.name))?!0:this._schema.has(i.toLowerCase())}securityContext(i,e,n){n&&(e=this.getMappedPropName(e)),i=i.toLowerCase(),e=e.toLowerCase();let o=LF()[i+"|"+e];return o||(o=LF()["*|"+e],o||uo.NONE)}getMappedPropName(i){return EL.get(i)??i}getDefaultComponentElementName(){return"ng-component"}validateProperty(i){return i.toLowerCase().startsWith("on")?{error:!0,msg:`Binding to event property '${i}' is disallowed for security reasons, please use (${i.slice(2)})=...
|
||
If '${i}' is a directive input, make sure the directive is imported by the current module.`}:{error:!1}}validateAttribute(i){return i.toLowerCase().startsWith("on")?{error:!0,msg:`Binding to event attribute '${i}' is disallowed for security reasons, please use (${i.slice(2)})=...`}:{error:!1}}allKnownElementNames(){return Array.from(this._schema.keys())}allKnownAttributesOfElement(i){let e=this._schema.get(i.toLowerCase())||this._schema.get("unknown");return Array.from(e.keys()).map(n=>MY.get(n)??n)}allKnownEventsOfElement(i){return Array.from(this._eventSchema.get(i.toLowerCase())??[])}normalizeAnimationStyleProperty(i){return xW(i)}normalizeAnimationStyleValue(i,e,n){let o="",r=n.toString().trim(),a=null;if(kY(i)&&n!==0&&n!=="0")if(typeof n=="number")o="px";else{let c=n.match(/^[+-]?[\d\.]+([a-z]*)$/);c&&c[1].length==0&&(a=`Please provide a CSS unit value for ${e}:${n}`)}return{error:a,value:r+o}}};function kY(t){switch(t){case"width":case"height":case"minWidth":case"minHeight":case"maxWidth":case"maxHeight":case"left":case"top":case"bottom":case"right":case"fontSize":case"outlineWidth":case"outlineOffset":case"paddingTop":case"paddingLeft":case"paddingBottom":case"paddingRight":case"marginTop":case"marginLeft":case"marginBottom":case"marginRight":case"borderRadius":case"borderWidth":case"borderTopWidth":case"borderLeftWidth":case"borderRightWidth":case"borderBottomWidth":case"textIndent":return!0;default:return!1}}var ai=class{closedByChildren={};contentType;closedByParent=!1;implicitNamespacePrefix;isVoid;ignoreFirstLf;canSelfClose;preventNamespaceInheritance;constructor({closedByChildren:i,implicitNamespacePrefix:e,contentType:n=Dc.PARSABLE_DATA,closedByParent:o=!1,isVoid:r=!1,ignoreFirstLf:a=!1,preventNamespaceInheritance:c=!1,canSelfClose:m=!1}={}){i&&i.length>0&&i.forEach(p=>this.closedByChildren[p]=!0),this.isVoid=r,this.closedByParent=o||r,this.implicitNamespacePrefix=e||null,this.contentType=n,this.ignoreFirstLf=a,this.preventNamespaceInheritance=c,this.canSelfClose=m??r}isClosedByChild(i){return this.isVoid||i.toLowerCase()in this.closedByChildren}getContentType(i){return typeof this.contentType=="object"?(i===void 0?void 0:this.contentType[i])??this.contentType.default:this.contentType}},BF,Gh;function JD(t){return Gh||(BF=new ai({canSelfClose:!0}),Gh=Object.assign(Object.create(null),{base:new ai({isVoid:!0}),meta:new ai({isVoid:!0}),area:new ai({isVoid:!0}),embed:new ai({isVoid:!0}),link:new ai({isVoid:!0}),img:new ai({isVoid:!0}),input:new ai({isVoid:!0}),param:new ai({isVoid:!0}),hr:new ai({isVoid:!0}),br:new ai({isVoid:!0}),source:new ai({isVoid:!0}),track:new ai({isVoid:!0}),wbr:new ai({isVoid:!0}),p:new ai({closedByChildren:["address","article","aside","blockquote","div","dl","fieldset","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","nav","ol","p","pre","section","table","ul"],closedByParent:!0}),thead:new ai({closedByChildren:["tbody","tfoot"]}),tbody:new ai({closedByChildren:["tbody","tfoot"],closedByParent:!0}),tfoot:new ai({closedByChildren:["tbody"],closedByParent:!0}),tr:new ai({closedByChildren:["tr"],closedByParent:!0}),td:new ai({closedByChildren:["td","th"],closedByParent:!0}),th:new ai({closedByChildren:["td","th"],closedByParent:!0}),col:new ai({isVoid:!0}),svg:new ai({implicitNamespacePrefix:"svg"}),foreignObject:new ai({implicitNamespacePrefix:"svg",preventNamespaceInheritance:!0}),math:new ai({implicitNamespacePrefix:"math"}),li:new ai({closedByChildren:["li"],closedByParent:!0}),dt:new ai({closedByChildren:["dt","dd"]}),dd:new ai({closedByChildren:["dt","dd"],closedByParent:!0}),rb:new ai({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rt:new ai({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rtc:new ai({closedByChildren:["rb","rtc","rp"],closedByParent:!0}),rp:new ai({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),optgroup:new ai({closedByChildren:["optgroup"],closedByParent:!0}),option:new ai({closedByChildren:["option","optgroup"],closedByParent:!0}),pre:new ai({ignoreFirstLf:!0}),listing:new ai({ignoreFirstLf:!0}),style:new ai({contentType:Dc.RAW_TEXT}),script:new ai({contentType:Dc.RAW_TEXT}),title:new ai({contentType:{default:Dc.ESCAPABLE_RAW_TEXT,svg:Dc.PARSABLE_DATA}}),textarea:new ai({contentType:Dc.ESCAPABLE_RAW_TEXT,ignoreFirstLf:!0})}),new yf().allKnownElementNames().forEach(i=>{!Gh[i]&&mD(i)===null&&(Gh[i]=new ai({canSelfClose:!1}))})),Gh[t]??Gh[t.toLowerCase()]??BF}var VF={A:"LINK",B:"BOLD_TEXT",BR:"LINE_BREAK",EM:"EMPHASISED_TEXT",H1:"HEADING_LEVEL1",H2:"HEADING_LEVEL2",H3:"HEADING_LEVEL3",H4:"HEADING_LEVEL4",H5:"HEADING_LEVEL5",H6:"HEADING_LEVEL6",HR:"HORIZONTAL_RULE",I:"ITALIC_TEXT",LI:"LIST_ITEM",LINK:"MEDIA_LINK",OL:"ORDERED_LIST",P:"PARAGRAPH",Q:"QUOTATION",S:"STRIKETHROUGH_TEXT",SMALL:"SMALL_TEXT",SUB:"SUBSTRIPT",SUP:"SUPERSCRIPT",TBODY:"TABLE_BODY",TD:"TABLE_CELL",TFOOT:"TABLE_FOOTER",TH:"TABLE_HEADER_CELL",THEAD:"TABLE_HEADER",TR:"TABLE_ROW",TT:"MONOSPACED_TEXT",U:"UNDERLINED_TEXT",UL:"UNORDERED_LIST"},eP=class{_placeHolderNameCounts={};_signatureToName={};getStartTagPlaceholderName(i,e,n){let o=this._hashTag(i,e,n);if(this._signatureToName[o])return this._signatureToName[o];let r=i.toUpperCase(),a=VF[r]||`TAG_${r}`,c=this._generateUniqueName(n?a:`START_${a}`);return this._signatureToName[o]=c,c}getCloseTagPlaceholderName(i){let e=this._hashClosingTag(i);if(this._signatureToName[e])return this._signatureToName[e];let n=i.toUpperCase(),o=VF[n]||`TAG_${n}`,r=this._generateUniqueName(`CLOSE_${o}`);return this._signatureToName[e]=r,r}getPlaceholderName(i,e){let n=i.toUpperCase(),o=`PH: ${n}=${e}`;if(this._signatureToName[o])return this._signatureToName[o];let r=this._generateUniqueName(n);return this._signatureToName[o]=r,r}getUniquePlaceholder(i){return this._generateUniqueName(i.toUpperCase())}getStartBlockPlaceholderName(i,e){let n=this._hashBlock(i,e);if(this._signatureToName[n])return this._signatureToName[n];let o=this._generateUniqueName(`START_BLOCK_${this._toSnakeCase(i)}`);return this._signatureToName[n]=o,o}getCloseBlockPlaceholderName(i){let e=this._hashClosingBlock(i);if(this._signatureToName[e])return this._signatureToName[e];let n=this._generateUniqueName(`CLOSE_BLOCK_${this._toSnakeCase(i)}`);return this._signatureToName[e]=n,n}_hashTag(i,e,n){let o=`<${i}`,r=Object.keys(e).sort().map(c=>` ${c}=${e[c]}`).join(""),a=n?"/>":`></${i}>`;return o+r+a}_hashClosingTag(i){return this._hashTag(`/${i}`,{},!1)}_hashBlock(i,e){let n=e.length===0?"":` (${e.sort().join("; ")})`;return`@${i}${n} {}`}_hashClosingBlock(i){return this._hashBlock(`close_${i}`,[])}_toSnakeCase(i){return i.toUpperCase().replace(/[^A-Z0-9]/g,"_")}_generateUniqueName(i){if(!this._placeHolderNameCounts.hasOwnProperty(i))return this._placeHolderNameCounts[i]=1,i;let n=this._placeHolderNameCounts[i];return this._placeHolderNameCounts[i]=n+1,`${i}_${n}`}},TY=new p1(new lv);function EY(t,i){let e=new tP(TY,t,i);return(n,o,r,a,c)=>e.toI18nMessage(n,o,r,a,c)}function DY(t,i){return i}var tP=class{_expressionParser;_retainEmptyTokens;_preserveExpressionWhitespace;constructor(i,e,n){this._expressionParser=i,this._retainEmptyTokens=e,this._preserveExpressionWhitespace=n}toI18nMessage(i,e="",n="",o="",r){let a={isIcu:i.length==1&&i[0]instanceof fu,icuDepth:0,placeholderRegistry:new eP,placeholderToContent:{},placeholderToMessage:{},visitNodeFn:r||DY},c=Do(this,i,a);return new Qa(c,a.placeholderToContent,a.placeholderToMessage,e,n,o)}visitElement(i,e){return this._visitElementLike(i,e)}visitComponent(i,e){return this._visitElementLike(i,e)}visitDirective(i,e){throw new Error("Unreachable code")}visitAttribute(i,e){let n=i.valueTokens===void 0||i.valueTokens.length===1?new W_(i.value,i.valueSpan||i.sourceSpan):this._visitTextWithInterpolation(i.valueTokens,i.valueSpan||i.sourceSpan,e,i.i18n);return e.visitNodeFn(i,n)}visitText(i,e){let n=i.tokens.length===1?new W_(i.value,i.sourceSpan):this._visitTextWithInterpolation(i.tokens,i.sourceSpan,e,i.i18n);return e.visitNodeFn(i,n)}visitComment(i,e){return null}visitExpansion(i,e){e.icuDepth++;let n={},o=new Hx(i.switchValue,i.type,n,i.sourceSpan);if(i.cases.forEach(c=>{n[c.value]=new Pd(c.expression.map(m=>m.visit(this,e)),c.expSourceSpan)}),e.icuDepth--,e.isIcu||e.icuDepth>0){let c=e.placeholderRegistry.getUniquePlaceholder(`VAR_${i.type}`);return o.expressionPlaceholder=c,e.placeholderToContent[c]={text:i.switchValue,sourceSpan:i.switchValueSourceSpan},e.visitNodeFn(i,o)}let r=e.placeholderRegistry.getPlaceholderName("ICU",i.sourceSpan.toString());e.placeholderToMessage[r]=this.toI18nMessage([i],"","","",void 0);let a=new gf(o,r,i.sourceSpan);return e.visitNodeFn(i,a)}visitExpansionCase(i,e){throw new Error("Unreachable code")}visitBlock(i,e){let n=Do(this,i.children,e);if(i.name==="switch")return new Pd(n,i.sourceSpan);let o=i.parameters.map(m=>m.expression),r=e.placeholderRegistry.getStartBlockPlaceholderName(i.name,o),a=e.placeholderRegistry.getCloseBlockPlaceholderName(i.name);e.placeholderToContent[r]={text:i.startSourceSpan.toString(),sourceSpan:i.startSourceSpan},e.placeholderToContent[a]={text:i.endSourceSpan?i.endSourceSpan.toString():"}",sourceSpan:i.endSourceSpan??i.sourceSpan};let c=new Lm(i.name,o,r,a,n,i.sourceSpan,i.startSourceSpan,i.endSourceSpan);return e.visitNodeFn(i,c)}visitBlockParameter(i,e){throw new Error("Unreachable code")}visitLetDeclaration(i,e){return null}_visitElementLike(i,e){let n=Do(this,i.children,e),o={},r=g=>{o[g.name]=g.value},a,c;i instanceof sl?(a=i.name,c=JD(i.name).isVoid):(a=i.fullName,c=i.tagName?JD(i.tagName).isVoid:!1),i.attrs.forEach(r),i.directives.forEach(g=>g.attrs.forEach(r));let m=e.placeholderRegistry.getStartTagPlaceholderName(a,o,c);e.placeholderToContent[m]={text:i.startSourceSpan.toString(),sourceSpan:i.startSourceSpan};let p="";c||(p=e.placeholderRegistry.getCloseTagPlaceholderName(a),e.placeholderToContent[p]={text:`</${a}>`,sourceSpan:i.endSourceSpan??i.sourceSpan});let h=new Fm(a,o,m,p,n,c,i.sourceSpan,i.startSourceSpan,i.endSourceSpan);return e.visitNodeFn(i,h)}_visitTextWithInterpolation(i,e,n,o){let r=[],a=!1;for(let c of i)switch(c.type){case 8:case 17:a=!0;let[m,p,h]=c.parts,g=NY(p)||"INTERPOLATION",M=n.placeholderRegistry.getPlaceholderName(g,p);if(this._preserveExpressionWhitespace)n.placeholderToContent[M]={text:c.parts.join(""),sourceSpan:c.sourceSpan},r.push(new U0(p,M,c.sourceSpan));else{let C=this.normalizeExpression(c);n.placeholderToContent[M]={text:`${m}${C}${h}`,sourceSpan:c.sourceSpan},r.push(new U0(C,M,c.sourceSpan))}break;default:if(c.parts[0].length>0||this._retainEmptyTokens){let C=r[r.length-1];C instanceof W_?(C.value+=c.parts[0],C.sourceSpan=new bn(C.sourceSpan.start,c.sourceSpan.end,C.sourceSpan.fullStart,C.sourceSpan.details)):r.push(new W_(c.parts[0],c.sourceSpan))}else this._retainEmptyTokens&&r.push(new W_(c.parts[0],c.sourceSpan));break}return a?(PY(r,o),new Pd(r,e)):r[0]}normalizeExpression(i){let e=i.parts[1],n=this._expressionParser.parseBinding(e,i.sourceSpan,i.sourceSpan.start.offset);return _Y(n)}};function PY(t,i){if(i instanceof Qa&&(IY(i),i=i.nodes[0]),i instanceof Pd){AY(i.children,t);for(let e=0;e<t.length;e++)t[e].sourceSpan=i.children[e].sourceSpan}}function IY(t){let i=t.nodes;if(i.length!==1||!(i[0]instanceof Pd))throw new Error("Unexpected previous i18n message - expected it to consist of only a single `Container` node.")}function AY(t,i){if(t.length!==i.length)throw new Error(`
|
||
The number of i18n message children changed between first and second pass.
|
||
|
||
First pass (${t.length} tokens):
|
||
${t.map(e=>`"${e.sourceSpan.toString()}"`).join(`
|
||
`)}
|
||
|
||
Second pass (${i.length} tokens):
|
||
${i.map(e=>`"${e.sourceSpan.toString()}"`).join(`
|
||
`)}
|
||
`.trim());if(t.some((e,n)=>i[n].constructor!==e.constructor))throw new Error("The types of the i18n message children changed between first and second pass.")}var OY=/\/\/[\s\S]*i18n[\s\S]*\([\s\S]*ph[\s\S]*=[\s\S]*("|')([\s\S]*?)\1[\s\S]*\)/g;function NY(t){return t.split(OY)[2]}var zF=new Set(["iframe|srcdoc","*|innerhtml","*|outerhtml","embed|src","iframe|src","object|codebase","object|data"]);function jF(t,i){return t=t.toLowerCase(),i=i.toLowerCase(),zF.has(t+"|"+i)||zF.has("*|"+i)}var RY=t=>(i,e)=>{let n=t.get(i)??i;return n instanceof Od&&(e instanceof gf&&n.i18n instanceof Qa&&(e.previousMessage=n.i18n),n.i18n=e),e},u1=class{keepI18nAttrs;enableI18nLegacyMessageIdFormat;preserveSignificantWhitespace;retainEmptyTokens;hasI18nMeta=!1;_errors=[];constructor(i=!1,e=!1,n=!0,o=!n){this.keepI18nAttrs=i,this.enableI18nLegacyMessageIdFormat=e,this.preserveSignificantWhitespace=n,this.retainEmptyTokens=o}_generateI18nMessage(i,e="",n){let{meaning:o,description:r,customId:a}=this._parseMetadata(e),m=EY(this.retainEmptyTokens,this.preserveSignificantWhitespace)(i,o,r,a,n);return this._setMessageId(m,e),this._setLegacyIds(m,e),m}visitAllWithErrors(i){let e=i.map(n=>n.visit(this,null));return new d1(e,this._errors)}visitElement(i){return this._visitElementLike(i),i}visitComponent(i,e){return this._visitElementLike(i),i}visitExpansion(i,e){let n,o=i.i18n;if(this.hasI18nMeta=!0,o instanceof gf){let r=o.name;n=this._generateI18nMessage([i],o);let a=j6(n);a.name=r,e!==null&&(e.placeholderToMessage[r]=n)}else n=this._generateI18nMessage([i],e||o);return i.i18n=n,i}visitText(i){return i}visitAttribute(i){return i}visitComment(i){return i}visitExpansionCase(i){return i}visitBlock(i,e){return Do(this,i.children,e),i}visitBlockParameter(i,e){return i}visitLetDeclaration(i,e){return i}visitDirective(i,e){return i}_visitElementLike(i){let e;if(QW(i)){this.hasI18nMeta=!0;let n=[],o={};for(let r of i.attrs)if(r.name===V6){let a=i.i18n||r.value,c=new Map,m=this.preserveSignificantWhitespace?i.children:kc(new m1(!1,c),i.children);e=this._generateI18nMessage(m,a,RY(c)),e.nodes.length===0&&(e=void 0),i.i18n=e}else if(r.name.startsWith(xD)){let a=r.name.slice(xD.length),c;i instanceof Ua?c=i.tagName===null?!1:jF(i.tagName,a):c=jF(i.name,a),c?this._reportError(r,`Translating attribute '${a}' is disallowed for security reasons.`):o[a]=r.value}else n.push(r);if(Object.keys(o).length)for(let r of n){let a=o[r.name];a!==void 0&&r.value&&(r.i18n=this._generateI18nMessage([r],r.i18n||a))}this.keepI18nAttrs||(i.attrs=n)}Do(this,i.children,e)}_parseMetadata(i){return typeof i=="string"?BY(i):i instanceof Qa?i:{}}_setMessageId(i,e){i.id||(i.id=e instanceof Qa&&e.id||KG(i))}_setLegacyIds(i,e){if(this.enableI18nLegacyMessageIdFormat)i.legacyIds=[YG(i),P6(i)];else if(typeof e!="string"){let n=e instanceof Qa?e:e instanceof gf?e.previousMessage:void 0;i.legacyIds=n?n.legacyIds:[]}}_reportError(i,e){this._errors.push(new mn(i.sourceSpan,e))}},FY="|",LY="@@";function BY(t=""){let i,e,n;if(t=t.trim(),t){let o=t.indexOf(LY),r=t.indexOf(FY),a;[a,i]=o>-1?[t.slice(0,o),t.slice(o+2)]:[t,""],[e,n]=r>-1?[a.slice(0,r),a.slice(r+1)]:["",a]}return{customId:i,meaning:e,description:n}}function VY(t){let i=[];return t.description?i.push({tagName:"desc",text:t.description}):i.push({tagName:"suppress",text:"{msgDescriptions}"}),t.meaning&&i.push({tagName:"meaning",text:t.meaning}),pW(i)}var zY="goog.getMsg";function jY(t,i,e,n){let o=HY(i),r=[Ee(o)];Object.keys(n).length&&(r.push(BD(AP(n,!0),!0)),r.push(BD({original_code:gl(Object.keys(n).map(m=>({key:fv(m),quoted:!0,value:i.placeholders[m]?Ee(i.placeholders[m].sourceSpan.toString()):Ee(i.placeholderToMessage[m].nodes.map(p=>p.sourceSpan.toString()).join(""))})))})));let a=new qr(e.name,si(zY).callFn(r),ec,fa.Final);a.addLeadingComment(VY(i));let c=new va(t.set(e));return[a,c]}var nP=class{formatPh(i){return`{$${fv(i)}}`}visitText(i){return i.value}visitContainer(i){return i.children.map(e=>e.visit(this)).join("")}visitIcu(i){return xL(i)}visitTagPlaceholder(i){return i.isVoid?this.formatPh(i.startName):`${this.formatPh(i.startName)}${i.children.map(e=>e.visit(this)).join("")}${this.formatPh(i.closeName)}`}visitPlaceholder(i){return this.formatPh(i.name)}visitBlockPlaceholder(i){return`${this.formatPh(i.startName)}${i.children.map(e=>e.visit(this)).join("")}${this.formatPh(i.closeName)}`}visitIcuPlaceholder(i,e){return this.formatPh(i.name)}},$Y=new nP;function HY(t){return t.nodes.map(i=>i.visit($Y,null)).join("")}function UY(t,i,e){let{messageParts:n,placeHolders:o}=GY(i),r=WY(i),a=o.map(p=>e[p.text]),c=fW(i,n,o,a,r),m=t.set(c);return[new va(m)]}var iP=class{placeholderToMessage;pieces;constructor(i,e){this.placeholderToMessage=i,this.pieces=e}visitText(i){if(this.pieces[this.pieces.length-1]instanceof mu)this.pieces[this.pieces.length-1].text+=i.value;else{let e=new bn(i.sourceSpan.fullStart,i.sourceSpan.end,i.sourceSpan.fullStart,i.sourceSpan.details);this.pieces.push(new mu(i.value,e))}}visitContainer(i){i.children.forEach(e=>e.visit(this))}visitIcu(i){this.pieces.push(new mu(xL(i),i.sourceSpan))}visitTagPlaceholder(i){this.pieces.push(this.createPlaceholderPiece(i.startName,i.startSourceSpan??i.sourceSpan)),i.isVoid||(i.children.forEach(e=>e.visit(this)),this.pieces.push(this.createPlaceholderPiece(i.closeName,i.endSourceSpan??i.sourceSpan)))}visitPlaceholder(i){this.pieces.push(this.createPlaceholderPiece(i.name,i.sourceSpan))}visitBlockPlaceholder(i){this.pieces.push(this.createPlaceholderPiece(i.startName,i.startSourceSpan??i.sourceSpan)),i.children.forEach(e=>e.visit(this)),this.pieces.push(this.createPlaceholderPiece(i.closeName,i.endSourceSpan??i.sourceSpan))}visitIcuPlaceholder(i){this.pieces.push(this.createPlaceholderPiece(i.name,i.sourceSpan,this.placeholderToMessage[i.name]))}createPlaceholderPiece(i,e,n){return new ef(fv(i,!1),e,n)}};function GY(t){let i=[],e=new iP(t.placeholderToMessage,i);return t.nodes.forEach(n=>n.visit(e)),qY(i)}function WY(t){let i=t.nodes[0],e=t.nodes[t.nodes.length-1];return new bn(i.sourceSpan.fullStart,e.sourceSpan.end,i.sourceSpan.fullStart,i.sourceSpan.details)}function qY(t){let i=[],e=[];t[0]instanceof ef&&i.push(LE(t[0].sourceSpan.start));for(let n=0;n<t.length;n++){let o=t[n];o instanceof mu?i.push(o):(e.push(o),t[n-1]instanceof ef&&i.push(LE(t[n-1].sourceSpan.end)))}return t[t.length-1]instanceof ef&&i.push(LE(t[t.length-1].sourceSpan.end)),{messageParts:i,placeHolders:e}}function LE(t){return new mu("",new bn(t,t))}var $F="ngI18nClosureMode",XY="i18n_",QY="I18N_EXP_",HF="\uFFFD",YY="MSG_";function UF(t){return`${YY}${t}`.toUpperCase()}function KY(t){return new qr(t.name,void 0,ec,void 0,t.sourceSpan)}function ZY(t){let i=t.relativeContextFilePath.replace(/[^A-Za-z0-9]/g,"_").toUpperCase()+"_",e=new Map,n=new Map,o=new Map,r=new Map;for(let m of t.units)for(let p of m.ops())if(p.kind===B.ExtractedAttribute&&p.i18nContext!==null){let h=e.get(p.i18nContext)??[];h.push(p),e.set(p.i18nContext,h)}else if(p.kind===B.I18nAttributes)n.set(p.target,p);else if(p.kind===B.I18nExpression&&p.usage===kf.I18nAttribute){let h=o.get(p.target)??[];h.push(p),o.set(p.target,h)}else p.kind===B.I18nMessage&&r.set(p.xref,p);let a=new Map,c=new Map;for(let m of t.units)for(let p of m.create)if(p.kind===B.I18nMessage){if(p.messagePlaceholder===null){let{mainVar:h,statements:g}=DL(t,i,r,p);if(p.i18nBlock!==null){let M=t.addConst(h,g);c.set(p.i18nBlock,M)}else{t.constsInitializers.push(...g),a.set(p.i18nContext,h);let M=e.get(p.i18nContext);if(M!==void 0)for(let C of M)C.expression=h.clone()}}Ze.remove(p)}for(let m of t.units)for(let p of m.create)if(Hm(p)){let h=n.get(p.xref);if(h===void 0)continue;let g=o.get(p.xref);if(g===void 0)throw new Error("AssertionError: Could not find any i18n expressions associated with an I18nAttributes instruction");let M=new Set;g=g.filter(_=>{let w=M.has(_.name);return M.add(_.name),!w});let C=g.flatMap(_=>{let w=a.get(_.context);if(w===void 0)throw new Error("AssertionError: Could not find i18n expression's value");return[Ee(_.name),w]});h.i18nAttributesConfig=t.addConst(new Lc(C))}for(let m of t.units)for(let p of m.create)if(p.kind===B.I18nStart){let h=c.get(p.root);if(h===void 0)throw new Error("AssertionError: Could not find corresponding i18n block index for an i18n message op; was an i18n message incorrectly assumed to correspond to an attribute?");p.messageIndex=h}}function DL(t,i,e,n){let o=[],r=new Map;for(let p of n.subMessages){let h=e.get(p),{mainVar:g,statements:M}=DL(t,i,e,h);o.push(...M);let C=r.get(h.messagePlaceholder)??[];C.push(g),r.set(h.messagePlaceholder,C)}JY(n,r),n.params=new Map([...n.params.entries()].sort());let a=si(t.pool.uniqueName(XY)),c=nK(t.pool,n.message.id,i,t.i18nUseExternalIds),m;if(n.needsPostprocessing||n.postprocessingParams.size>0){let p=Object.fromEntries([...n.postprocessingParams.entries()].sort()),h=AP(p,!1),g=[];n.postprocessingParams.size>0&&g.push(BD(h,!0)),m=M=>Zt(he.i18nPostprocess).callFn([M,...g])}return o.push(...eK(n.message,a,c,n.params,m)),{mainVar:a,statements:o}}function JY(t,i){for(let[e,n]of i)n.length===1?t.params.set(e,n[0]):(t.params.set(e,Ee(`${HF}${QY}${e}${HF}`)),t.postprocessingParams.set(e,oo(n)))}function eK(t,i,e,n,o){let r=Object.fromEntries(n),a=[KY(i),y1(tK(),jY(i,t,e,r),UY(i,t,AP(r,!1)))];return o&&a.push(new va(i.set(o(i)))),a}function tK(){return uv(si($F)).notIdentical(Ee("undefined",DP)).and(si($F))}function nK(t,i,e,n){let o,r=e;if(n){let a=UF("EXTERNAL_"),c=t.uniqueName(r);o=`${a}${ru(i)}$$${c}`}else{let a=UF(r);o=t.uniqueName(a)}return si(o)}function iK(t){for(let i of t.units){let e=null,n=null,o=new Map,r=new Map,a=new Map;for(let c of i.create)switch(c.kind){case B.I18nStart:if(c.context===null)throw Error("I18n op should have its context set.");e=c;break;case B.I18nEnd:e=null;break;case B.IcuStart:if(c.context===null)throw Error("Icu op should have its context set.");n=c;break;case B.IcuEnd:n=null;break;case B.Text:if(e!==null)if(o.set(c.xref,e),r.set(c.xref,n),c.icuPlaceholder!==null){let m=PX(t.allocateXrefId(),c.icuPlaceholder,[c.initialValue]);Ze.replace(c,m),a.set(c.xref,m)}else Ze.remove(c);break}for(let c of i.update)switch(c.kind){case B.InterpolateText:if(!o.has(c.target))continue;let m=o.get(c.target),p=r.get(c.target),h=a.get(c.target),g=p?p.context:m.context,M=p?Y0.Postproccessing:Y0.Creation,C=[];for(let _=0;_<c.interpolation.expressions.length;_++){let w=c.interpolation.expressions[_];C.push(sL(g,m.xref,m.xref,m.handle,w,h?.xref??null,c.interpolation.i18nPlaceholders[_]??null,M,kf.I18nText,"",w.sourceSpan??c.sourceSpan))}Ze.replaceWithMany(c,C),h!==void 0&&(h.strings=c.interpolation.strings);break}}}function oK(t){for(let i of t.units)for(let e of i.create)switch(e.kind){case B.ElementStart:case B.ConditionalCreate:case B.ConditionalBranchCreate:case B.Template:if(!Array.isArray(e.localRefs))throw new Error("AssertionError: expected localRefs to be an array still");if(e.numSlotsUsed+=e.localRefs.length,e.localRefs.length>0){let n=rK(e.localRefs);e.localRefs=t.addConst(n)}else e.localRefs=null;break}}function rK(t){let i=[];for(let e of t)i.push(Ee(e.name),Ee(e.target));return oo(i)}function aK(t){for(let i of t.units){let e=Ia.HTML;for(let n of i.create)n.kind===B.ElementStart&&n.namespace!==e&&(Ze.insertBefore(yX(n.namespace),n),e=n.namespace)}}function sK(t){let i=[],e=0,n=0,o=0,r=0,a=0,c=null;for(;e<t.length;)switch(t.charCodeAt(e++)){case 40:n++;break;case 41:n--;break;case 39:o===0?o=39:o===39&&t.charCodeAt(e-1)!==92&&(o=0);break;case 34:o===0?o=34:o===34&&t.charCodeAt(e-1)!==92&&(o=0);break;case 58:!c&&n===0&&o===0&&(c=PL(t.substring(a,e-1).trim()),r=e);break;case 59:if(c&&r>0&&n===0&&o===0){let p=t.substring(r,e-1).trim();i.push(c,p),a=e,r=0,c=null}break}if(c&&r){let m=t.slice(r).trim();i.push(c,m)}return i}function PL(t){return t.replace(/[a-z][A-Z]/g,i=>i.charAt(0)+"-"+i.charAt(1)).toLowerCase()}function lK(t){let i=new Map;for(let e of t.units)for(let n of e.create)Hm(n)&&i.set(n.xref,n);for(let e of t.units)for(let n of e.create)if(n.kind===B.ExtractedAttribute&&n.bindingKind===Qt.Attribute&&lL(n.expression)){let o=i.get(n.target);if(o!==void 0&&(o.kind===B.Template||o.kind===B.ConditionalCreate||o.kind===B.ConditionalBranchCreate)&&o.templateKind===us.Structural)continue;if(n.name==="style"){let r=sK(n.expression.value);for(let a=0;a<r.length-1;a+=2)Ze.insertBefore(ul(n.target,Qt.StyleProperty,null,r[a],Ee(r[a+1]),null,null,uo.STYLE),n);Ze.remove(n)}else if(n.name==="class"){let r=n.expression.value.trim().split(/\s+/g);for(let a of r)Ze.insertBefore(ul(n.target,Qt.ClassName,null,a,null,null,null,uo.NONE),n);Ze.remove(n)}}}function cK(t){a0(t.root,t.componentName,{index:0})}function a0(t,i,e){t.fnName===null&&(t.fnName=t.job.pool.uniqueName(ru(`${i}_${t.job.fnSuffix}`),!1));let n=new Map;for(let o of t.ops())switch(o.kind){case B.Property:case B.DomProperty:o.bindingKind===Qt.LegacyAnimation&&(o.name="@"+o.name);break;case B.Animation:if(o.handlerFnName===null){let p=o.name.replace(".","");o.handlerFnName=`${t.fnName}_${p}_cb`,o.handlerFnName=ru(o.handlerFnName)}break;case B.AnimationListener:if(o.handlerFnName!==null)break;if(!o.hostListener&&o.targetSlot.slot===null)throw new Error("Expected a slot to be assigned");let r=o.name.replace(".","");o.hostListener?o.handlerFnName=`${i}_${r}_HostBindingHandler`:o.handlerFnName=`${t.fnName}_${o.tag.replace("-","_")}_${r}_${o.targetSlot.slot}_listener`,o.handlerFnName=ru(o.handlerFnName);break;case B.Listener:if(o.handlerFnName!==null)break;if(!o.hostListener&&o.targetSlot.slot===null)throw new Error("Expected a slot to be assigned");let a="";o.isLegacyAnimationListener&&(o.name=`@${o.name}.${o.legacyAnimationPhase}`,a="animation"),o.hostListener?o.handlerFnName=`${i}_${a}${o.name}_HostBindingHandler`:o.handlerFnName=`${t.fnName}_${o.tag.replace("-","_")}_${a}${o.name}_${o.targetSlot.slot}_listener`,o.handlerFnName=ru(o.handlerFnName);break;case B.TwoWayListener:if(o.handlerFnName!==null)break;if(o.targetSlot.slot===null)throw new Error("Expected a slot to be assigned");o.handlerFnName=ru(`${t.fnName}_${o.tag.replace("-","_")}_${o.name}_${o.targetSlot.slot}_listener`);break;case B.Variable:n.set(o.xref,dK(o.variable,e));break;case B.RepeaterCreate:if(!(t instanceof hl))throw new Error("AssertionError: must be compiling a component");if(o.handle.slot===null)throw new Error("Expected slot to be assigned");if(o.emptyView!==null){let p=t.job.views.get(o.emptyView);a0(p,`${i}_${o.functionNameSuffix}Empty_${o.handle.slot+2}`,e)}a0(t.job.views.get(o.xref),`${i}_${o.functionNameSuffix}_${o.handle.slot+1}`,e);break;case B.Projection:if(!(t instanceof hl))throw new Error("AssertionError: must be compiling a component");if(o.handle.slot===null)throw new Error("Expected slot to be assigned");if(o.fallbackView!==null){let p=t.job.views.get(o.fallbackView);a0(p,`${i}_ProjectionFallback_${o.handle.slot}`,e)}break;case B.ConditionalCreate:case B.ConditionalBranchCreate:case B.Template:if(!(t instanceof hl))throw new Error("AssertionError: must be compiling a component");let c=t.job.views.get(o.xref);if(o.handle.slot===null)throw new Error("Expected slot to be assigned");let m=o.functionNameSuffix.length===0?"":`_${o.functionNameSuffix}`;a0(c,`${i}${m}_${o.handle.slot}`,e);break;case B.StyleProp:o.name=GF(mK(o.name));break;case B.ClassProp:o.name=GF(o.name);break}for(let o of t.ops())wr(o,r=>{if(!(!(r instanceof Id)||r.name!==null)){if(!n.has(r.xref))throw new Error(`Variable ${r.xref} not yet named`);r.name=n.get(r.xref)}})}function dK(t,i){if(t.name===null)switch(t.kind){case oa.Context:t.name=`ctx_r${i.index++}`;break;case oa.Identifier:let e=t.identifier===Gs?"i":"";t.name=`${t.identifier}_${e}r${++i.index}`;break;default:t.name=`_r${++i.index}`;break}return t.name}function mK(t){return t.startsWith("--")?t:PL(t)}function GF(t){let i=t.indexOf("!important");return i>-1?t.substring(0,i):t}function pK(t){for(let i of t.units){for(let e of i.functions)BE(e.ops);for(let e of i.create)(e.kind===B.Listener||e.kind===B.Animation||e.kind===B.AnimationListener||e.kind===B.TwoWayListener)&&BE(e.handlerOps);BE(i.update)}}function BE(t){for(let i of t){if(i.kind!==B.Statement||!(i.statement instanceof va)||!(i.statement.expr instanceof Kx))continue;let e=i.statement.expr.steps,n=!0;for(let o=i.next;o.kind!==B.ListEnd&&n;o=o.next)wr(o,(r,a)=>{if(!jc(r))return r;if(n&&!(a&$n.InChildOperation))switch(r.kind){case en.NextContext:r.steps+=e,Ze.remove(i),n=!1;break;case en.GetCurrentView:case en.Reference:case en.ContextLetReference:n=!1;break}})}}var uK="ng-container";function hK(t){for(let i of t.units){let e=new Set;for(let n of i.create)n.kind===B.ElementStart&&n.tag===uK&&(n.kind=B.ContainerStart,e.add(n.xref)),n.kind===B.ElementEnd&&e.has(n.xref)&&(n.kind=B.ContainerEnd)}}function fK(t,i){let e=t.get(i);if(e===void 0)throw new Error("All attributes should have an element-like target.");return e}function gK(t){let i=new Map;for(let e of t.units)for(let n of e.create)Hm(n)&&i.set(n.xref,n);for(let e of t.units)for(let n of e.create)(n.kind===B.ElementStart||n.kind===B.ContainerStart)&&n.nonBindable&&Ze.insertAfter(_X(n.xref),n),(n.kind===B.ElementEnd||n.kind===B.ContainerEnd)&&fK(i,n.xref).nonBindable&&Ze.insertBefore(vX(n.xref),n)}function Ic(t){return i=>i.kind===t}function m0(t,i){return e=>e.kind===t&&i===e.expression instanceof er}function _K(t){return t.kind===B.Listener&&!(t.hostListener&&t.isLegacyAnimationListener)||t.kind===B.TwoWayListener||t.kind===B.Animation||t.kind===B.AnimationListener}function vK(t){return(t.kind===B.Property||t.kind===B.TwoWayProperty)&&!(t.expression instanceof er)}var bK=[{test:t=>t.kind===B.Listener&&t.hostListener&&t.isLegacyAnimationListener},{test:_K}],CK=[{test:Ic(B.StyleMap),transform:h1},{test:Ic(B.ClassMap),transform:h1},{test:Ic(B.StyleProp)},{test:Ic(B.ClassProp)},{test:m0(B.Attribute,!0)},{test:m0(B.Property,!0)},{test:vK},{test:m0(B.Attribute,!1)},{test:Ic(B.Control)}],xK=[{test:m0(B.DomProperty,!0)},{test:m0(B.DomProperty,!1)},{test:Ic(B.Attribute)},{test:Ic(B.StyleMap),transform:h1},{test:Ic(B.ClassMap),transform:h1},{test:Ic(B.StyleProp)},{test:Ic(B.ClassProp)}],WF=new Set([B.Listener,B.TwoWayListener,B.AnimationListener,B.StyleMap,B.ClassMap,B.StyleProp,B.ClassProp,B.Property,B.TwoWayProperty,B.DomProperty,B.Attribute,B.Animation,B.Control]);function yK(t){for(let i of t.units){qF(i.create,bK);let e=i.job.kind===Vt.Host?xK:CK;qF(i.update,e)}}function qF(t,i){let e=[],n=null;for(let o of t){let r=K0(o)?o.target:null;(!WF.has(o.kind)||r!==n&&n!==null&&r!==null)&&(Ze.insertBefore(XF(e,i),o),e=[],n=null),WF.has(o.kind)&&(e.push(o),Ze.remove(o),n=r??n)}t.push(XF(e,i))}function XF(t,i){let e=Array.from(i,()=>new Array);for(let n of t){let o=i.findIndex(r=>r.test(n));e[o].push(n)}return e.flatMap((n,o)=>{let r=i[o].transform;return r?r(n):n})}function h1(t){return t.slice(t.length-1)}function SK(t){for(let i of t.units){let e=_L(i);for(let n of i.ops())if(n.kind===B.Binding){let o=MK(e,n.target);wK(n.name)&&o.kind===B.Projection&&Ze.remove(n)}}}function wK(t){return t.toLowerCase()==="select"}function MK(t,i){let e=t.get(i);if(e===void 0)throw new Error("All attributes should have an slottable target.");return e}function kK(t){for(let i of t.units)TK(i)}function TK(t){for(let i of t.update)wr(i,(e,n)=>{if(!jc(e)||e.kind!==en.PipeBinding)return;if(n&$n.InChildOperation)throw new Error("AssertionError: pipe bindings should not appear in child expressions");if(i.target==null)throw new Error("AssertionError: expected slot handle to be assigned for pipe creation");EK(t,i.target,e)})}function EK(t,i,e){for(let n=t.create.head.next;n.kind!==B.ListEnd;n=n.next){if(!Tf(n)||n.xref!==i)continue;for(;n.next.kind===B.Pipe;)n=n.next;let o=xX(e.target,e.targetSlot,e.name);Ze.insertBefore(o,n.next);return}throw new Error(`AssertionError: unable to find insertion point for pipe ${e.name}`)}function DK(t){for(let i of t.units)for(let e of i.update)tr(e,n=>!(n instanceof Iu)||n.args.length<=4?n:new tv(n.target,n.targetSlot,n.name,oo(n.args),n.args.length),$n.None)}function PK(t){IL(t.root,0)}function IL(t,i){let e=null;for(let n of t.create)switch(n.kind){case B.I18nStart:n.subTemplateIndex=i===0?null:i,e=n;break;case B.I18nEnd:e.subTemplateIndex===null&&(i=0),e=null;break;case B.ConditionalCreate:case B.ConditionalBranchCreate:case B.Template:i=tx(t.job.views.get(n.xref),e,n.i18nPlaceholder,i);break;case B.RepeaterCreate:let o=t.job.views.get(n.xref);i=tx(o,e,n.i18nPlaceholder,i),n.emptyView!==null&&(i=tx(t.job.views.get(n.emptyView),e,n.emptyI18nPlaceholder,i));break;case B.Projection:n.fallbackView!==null&&(i=tx(t.job.views.get(n.fallbackView),e,n.fallbackViewI18nPlaceholder,i));break}return i}function tx(t,i,e,n){if(e!==void 0){if(i===null)throw Error("Expected template with i18n placeholder to be in an i18n block.");n++,IK(t,i)}return IL(t,n)}function IK(t,i){if(t.create.head.next?.kind!==B.I18nStart){let e=t.job.allocateXrefId();Ze.insertAfter(k1(e,i.message,i.root,null),t.create.head),Ze.insertBefore(T1(e,null),t.create.tail)}}function AK(t){for(let i of t.units)for(let e of i.ops())wr(e,n=>{if(!(n instanceof Pu)||n.body===null)return;let o=new oP(n.args.length);n.fn=t.pool.getSharedConstant(o,n.body),n.body=null})}var oP=class extends y0{numArgs;constructor(i){super(),this.numArgs=i}keyOf(i){return i instanceof jm?`param(${i.index})`:super.keyOf(i)}toSharedConstantDeclaration(i,e){let n=[];for(let r=0;r<this.numArgs;r++)n.push(new Ir("a"+r,hs));let o=$t(e,r=>r instanceof jm?si("a"+r.index):r,$n.None);return new qr(i,new Nu(n,o),void 0,fa.Final)}};function OK(t){for(let i of t.units)for(let e of i.update)tr(e,(n,o)=>o&$n.InChildOperation?n:n instanceof Lc?NK(n):n instanceof ic?RK(n):n,$n.None)}function NK(t){let i=[],e=[];for(let n of t.entries){if(n instanceof yu){if(n.expression.isConstant())i.push(n);else{let o=e.length;e.push(n.expression),i.push(new yu(new jm(o)))}continue}if(n.isConstant())i.push(n);else{let o=e.length;e.push(n),i.push(new jm(o))}}return new Pu(oo(i),e)}function RK(t){let i=[],e=[];for(let n of t.entries){if(n instanceof Om){if(n.expression.isConstant())i.push(n);else{let o=e.length;e.push(n.expression),i.push(new Om(new jm(o)))}continue}if(n.value.isConstant())i.push(n);else{let o=e.length;e.push(n.value),i.push(new sf(n.key,new jm(o),n.quoted))}}return new Pu(new ic(i),e)}function FK(t){for(let i of t.units)for(let e of i.ops())tr(e,n=>n instanceof af&&(n.flags===null||!n.flags.includes("g"))?t.pool.getSharedConstant(new rP,n):n,$n.None)}var rP=class extends y0{toSharedConstantDeclaration(i,e){return new qr(i,e,void 0,fa.Final)}};function LK(t,i,e,n,o){return Wm(he.element,t,i,e,n,o)}function BK(t,i,e,n,o){return Wm(he.elementStart,t,i,e,n,o)}function Wm(t,i,e,n,o,r){let a=[Ee(i)];return e!==null&&a.push(Ee(e)),o!==null?a.push(Ee(n),Ee(o)):n!==null&&a.push(Ee(n)),Mn(t,a,r)}function AL(t,i,e,n,o,r,a,c,m){let p=[Ee(i),e,Ee(n),Ee(o),Ee(r),Ee(a)];for(c!==null&&(p.push(Ee(c)),p.push(Zt(he.templateRefExtractor)));p[p.length-1].isEquivalent(lf);)p.pop();return Mn(t,p,m)}function $P(t,i,e,n,o){let r=[Ee(i)];return e instanceof er?r.push(Ef(e,o)):r.push(e),n!==null&&r.push(n),Mn(t,r,o)}function VK(t){return Mn(he.elementEnd,[],t)}function zK(t,i,e,n){return Wm(he.elementContainerStart,t,null,i,e,n)}function jK(t,i,e,n){return Wm(he.elementContainer,t,null,i,e,n)}function $K(){return Mn(he.elementContainerEnd,[],null)}function HK(t,i,e,n,o,r,a,c){return AL(he.templateCreate,t,i,e,n,o,r,a,c)}function UK(){return Mn(he.disableBindings,[],null)}function GK(){return Mn(he.enableBindings,[],null)}function WK(t,i,e,n,o){let r=[Ee(t),i];return e!==null&&r.push(Zt(e)),Mn(n?he.syntheticHostListener:he.listener,r,o)}function QF(t,i){return Zt(he.twoWayBindingSet).callFn([t,i])}function qK(t,i,e){return Mn(he.twoWayListener,[Ee(t),i],e)}function XK(t,i){return Mn(he.pipe,[Ee(t),Ee(i)],null)}function QK(){return Mn(he.namespaceHTML,[],null)}function YK(){return Mn(he.namespaceSVG,[],null)}function KK(){return Mn(he.namespaceMathML,[],null)}function ZK(t,i){return Mn(he.advance,t>1?[Ee(t)]:[],i)}function JK(t){return Zt(he.reference).callFn([Ee(t)])}function eZ(t){return Zt(he.nextContext).callFn(t===1?[]:[Ee(t)])}function tZ(){return Zt(he.getCurrentView).callFn([])}function nZ(t){return Zt(he.restoreView).callFn([t])}function iZ(t){return Zt(he.resetView).callFn([t])}function oZ(t,i,e){let n=[Ee(t,null)];return i!==""&&n.push(Ee(i)),Mn(he.text,n,e)}function rZ(t,i,e,n,o,r,a,c,m,p,h){let g=[Ee(t),Ee(i),e??Ee(null),Ee(n),Ee(o),Ee(r),a??Ee(null),c??Ee(null),m?Zt(he.deferEnableTimerScheduling):Ee(null),Ee(h)],M;for(;(M=g[g.length-1])!==null&&M instanceof _a&&M.value===null;)g.pop();return Mn(he.defer,g,p)}var aZ=new Map([[po.Idle,{none:he.deferOnIdle,prefetch:he.deferPrefetchOnIdle,hydrate:he.deferHydrateOnIdle}],[po.Immediate,{none:he.deferOnImmediate,prefetch:he.deferPrefetchOnImmediate,hydrate:he.deferHydrateOnImmediate}],[po.Timer,{none:he.deferOnTimer,prefetch:he.deferPrefetchOnTimer,hydrate:he.deferHydrateOnTimer}],[po.Hover,{none:he.deferOnHover,prefetch:he.deferPrefetchOnHover,hydrate:he.deferHydrateOnHover}],[po.Interaction,{none:he.deferOnInteraction,prefetch:he.deferPrefetchOnInteraction,hydrate:he.deferHydrateOnInteraction}],[po.Viewport,{none:he.deferOnViewport,prefetch:he.deferPrefetchOnViewport,hydrate:he.deferHydrateOnViewport}],[po.Never,{none:he.deferHydrateNever,prefetch:he.deferHydrateNever,hydrate:he.deferHydrateNever}]]);function sZ(t,i,e,n){let o=aZ.get(t)?.[e];if(o===void 0)throw new Error(`Unable to determine instruction for trigger ${t}`);return Mn(o,i,n)}function lZ(t){return Mn(he.projectionDef,t?[t]:[],null)}function cZ(t,i,e,n,o,r,a){let c=[Ee(t)];return(i!==0||e!==null||n!==null)&&(c.push(Ee(i)),e!==null&&c.push(e),n!==null&&(e===null&&c.push(Ee(null)),c.push(si(n),Ee(o),Ee(r)))),Mn(he.projection,c,a)}function dZ(t,i,e,n){let o=[Ee(t),Ee(i)];return e!==null&&o.push(Ee(e)),Mn(he.i18nStart,o,n)}function mZ(t,i,e,n,o,r,a,c){let m=[Ee(t),i,Ee(e),Ee(n),Ee(o),Ee(r)];for(a!==null&&(m.push(Ee(a)),m.push(Zt(he.templateRefExtractor)));m[m.length-1].isEquivalent(lf);)m.pop();return Mn(he.conditionalCreate,m,c)}function pZ(t,i,e,n,o,r,a,c){let m=[Ee(t),i,Ee(e),Ee(n),Ee(o),Ee(r)];for(a!==null&&(m.push(Ee(a)),m.push(Zt(he.templateRefExtractor)));m[m.length-1].isEquivalent(lf);)m.pop();return Mn(he.conditionalBranchCreate,m,c)}function uZ(t,i,e,n,o,r,a,c,m,p,h,g,M,C){let _=[Ee(t),si(i),Ee(e),Ee(n),Ee(o),Ee(r),a];return(c||m!==null)&&(_.push(Ee(c)),m!==null&&(_.push(si(m),Ee(p),Ee(h)),(g!==null||M!==null)&&_.push(Ee(g)),M!==null&&_.push(Ee(M)))),Mn(he.repeaterCreate,_,C)}function hZ(t,i){return Mn(he.repeater,[t],i)}function fZ(t,i,e){return t==="prefetch"?Mn(he.deferPrefetchWhen,[i],e):t==="hydrate"?Mn(he.deferHydrateWhen,[i],e):Mn(he.deferWhen,[i],e)}function gZ(t,i){return Mn(he.declareLet,[Ee(t)],i)}function _Z(t,i){return Zt(he.storeLet).callFn([t],i)}function vZ(t){return Zt(he.readContextLet).callFn([Ee(t)])}function bZ(t,i,e,n){let o=[Ee(t),Ee(i)];return e&&o.push(Ee(e)),Mn(he.i18n,o,n)}function CZ(t){return Mn(he.i18nEnd,[],t)}function xZ(t,i){let e=[Ee(t),Ee(i)];return Mn(he.i18nAttributes,e,null)}function yZ(t,i,e){return $P(he.ariaProperty,t,i,null,e)}function SZ(t,i,e,n){return $P(he.property,t,i,e,n)}function wZ(t){return Mn(he.control,[],t)}function MZ(t){return Mn(he.controlCreate,[],t)}function kZ(t,i,e,n){let o=[Ee(t),i];return e!==null&&o.push(e),Mn(he.twoWayProperty,o,n)}function TZ(t,i,e,n,o){let r=[Ee(t)];return i instanceof er?r.push(Ef(i,o)):r.push(i),(e!==null||n!==null)&&r.push(e??Ee(null)),n!==null&&r.push(Ee(n)),Mn(he.attribute,r,null)}function EZ(t,i,e,n){let o=[Ee(t)];return i instanceof er?o.push(Ef(i,n)):o.push(i),e!==null&&o.push(Ee(e)),Mn(he.styleProp,o,n)}function DZ(t,i,e){return Mn(he.classProp,[Ee(t),i],e)}function PZ(t,i){let e=t instanceof er?Ef(t,i):t;return Mn(he.styleMap,[e],i)}function IZ(t,i){let e=t instanceof er?Ef(t,i):t;return Mn(he.classMap,[e],i)}function AZ(t,i,e,n,o){return Wm(he.domElement,t,i,e,n,o)}function OZ(t,i,e,n,o){return Wm(he.domElementStart,t,i,e,n,o)}function NZ(t){return Mn(he.domElementEnd,[],t)}function RZ(t,i,e,n){return Wm(he.domElementContainerStart,t,null,i,e,n)}function FZ(t,i,e,n){return Wm(he.domElementContainer,t,null,i,e,n)}function LZ(){return Mn(he.domElementContainerEnd,[],null)}function BZ(t,i,e,n){let o=[Ee(t),i];return e!==null&&o.push(Zt(e)),Mn(he.domListener,o,n)}function VZ(t,i,e,n,o,r,a,c){return AL(he.domTemplate,t,i,e,n,o,r,a,c)}var YF=[he.pipeBind1,he.pipeBind2,he.pipeBind3,he.pipeBind4];function zZ(t,i,e){if(e.length<1||e.length>YF.length)throw new Error("pipeBind() argument count out of bounds");let n=YF[e.length-1];return Zt(n).callFn([Ee(t),Ee(i),...e])}function jZ(t,i,e){return Zt(he.pipeBindV).callFn([Ee(t),Ee(i),e])}function $Z(t,i,e){let n=OL(t,i);return iJ(eJ,[],n,e)}function HZ(t,i){return Mn(he.i18nExp,[t],i)}function UZ(t,i){return Mn(he.i18nApply,[Ee(t)],i)}function GZ(t,i,e,n){return $P(he.domProperty,t,i,e,n)}function WZ(t,i,e,n){let o=[i];e!==null&&o.push(e);let r=t==="enter"?he.animationEnter:he.animationLeave;return Mn(r,o,n)}function qZ(t,i,e,n){let r=[i instanceof er?Ef(i,n):i];e!==null&&r.push(e);let a=t==="enter"?he.animationEnter:he.animationLeave;return Mn(a,r,n)}function XZ(t,i,e,n){let o=[i],r=t==="enter"?he.animationEnterListener:he.animationLeaveListener;return Mn(r,o,n)}function QZ(t,i,e){return Mn(he.syntheticHostProperty,[Ee(t),i],e)}function YZ(t,i,e){return HP(nJ,[Ee(t),i],e,null)}function KZ(t,i){return Mn(he.attachSourceLocations,[Ee(t),i],null)}function ZZ(t,i,e){return Zt(he.arrowFunction).callFn([Ee(t),i,e])}function OL(t,i){if(t.length<1||i.length!==t.length-1)throw new Error("AssertionError: expected specific shape of args for strings/expressions in interpolation");let e=[];if(i.length===1&&t[0]===""&&t[1]==="")e.push(i[0]);else{let n;for(n=0;n<i.length;n++)e.push(Ee(t[n]),i[n]);e.push(Ee(t[n]))}return e}function Ef(t,i){let e=OL(t.strings,t.expressions);return HP(tJ,[],e,i)}function Mn(t,i,e){let n=Zt(t).callFn(i,e);return Ws(new va(n,e))}function JZ(t,i,e){let n=[t];return i!==null&&n.push(i),Mn(he.conditional,n,e)}var eJ={constant:[he.textInterpolate,he.textInterpolate1,he.textInterpolate2,he.textInterpolate3,he.textInterpolate4,he.textInterpolate5,he.textInterpolate6,he.textInterpolate7,he.textInterpolate8],variable:he.textInterpolateV,mapping:t=>{if(t%2===0)throw new Error("Expected odd number of arguments");return(t-1)/2}},tJ={constant:[he.interpolate,he.interpolate1,he.interpolate2,he.interpolate3,he.interpolate4,he.interpolate5,he.interpolate6,he.interpolate7,he.interpolate8],variable:he.interpolateV,mapping:t=>{if(t%2===0)throw new Error("Expected odd number of arguments");return(t-1)/2}},nJ={constant:[he.pureFunction0,he.pureFunction1,he.pureFunction2,he.pureFunction3,he.pureFunction4,he.pureFunction5,he.pureFunction6,he.pureFunction7,he.pureFunction8],variable:he.pureFunctionV,mapping:t=>t};function HP(t,i,e,n){let o=t.mapping(e.length),r=e.at(-1);if(e.length>1&&r instanceof _a&&r.value===""&&e.pop(),o<t.constant.length)return Zt(t.constant[o]).callFn([...i,...e],n);if(t.variable!==null)return Zt(t.variable).callFn([...i,oo(e)],n);throw new Error("AssertionError: unable to call variadic function")}function iJ(t,i,e,n){return Ws(HP(t,i,e,n).toStmt())}var oJ=new Map([["window",he.resolveWindow],["document",he.resolveDocument],["body",he.resolveBody]]),rJ=new Map([["class","className"],["for","htmlFor"],["formaction","formAction"],["innerHtml","innerHTML"],["readonly","readOnly"],["tabindex","tabIndex"]]);function aJ(t){for(let i of t.units)sJ(i,i.create),E1(i,i.update)}function sJ(t,i){for(let e of i)switch(tr(e,n=>NL(t,n),$n.None),e.kind){case B.Text:Ze.replace(e,oZ(e.handle.slot,e.initialValue,e.sourceSpan));break;case B.ElementStart:Ze.replace(e,t.job.mode===cs.DomOnly?OZ(e.handle.slot,e.tag,e.attributes,e.localRefs,e.startSourceSpan):BK(e.handle.slot,e.tag,e.attributes,e.localRefs,e.startSourceSpan));break;case B.Element:Ze.replace(e,t.job.mode===cs.DomOnly?AZ(e.handle.slot,e.tag,e.attributes,e.localRefs,e.wholeSourceSpan):LK(e.handle.slot,e.tag,e.attributes,e.localRefs,e.wholeSourceSpan));break;case B.ElementEnd:Ze.replace(e,t.job.mode===cs.DomOnly?NZ(e.sourceSpan):VK(e.sourceSpan));break;case B.ContainerStart:Ze.replace(e,t.job.mode===cs.DomOnly?RZ(e.handle.slot,e.attributes,e.localRefs,e.startSourceSpan):zK(e.handle.slot,e.attributes,e.localRefs,e.startSourceSpan));break;case B.Container:Ze.replace(e,t.job.mode===cs.DomOnly?FZ(e.handle.slot,e.attributes,e.localRefs,e.wholeSourceSpan):jK(e.handle.slot,e.attributes,e.localRefs,e.wholeSourceSpan));break;case B.ContainerEnd:Ze.replace(e,t.job.mode===cs.DomOnly?LZ():$K());break;case B.I18nStart:Ze.replace(e,dZ(e.handle.slot,e.messageIndex,e.subTemplateIndex,e.sourceSpan));break;case B.I18nEnd:Ze.replace(e,CZ(e.sourceSpan));break;case B.I18n:Ze.replace(e,bZ(e.handle.slot,e.messageIndex,e.subTemplateIndex,e.sourceSpan));break;case B.I18nAttributes:if(e.i18nAttributesConfig===null)throw new Error("AssertionError: i18nAttributesConfig was not set");Ze.replace(e,xZ(e.handle.slot,e.i18nAttributesConfig));break;case B.Template:if(!(t instanceof hl))throw new Error("AssertionError: must be compiling a component");if(Array.isArray(e.localRefs))throw new Error("AssertionError: local refs array should have been extracted into a constant");let n=t.job.views.get(e.xref);Ze.replace(e,e.templateKind===us.Block||t.job.mode===cs.DomOnly?VZ(e.handle.slot,si(n.fnName),n.decls,n.vars,e.tag,e.attributes,e.localRefs,e.startSourceSpan):HK(e.handle.slot,si(n.fnName),n.decls,n.vars,e.tag,e.attributes,e.localRefs,e.startSourceSpan));break;case B.DisableBindings:Ze.replace(e,UK());break;case B.EnableBindings:Ze.replace(e,GK());break;case B.Pipe:Ze.replace(e,XK(e.handle.slot,e.name));break;case B.DeclareLet:Ze.replace(e,gZ(e.handle.slot,e.sourceSpan));break;case B.AnimationString:Ze.replace(e,qZ(e.animationKind,e.expression,e.sanitizer,e.sourceSpan));break;case B.Animation:let o=nx(t,e.handlerFnName,e.handlerOps,!1);Ze.replace(e,WZ(e.animationKind,o,e.sanitizer,e.sourceSpan));break;case B.AnimationListener:let r=nx(t,e.handlerFnName,e.handlerOps,e.consumesDollarEvent);Ze.replace(e,XZ(e.animationKind,r,null,e.sourceSpan));break;case B.Listener:let a=nx(t,e.handlerFnName,e.handlerOps,e.consumesDollarEvent),c=e.eventTarget?oJ.get(e.eventTarget):null;if(c===void 0)throw new Error(`Unexpected global target '${e.eventTarget}' defined for '${e.name}' event. Supported list of global targets: window,document,body.`);Ze.replace(e,t.job.mode===cs.DomOnly&&!e.hostListener&&!e.isLegacyAnimationListener?BZ(e.name,a,c,e.sourceSpan):WK(e.name,a,c,e.hostListener&&e.isLegacyAnimationListener,e.sourceSpan));break;case B.TwoWayListener:Ze.replace(e,qK(e.name,nx(t,e.handlerFnName,e.handlerOps,!0),e.sourceSpan));break;case B.Variable:if(e.variable.name===null)throw new Error(`AssertionError: unnamed variable ${e.xref}`);Ze.replace(e,Ws(new qr(e.variable.name,e.initializer,void 0,fa.Final)));break;case B.Namespace:switch(e.active){case Ia.HTML:Ze.replace(e,QK());break;case Ia.SVG:Ze.replace(e,YK());break;case Ia.Math:Ze.replace(e,KK());break}break;case B.Defer:let m=!!e.loadingMinimumTime||!!e.loadingAfterTime||!!e.placeholderMinimumTime;Ze.replace(e,rZ(e.handle.slot,e.mainSlot.slot,e.resolverFn,e.loadingSlot?.slot??null,e.placeholderSlot?.slot??null,e.errorSlot?.slot??null,e.loadingConfig,e.placeholderConfig,m,e.sourceSpan,e.flags));break;case B.DeferOn:let p=[];switch(e.trigger.kind){case po.Never:case po.Idle:case po.Immediate:break;case po.Timer:p=[Ee(e.trigger.delay)];break;case po.Viewport:e.modifier==="hydrate"?p=e.trigger.options?[e.trigger.options]:[]:(p=[Ee(e.trigger.targetSlot?.slot??null)],e.trigger.targetSlotViewSteps!==0?p.push(Ee(e.trigger.targetSlotViewSteps)):e.trigger.options&&p.push(Ee(null)),e.trigger.options&&p.push(e.trigger.options));break;case po.Interaction:case po.Hover:e.modifier==="hydrate"?p=[]:(p=[Ee(e.trigger.targetSlot?.slot??null)],e.trigger.targetSlotViewSteps!==0&&p.push(Ee(e.trigger.targetSlotViewSteps)));break;default:throw new Error(`AssertionError: Unsupported reification of defer trigger kind ${e.trigger.kind}`)}Ze.replace(e,sZ(e.trigger.kind,p,e.modifier,e.sourceSpan));break;case B.ProjectionDef:Ze.replace(e,lZ(e.def));break;case B.Projection:if(e.handle.slot===null)throw new Error("No slot was assigned for project instruction");let h=null,g=null,M=null;if(e.fallbackView!==null){if(!(t instanceof hl))throw new Error("AssertionError: must be compiling a component");let E=t.job.views.get(e.fallbackView);if(E===void 0)throw new Error("AssertionError: projection had fallback view xref, but fallback view was not found");if(E.fnName===null||E.decls===null||E.vars===null)throw new Error("AssertionError: expected projection fallback view to have been named and counted");h=E.fnName,g=E.decls,M=E.vars}Ze.replace(e,cZ(e.handle.slot,e.projectionSlotIndex,e.attributes,h,g,M,e.sourceSpan));break;case B.ConditionalCreate:if(!(t instanceof hl))throw new Error("AssertionError: must be compiling a component");if(Array.isArray(e.localRefs))throw new Error("AssertionError: local refs array should have been extracted into a constant");let C=t.job.views.get(e.xref);Ze.replace(e,mZ(e.handle.slot,si(C.fnName),C.decls,C.vars,e.tag,e.attributes,e.localRefs,e.startSourceSpan));break;case B.ConditionalBranchCreate:if(!(t instanceof hl))throw new Error("AssertionError: must be compiling a component");if(Array.isArray(e.localRefs))throw new Error("AssertionError: local refs array should have been extracted into a constant");let _=t.job.views.get(e.xref);Ze.replace(e,pZ(e.handle.slot,si(_.fnName),_.decls,_.vars,e.tag,e.attributes,e.localRefs,e.startSourceSpan));break;case B.RepeaterCreate:if(e.handle.slot===null)throw new Error("No slot was assigned for repeater instruction");if(!(t instanceof hl))throw new Error("AssertionError: must be compiling a component");let w=t.job.views.get(e.xref);if(w.fnName===null)throw new Error("AssertionError: expected repeater primary view to have been named");let S=null,y=null,k=null;if(e.emptyView!==null){let E=t.job.views.get(e.emptyView);if(E===void 0)throw new Error("AssertionError: repeater had empty view xref, but empty view was not found");if(E.fnName===null||E.decls===null||E.vars===null)throw new Error("AssertionError: expected repeater empty view to have been named and counted");S=E.fnName,y=E.decls,k=E.vars}Ze.replace(e,uZ(e.handle.slot,w.fnName,e.decls,e.vars,e.tag,e.attributes,dJ(t,e),e.usesComponentInstance,S,y,k,e.emptyTag,e.emptyAttributes,e.wholeSourceSpan));break;case B.SourceLocation:let I=oo(e.locations.map(({targetSlot:E,offset:N,line:T,column:R})=>{if(E.slot===null)throw new Error("No slot was assigned for source location");return oo([Ee(E.slot),Ee(N),Ee(T),Ee(R)])}));Ze.replace(e,KZ(e.templatePath,I));break;case B.ControlCreate:Ze.replace(e,MZ(e.sourceSpan));break;case B.Statement:break;default:throw new Error(`AssertionError: Unsupported reification of create op ${B[e.kind]}`)}}function E1(t,i){for(let e of i)switch(tr(e,n=>NL(t,n),$n.None),e.kind){case B.Advance:Ze.replace(e,ZK(e.delta,e.sourceSpan));break;case B.Property:Ze.replace(e,t.job.mode===cs.DomOnly&&e.bindingKind!==Qt.LegacyAnimation&&e.bindingKind!==Qt.Animation?KF(e):lJ(e));break;case B.Control:Ze.replace(e,cJ(e));break;case B.TwoWayProperty:Ze.replace(e,kZ(e.name,e.expression,e.sanitizer,e.sourceSpan));break;case B.StyleProp:Ze.replace(e,EZ(e.name,e.expression,e.unit,e.sourceSpan));break;case B.ClassProp:Ze.replace(e,DZ(e.name,e.expression,e.sourceSpan));break;case B.StyleMap:Ze.replace(e,PZ(e.expression,e.sourceSpan));break;case B.ClassMap:Ze.replace(e,IZ(e.expression,e.sourceSpan));break;case B.I18nExpression:Ze.replace(e,HZ(e.expression,e.sourceSpan));break;case B.I18nApply:Ze.replace(e,UZ(e.handle.slot,e.sourceSpan));break;case B.InterpolateText:Ze.replace(e,$Z(e.interpolation.strings,e.interpolation.expressions,e.sourceSpan));break;case B.Attribute:Ze.replace(e,TZ(e.name,e.expression,e.sanitizer,e.namespace,e.sourceSpan));break;case B.DomProperty:if(e.expression instanceof er)throw new Error("not yet handled");e.bindingKind===Qt.LegacyAnimation||e.bindingKind===Qt.Animation?Ze.replace(e,QZ(e.name,e.expression,e.sourceSpan)):Ze.replace(e,KF(e));break;case B.Variable:if(e.variable.name===null)throw new Error(`AssertionError: unnamed variable ${e.xref}`);Ze.replace(e,Ws(new qr(e.variable.name,e.initializer,void 0,fa.Final)));break;case B.Conditional:if(e.processed===null)throw new Error("Conditional test was not set.");Ze.replace(e,JZ(e.processed,e.contextValue,e.sourceSpan));break;case B.Repeater:Ze.replace(e,hZ(e.collection,e.sourceSpan));break;case B.DeferWhen:Ze.replace(e,fZ(e.modifier,e.expr,e.sourceSpan));break;case B.StoreLet:throw new Error(`AssertionError: unexpected storeLet ${e.declaredName}`);case B.Statement:break;default:throw new Error(`AssertionError: Unsupported reification of update op ${B[e.kind]}`)}}function KF(t){return GZ(rJ.get(t.name)??t.name,t.expression,t.sanitizer,t.sourceSpan)}function lJ(t){return vL(t.name)?yZ(t.name,t.expression,t.sourceSpan):SZ(t.name,t.expression,t.sanitizer,t.sourceSpan)}function cJ(t){return wZ(t.sourceSpan)}function NL(t,i){if(!jc(i))return i;switch(i.kind){case en.NextContext:return eZ(i.steps);case en.Reference:return JK(i.targetSlot.slot+1+i.offset);case en.LexicalRead:throw new Error(`AssertionError: unresolved LexicalRead of ${i.name}`);case en.TwoWayBindingSet:throw new Error("AssertionError: unresolved TwoWayBindingSet");case en.RestoreView:if(typeof i.view=="number")throw new Error("AssertionError: unresolved RestoreView");return nZ(i.view);case en.ResetView:return iZ(i.expr);case en.GetCurrentView:return tZ();case en.ReadVariable:if(i.name===null)throw new Error(`Read of unnamed variable ${i.xref}`);return si(i.name);case en.ReadTemporaryExpr:if(i.name===null)throw new Error(`Read of unnamed temporary ${i.xref}`);return si(i.name);case en.AssignTemporaryExpr:if(i.name===null)throw new Error(`Assign of unnamed temporary ${i.xref}`);return si(i.name).set(i.expr);case en.PureFunctionExpr:if(i.fn===null)throw new Error("AssertionError: expected PureFunctions to have been extracted");return YZ(i.varOffset,i.fn,i.args);case en.PureFunctionParameterExpr:throw new Error("AssertionError: expected PureFunctionParameterExpr to have been extracted");case en.PipeBinding:return zZ(i.targetSlot.slot,i.varOffset,i.args);case en.PipeBindingVariadic:return jZ(i.targetSlot.slot,i.varOffset,i.args);case en.SlotLiteralExpr:return Ee(i.slot.slot);case en.ContextLetReference:return vZ(i.targetSlot.slot);case en.StoreLet:return _Z(i.value,i.sourceSpan);case en.TrackContext:return si("this");case en.ArrowFunction:if(i.varOffset===null)throw new Error("AssertionError: variable offset was not assigned to arrow function");return ZZ(i.varOffset,t.job.pool.getSharedFunctionReference(mJ(t,i),"arrowFn"),si(Gs));default:throw new Error(`AssertionError: Unsupported reification of ir.Expression kind: ${en[i.kind]}`)}}function nx(t,i,e,n){E1(t,e);let o=[];for(let a of e){if(a.kind!==B.Statement)throw new Error(`AssertionError: expected reified statements, but found op ${B[a.kind]}`);o.push(a.statement)}let r=[];return n&&r.push(new Ir("$event",hs)),Nm(r,o,void 0,void 0,i)}function dJ(t,i){if(i.trackByFn!==null)return i.trackByFn;let e=[new Ir("$index",bu),new Ir("$item",hs)],n;if(i.trackByOps===null)n=i.usesComponentInstance?Nm(e,[new Ar(i.track)]):Us(e,i.track);else{E1(t,i.trackByOps);let o=[];for(let r of i.trackByOps){if(r.kind!==B.Statement)throw new Error(`AssertionError: expected reified statements, but found op ${B[r.kind]}`);o.push(r.statement)}n=i.usesComponentInstance||o.length!==1||!(o[0]instanceof Ar)?Nm(e,o):Us(e,o[0].value)}return i.trackByFn=t.job.pool.getSharedFunctionReference(n,"_forTrack"),i.trackByFn}function mJ(t,i){E1(t,i.ops);let e=[];for(let o of i.ops){if(o.kind!==B.Statement)throw new Error(`AssertionError: expected reified statements, but found op ${B[o.kind]}`);e.push(o.statement)}let n=e.length===1&&e[0]instanceof Ar?e[0].value:e;return Us([new Ir(i.contextName,hs),new Ir(i.currentViewName,hs)],Us(i.parameters,n))}function pJ(t){for(let i of t.units)for(let e of i.update)switch(e.kind){case B.Attribute:case B.Binding:case B.ClassProp:case B.ClassMap:case B.Property:case B.StyleProp:case B.StyleMap:e.expression instanceof nv&&Ze.remove(e);break}}function uJ(t){for(let i of t.units)for(let e of i.create)switch(e.kind){case B.I18nContext:Ze.remove(e);break;case B.I18nStart:e.context=null;break}}function hJ(t){for(let i of t.units)for(let e of i.update){if(e.kind!==B.Variable||e.variable.kind!==oa.Identifier||!(e.initializer instanceof Z0))continue;let n=e.variable.identifier,o=e;for(;o&&o.kind!==B.ListEnd;)tr(o,r=>r instanceof na&&r.name===n?Ee(void 0):r,$n.None),o=o.prev}}function fJ(t){for(let i of t.units){let e=new Set;for(let n of i.update)n.kind===B.I18nExpression&&e.add(n.i18nOwner);for(let n of i.create)switch(n.kind){case B.I18nAttributes:if(e.has(n.xref))continue;Ze.remove(n)}}}function gJ(t){for(let i of t.units){for(let e of i.functions)p0(i,e.ops);p0(i,i.create),p0(i,i.update)}}function p0(t,i){let e=new Map;e.set(t.xref,si(Gs));for(let n of i)switch(n.kind){case B.Variable:n.variable.kind===oa.Context&&e.set(n.variable.view,new Id(n.xref));break;case B.Animation:case B.AnimationListener:case B.Listener:case B.TwoWayListener:p0(t,n.handlerOps);break;case B.RepeaterCreate:n.trackByOps!==null&&p0(t,n.trackByOps);break}t===t.job.root&&e.set(t.xref,si(Gs));for(let n of i)tr(n,o=>{if(o instanceof zm){if(!e.has(o.view))throw new Error(`No context found for reference to view ${o.view} from view ${t.xref}`);return e.get(o.view)}else return o},$n.None)}function _J(t){for(let i of t.units)for(let e of i.create)if(e.kind===B.Defer){if(e.resolverFn!==null)continue;if(e.ownResolverFn!==null){if(e.handle.slot===null)throw new Error("AssertionError: slot must be assigned before extracting defer deps functions");let n=i.fnName?.replace("_Template","");e.resolverFn=t.pool.getSharedFunctionReference(e.ownResolverFn,`${n}_Defer_${e.handle.slot}_DepsFn`,!1)}}}function vJ(t){for(let i of t.units)ZF(i.create),ZF(i.update)}function ZF(t){for(let i of t)(i.kind===B.Listener||i.kind===B.TwoWayListener||i.kind===B.AnimationListener)&&tr(i,e=>e instanceof na&&e.name==="$event"?((i.kind===B.Listener||i.kind===B.AnimationListener)&&(i.consumesDollarEvent=!0),new tc(e.name)):e,$n.InChildOperation)}function bJ(t){let i=new Map,e=new Map;for(let n of t.units)for(let o of n.create)switch(o.kind){case B.I18nContext:i.set(o.xref,o);break;case B.ElementStart:e.set(o.xref,o);break}Tc(t,t.root,i,e)}function Tc(t,i,e,n,o){let r=null,a=new Map;for(let c of i.create)switch(c.kind){case B.I18nStart:if(!c.context)throw Error("Could not find i18n context for i18n op");r={i18nBlock:c,i18nContext:e.get(c.context)};break;case B.I18nEnd:r=null;break;case B.ElementStart:if(c.i18nPlaceholder!==void 0){if(r===null)throw Error("i18n tag placeholder should only occur inside an i18n block");JF(c,r.i18nContext,r.i18nBlock,o),o&&c.i18nPlaceholder.closeName&&a.set(c.xref,o),o=void 0}break;case B.ElementEnd:let m=n.get(c.xref);if(m&&m.i18nPlaceholder!==void 0){if(r===null)throw Error("AssertionError: i18n tag placeholder should only occur inside an i18n block");e6(m,r.i18nContext,r.i18nBlock,a.get(c.xref)),a.delete(c.xref)}break;case B.Projection:if(c.i18nPlaceholder!==void 0){if(r===null)throw Error("i18n tag placeholder should only occur inside an i18n block");JF(c,r.i18nContext,r.i18nBlock,o),e6(c,r.i18nContext,r.i18nBlock,o),o=void 0}if(c.fallbackView!==null){let M=t.views.get(c.fallbackView);if(c.fallbackViewI18nPlaceholder===void 0)Tc(t,M,e,n);else{if(r===null)throw Error("i18n tag placeholder should only occur inside an i18n block");ix(t,M,c.handle.slot,c.fallbackViewI18nPlaceholder,r.i18nContext,r.i18nBlock,o),Tc(t,M,e,n),ox(t,M,c.handle.slot,c.fallbackViewI18nPlaceholder,r.i18nContext,r.i18nBlock,o),o=void 0}}break;case B.ConditionalCreate:case B.ConditionalBranchCreate:case B.Template:let p=t.views.get(c.xref);if(c.i18nPlaceholder===void 0)Tc(t,p,e,n);else{if(r===null)throw Error("i18n tag placeholder should only occur inside an i18n block");c.templateKind===us.Structural?Tc(t,p,e,n,c):(ix(t,p,c.handle.slot,c.i18nPlaceholder,r.i18nContext,r.i18nBlock,o),Tc(t,p,e,n),ox(t,p,c.handle.slot,c.i18nPlaceholder,r.i18nContext,r.i18nBlock,o),o=void 0)}break;case B.RepeaterCreate:if(o!==void 0)throw Error("AssertionError: Unexpected structural directive associated with @for block");let h=c.handle.slot+1,g=t.views.get(c.xref);if(c.i18nPlaceholder===void 0)Tc(t,g,e,n);else{if(r===null)throw Error("i18n tag placeholder should only occur inside an i18n block");ix(t,g,h,c.i18nPlaceholder,r.i18nContext,r.i18nBlock,o),Tc(t,g,e,n),ox(t,g,h,c.i18nPlaceholder,r.i18nContext,r.i18nBlock,o),o=void 0}if(c.emptyView!==null){let M=c.handle.slot+2,C=t.views.get(c.emptyView);if(c.emptyI18nPlaceholder===void 0)Tc(t,C,e,n);else{if(r===null)throw Error("i18n tag placeholder should only occur inside an i18n block");ix(t,C,M,c.emptyI18nPlaceholder,r.i18nContext,r.i18nBlock,o),Tc(t,C,e,n),ox(t,C,M,c.emptyI18nPlaceholder,r.i18nContext,r.i18nBlock,o),o=void 0}}break}}function JF(t,i,e,n){let{startName:o,closeName:r}=t.i18nPlaceholder,a=vo.ElementTag|vo.OpenTag,c=t.handle.slot;n!==void 0&&(a|=vo.TemplateTag,c={element:c,template:n.handle.slot}),r||(a|=vo.CloseTag),Sf(i.params,o,c,e.subTemplateIndex,a)}function e6(t,i,e,n){let{closeName:o}=t.i18nPlaceholder;if(o){let r=vo.ElementTag|vo.CloseTag,a=t.handle.slot;n!==void 0&&(r|=vo.TemplateTag,a={element:a,template:n.handle.slot}),Sf(i.params,o,a,e.subTemplateIndex,r)}}function ix(t,i,e,n,o,r,a){let{startName:c,closeName:m}=n,p=vo.TemplateTag|vo.OpenTag;m||(p|=vo.CloseTag),a!==void 0&&Sf(o.params,c,a.handle.slot,r.subTemplateIndex,p),Sf(o.params,c,e,RL(t,r,i),p)}function ox(t,i,e,n,o,r,a){let{closeName:c}=n,m=vo.TemplateTag|vo.CloseTag;c&&(Sf(o.params,c,e,RL(t,r,i),m),a!==void 0&&Sf(o.params,c,a.handle.slot,r.subTemplateIndex,m))}function RL(t,i,e){for(let n of e.create)if(n.kind===B.I18nStart)return n.subTemplateIndex;return i.subTemplateIndex}function Sf(t,i,e,n,o){let r=t.get(i)??[];r.push({value:e,subTemplateIndex:n,flags:o}),t.set(i,r)}function CJ(t){let i=new Map,e=new Map,n=new Map;for(let a of t.units)for(let c of a.create)switch(c.kind){case B.I18nStart:i.set(c.xref,c.subTemplateIndex);break;case B.I18nContext:e.set(c.xref,c);break;case B.IcuPlaceholder:n.set(c.xref,c);break}let o=new Map,r=a=>a.usage===kf.I18nText?a.i18nOwner:a.context;for(let a of t.units)for(let c of a.update)if(c.kind===B.I18nExpression){let m=o.get(r(c))||0,p=i.get(c.i18nOwner)??null,h={value:m,subTemplateIndex:p,flags:vo.ExpressionIndex};xJ(c,h,e,n),o.set(r(c),m+1)}}function xJ(t,i,e,n){if(t.i18nPlaceholder!==null){let o=e.get(t.context),r=t.resolutionTime===Y0.Creation?o.params:o.postprocessingParams,a=r.get(t.i18nPlaceholder)||[];a.push(i),r.set(t.i18nPlaceholder,a)}t.icuPlaceholder!==null&&n.get(t.icuPlaceholder)?.expressionPlaceholders.push(i)}function yJ(t){for(let i of t.units){for(let e of i.functions)u0(i,e.ops,null);u0(i,i.create,null),u0(i,i.update,null)}}function u0(t,i,e){let n=new Map,o=new Map;for(let r of i)switch(r.kind){case B.Variable:switch(r.variable.kind){case oa.Identifier:if(r.variable.local){if(o.has(r.variable.identifier))continue;o.set(r.variable.identifier,r.xref)}else if(n.has(r.variable.identifier))continue;n.set(r.variable.identifier,r.xref);break;case oa.Alias:if(n.has(r.variable.identifier))continue;n.set(r.variable.identifier,r.xref);break;case oa.SavedView:e={view:r.variable.view,variable:r.xref};break}break;case B.Animation:case B.AnimationListener:case B.Listener:case B.TwoWayListener:u0(t,r.handlerOps,e);break;case B.RepeaterCreate:r.trackByOps!==null&&u0(t,r.trackByOps,e);break}for(let r of i)r.kind===B.Listener||r.kind===B.TwoWayListener||r.kind===B.Animation||r.kind===B.AnimationListener||tr(r,a=>{if(a instanceof na)return o.has(a.name)?new Id(o.get(a.name)):n.has(a.name)?new Id(n.get(a.name)):new Hs(new zm(t.job.root.xref),a.name);if(a instanceof ev&&typeof a.view=="number"){if(e===null||e.view!==a.view)throw new Error(`AssertionError: no saved view ${a.view} from view ${t.xref}`);return a.view=new Id(e.variable),a}else return a},$n.None);for(let r of i)wr(r,a=>{if(a instanceof na)throw new Error(`AssertionError: no lexical reads should remain, but found read of ${a.name}`)})}var SJ=new Map([[uo.HTML,he.sanitizeHtml],[uo.RESOURCE_URL,he.sanitizeResourceUrl],[uo.SCRIPT,he.sanitizeScript],[uo.STYLE,he.sanitizeStyle],[uo.URL,he.sanitizeUrl],[uo.ATTRIBUTE_NO_BINDING,he.validateAttribute]]),wJ=new Map([[uo.HTML,he.trustConstantHtml],[uo.RESOURCE_URL,he.trustConstantResourceUrl]]);function MJ(t){for(let i of t.units){if(t.kind!==Vt.Host){for(let e of i.create)if(e.kind===B.ExtractedAttribute){let n=wJ.get(t6(e.securityContext))??null;e.trustedValueFn=n!==null?Zt(n):null}}for(let e of i.update)switch(e.kind){case B.Property:case B.Attribute:case B.DomProperty:let n=null;Array.isArray(e.securityContext)&&e.securityContext.length===2&&e.securityContext.includes(uo.URL)&&e.securityContext.includes(uo.RESOURCE_URL)?n=he.sanitizeUrlOrResourceUrl:n=SJ.get(t6(e.securityContext))??null,e.sanitizer=n!==null?Zt(n):null;break}}}function t6(t){if(Array.isArray(t)){if(t.length>1)throw Error("AssertionError: Ambiguous security context");return t[0]||uo.NONE}return t}function kJ(t){for(let i of t.units){for(let e of i.functions)n6(t,i,e.ops)&&i6(i,e.ops,si(e.currentViewName));i.create.prepend([Dm(i.job.allocateXrefId(),{kind:oa.SavedView,name:null,view:i.xref},new OD,pl.None)]);for(let e of i.create)(e.kind===B.Listener||e.kind===B.TwoWayListener||e.kind===B.Animation||e.kind===B.AnimationListener)&&n6(t,i,e.handlerOps)&&i6(i,e.handlerOps,i.xref)}}function n6(t,i,e){let n=i!==t.root;if(!n)for(let o of e)wr(o,r=>{(r instanceof Yx||r instanceof J0)&&(n=!0)});return n}function i6(t,i,e){i.prepend([Dm(t.job.allocateXrefId(),{kind:oa.Context,name:null,view:t.xref},new ev(e),pl.None)]);for(let n of i)n.kind===B.Statement&&n.statement instanceof Ar&&(n.statement.value=new Zx(n.statement.value))}function TJ(t){let i=new Map;for(let e of t.units){let n=0;for(let o of e.create)Tf(o)&&(o.handle.slot=n,i.set(o.xref,o.handle.slot),n+=o.numSlotsUsed);e.decls=n}for(let e of t.units)for(let n of e.ops())if(n.kind===B.Template||n.kind===B.ConditionalCreate||n.kind===B.ConditionalBranchCreate||n.kind===B.RepeaterCreate){let o=t.views.get(n.xref);n.decls=o.decls}}function EJ(t){let i=new Set,e=new Map;for(let n of t.units)for(let o of n.ops())o.kind===B.DeclareLet&&e.set(o.xref,o),wr(o,r=>{r instanceof J0&&i.add(r.target)});for(let n of t.units)for(let o of n.update)tr(o,r=>r instanceof Z0&&!i.has(r.target)?(DJ(r)||Ze.remove(e.get(r.target)),r.value):r,$n.None)}function DJ(t){let i=!1;return $t(t,e=>((e instanceof Iu||e instanceof tv)&&(i=!0),e),$n.None),i}function PJ(t){let i=new Set;for(let e of t.units)for(let n of e.ops())wr(n,o=>{if(o instanceof Mi)switch(o.operator){case ht.Exponentiation:IJ(o,i);break;case ht.NullishCoalesce:AJ(o,i);break;case ht.And:case ht.Or:OJ(o,i)}});for(let e of t.units)for(let n of e.ops())tr(n,o=>o instanceof nc?i.has(o)?o:o.expr:o,$n.None)}function IJ(t,i){t.lhs instanceof nc&&t.lhs.expr instanceof xu&&i.add(t.lhs)}function AJ(t,i){t.lhs instanceof nc&&(o6(t.lhs.expr)||t.lhs.expr instanceof Fc)&&i.add(t.lhs),t.rhs instanceof nc&&(o6(t.rhs.expr)||t.rhs.expr instanceof Fc)&&i.add(t.rhs)}function OJ(t,i){t.lhs instanceof nc&&t.lhs.expr instanceof Mi&&t.lhs.expr.operator===ht.NullishCoalesce&&i.add(t.lhs)}function o6(t){return t instanceof Mi&&(t.operator===ht.And||t.operator===ht.Or)}function NJ(t){for(let i of t.units)for(let e of i.update)if(e.kind===B.Binding)switch(e.bindingKind){case Qt.ClassName:if(e.expression instanceof er)throw new Error("Unexpected interpolation in ClassName binding");Ze.replace(e,oX(e.target,e.name,e.expression,e.sourceSpan));break;case Qt.StyleProperty:Ze.replace(e,iX(e.target,e.name,e.expression,e.unit,e.sourceSpan));break;case Qt.Property:case Qt.Template:e.name==="style"?Ze.replace(e,rX(e.target,e.expression,e.sourceSpan)):e.name==="class"&&Ze.replace(e,aX(e.target,e.expression,e.sourceSpan));break}}function RJ(t){for(let i of t.units){i.create.prepend(h0(i.create)),i.update.prepend(h0(i.update));for(let e of i.functions)e.ops.prepend(h0(e.ops))}}function h0(t){let i=0,e=[];for(let n of t){let o=new Map;wr(n,(p,h)=>{h&$n.InChildOperation||p instanceof $m&&o.set(p.xref,p)});let r=0,a=new Set,c=new Set,m=new Map;wr(n,(p,h)=>{h&$n.InChildOperation||(p instanceof $c?(a.has(p.xref)||(a.add(p.xref),m.set(p.xref,`tmp_${i}_${r++}`)),r6(m,p)):p instanceof $m&&(o.get(p.xref)===p&&(c.add(p.xref),r--),r6(m,p)))}),e.push(...Array.from(new Set(m.values())).map(p=>Ws(new qr(p)))),i++,n.kind===B.Listener||n.kind===B.Animation||n.kind===B.AnimationListener||n.kind===B.TwoWayListener?n.handlerOps.prepend(h0(n.handlerOps)):n.kind===B.RepeaterCreate&&n.trackByOps!==null&&n.trackByOps.prepend(h0(n.trackByOps))}return e}function r6(t,i){let e=t.get(i.xref);if(e===void 0)throw new Error(`Found xref with unassigned name: ${i.xref}`);i.name=e}function FJ(t){for(let i of t.units)for(let e of i.create)if(e.kind===B.RepeaterCreate)if(e.track instanceof tc&&e.track.name==="$index")e.trackByFn=Zt(he.repeaterTrackByIndex);else if(e.track instanceof tc&&e.track.name==="$item")e.trackByFn=Zt(he.repeaterTrackByIdentity);else if(LJ(t.root.xref,e.track))e.usesComponentInstance=!0,e.track.receiver.receiver.view===i.xref?e.trackByFn=e.track.receiver:(e.trackByFn=Zt(he.componentInstance).callFn([]).prop(e.track.receiver.name),e.track=e.trackByFn);else{e.track=$t(e.track,o=>{if(o instanceof Iu||o instanceof tv)throw new Error("Illegal State: Pipes are not allowed in this context");return o instanceof zm?(e.usesComponentInstance=!0,new AD(o.view)):o},$n.None);let n=new Ze;n.push(Ws(new Ar(e.track,e.track.sourceSpan))),e.trackByOps=n}}function LJ(t,i){if(!(i instanceof fs)||i.args.length===0||i.args.length>2||!(i.receiver instanceof Hs&&i.receiver.receiver instanceof zm)||i.receiver.receiver.view!==t)return!1;let[e,n]=i.args;return!(e instanceof tc)||e.name!=="$index"?!1:i.args.length===1?!0:!(!(n instanceof tc)||n.name!=="$item")}function BJ(t){for(let i of t.units)for(let e of i.create)e.kind===B.RepeaterCreate&&(e.track=$t(e.track,n=>{if(n instanceof na){if(e.varNames.$index.has(n.name))return si("$index");if(n.name===e.varNames.$implicit)return si("$item")}return n},$n.None))}function VJ(t){for(let i of t.units)for(let e of i.create)e.kind===B.TwoWayListener&&tr(e,n=>{if(!(n instanceof Jx))return n;let{target:o,value:r}=n;if(o instanceof Hs||o instanceof Ad)return QF(o,r).or(o.set(r));if(o instanceof Id)return QF(o,r);throw new Error("Unsupported expression in two-way action binding.")},$n.InChildOperation)}function zJ(t){for(let i of t.units){let e=0;for(let r of i.ops())OE(r)&&(e+=jJ(r));let n=r=>{jc(r)&&(r instanceof Pu||(mF(r)&&(r.varOffset=e),OE(r)&&(e+=a6(r))))},o=r=>{!jc(r)||!(r instanceof Pu)||(mF(r)&&(r.varOffset=e),OE(r)&&(e+=a6(r)))};for(let r of i.create)wr(r,n);for(let r of i.update)wr(r,n);for(let r of i.create)wr(r,o);for(let r of i.update)wr(r,o);i.vars=e}if(t instanceof ov)for(let i of t.units)for(let e of i.create){if(e.kind!==B.Template&&e.kind!==B.RepeaterCreate&&e.kind!==B.ConditionalCreate&&e.kind!==B.ConditionalBranchCreate)continue;let n=t.views.get(e.xref);e.vars=n.vars}}function jJ(t){let i;switch(t.kind){case B.Attribute:return i=1,t.expression instanceof er&&!$J(t.expression)&&(i+=t.expression.expressions.length),i;case B.Property:case B.DomProperty:return i=1,t.expression instanceof er&&(i+=t.expression.expressions.length),i;case B.Control:return 2;case B.TwoWayProperty:return 1;case B.StyleProp:case B.ClassProp:case B.StyleMap:case B.ClassMap:return i=2,t.expression instanceof er&&(i+=t.expression.expressions.length),i;case B.InterpolateText:return t.interpolation.expressions.length;case B.I18nExpression:case B.Conditional:case B.DeferWhen:case B.StoreLet:return 1;case B.RepeaterCreate:return t.emptyView?1:0;default:throw new Error(`Unhandled op: ${B[t.kind]}`)}}function a6(t){switch(t.kind){case en.PureFunctionExpr:return 1+t.args.length;case en.PipeBinding:return 1+t.args.length;case en.PipeBindingVariadic:return 1+t.numArgs;case en.StoreLet:case en.ArrowFunction:return 1;default:throw new Error(`AssertionError: unhandled ConsumesVarsTrait expression ${t.constructor.name}`)}}function $J(t){return!(t.expressions.length!==1||t.strings.length!==2||t.strings[0]!==""||t.strings[1]!=="")}function HJ(t){for(let i of t.units){for(let e of i.functions)Z_(e.ops);Z_(i.create),Z_(i.update);for(let e of i.create)e.kind===B.Listener||e.kind===B.Animation||e.kind===B.AnimationListener||e.kind===B.TwoWayListener?Z_(e.handlerOps):e.kind===B.RepeaterCreate&&e.trackByOps!==null&&Z_(e.trackByOps);for(let e of i.functions)J_(e.ops,null),s6(e.ops);for(let e of i.create)e.kind===B.Listener||e.kind===B.Animation||e.kind===B.AnimationListener||e.kind===B.TwoWayListener?(J_(e.handlerOps,rx),s6(e.handlerOps)):e.kind===B.RepeaterCreate&&e.trackByOps!==null&&J_(e.trackByOps,rx);J_(i.create,rx),J_(i.update,rx)}}var Wr=(function(t){return t[t.None=0]="None",t[t.ViewContextRead=1]="ViewContextRead",t[t.ViewContextWrite=2]="ViewContextWrite",t[t.SideEffectful=4]="SideEffectful",t})(Wr||{});function rx(t){return!(t&$n.InArrowFunctionOperation)}function Z_(t){let i=new Map;for(let e of t)e.kind===B.Variable&&e.flags&pl.AlwaysInline&&(wr(e,n=>{if(jc(n)&&UP(n)!==Wr.None)throw new Error("AssertionError: A context-sensitive variable was marked AlwaysInline")}),i.set(e.xref,e)),tr(e,n=>n instanceof Id&&i.has(n.xref)?i.get(n.xref).initializer.clone():n,$n.None);for(let e of i.values())Ze.remove(e)}function J_(t,i){let e=new Map,n=new Map,o=new Set,r=new Map;for(let p of t){if(p.kind===B.Variable){if(e.has(p.xref)||n.has(p.xref))throw new Error(`Should not see two declarations of the same variable: ${p.xref}`);e.set(p.xref,p),n.set(p.xref,0)}r.set(p,UJ(p,i)),GJ(p,n,o,i)}let a=!1;for(let p of t.reversed()){let h=r.get(p);if(p.kind===B.Variable&&n.get(p.xref)===0){if(a&&h.fences&Wr.ViewContextWrite||h.fences&Wr.SideEffectful){let g=Ws(p.initializer.toStmt());r.set(g,h),Ze.replace(p,g)}else WJ(p,n),Ze.remove(p);r.delete(p),e.delete(p.xref),n.delete(p.xref);continue}h.fences&Wr.ViewContextRead&&(a=!0)}let c=[];for(let[p,h]of n){let M=!!(e.get(p).flags&pl.AlwaysInline);h!==1||M||o.has(p)||c.push(p)}let m;for(;m=c.pop();){let p=e.get(m),h=r.get(p);if(!!(p.flags&pl.AlwaysInline))throw new Error("AssertionError: Found an 'AlwaysInline' variable after the always inlining pass.");for(let M=p.next;M.kind!==B.ListEnd;M=M.next){let C=r.get(M);if(C.variablesUsed.has(m)){if(!XJ(p,M))break;if(qJ(m,p.initializer,M,h.fences)){C.variablesUsed.delete(m);for(let _ of h.variablesUsed)C.variablesUsed.add(_);C.fences|=h.fences,e.delete(m),n.delete(m),r.delete(p),Ze.remove(p)}break}if(!FL(C.fences,h.fences))break}}}function UP(t){switch(t.kind){case en.NextContext:return Wr.ViewContextRead|Wr.ViewContextWrite;case en.RestoreView:return Wr.ViewContextRead|Wr.ViewContextWrite|Wr.SideEffectful;case en.StoreLet:return Wr.SideEffectful;case en.Reference:case en.ContextLetReference:return Wr.ViewContextRead;default:return Wr.None}}function UJ(t,i){let e=Wr.None,n=new Set;return wr(t,(o,r)=>{!jc(o)||i!==null&&!i(r)||(o.kind===en.ReadVariable?n.add(o.xref):e|=UP(o))}),{fences:e,variablesUsed:n}}function GJ(t,i,e,n){wr(t,(o,r)=>{if(!jc(o)||n!==null&&!n(r)||o.kind!==en.ReadVariable)return;let a=i.get(o.xref);a!==void 0&&(i.set(o.xref,a+1),r&$n.InChildOperation&&e.add(o.xref))})}function WJ(t,i){wr(t,e=>{if(!jc(e)||e.kind!==en.ReadVariable)return;let n=i.get(e.xref);if(n!==void 0){if(n===0)throw new Error(`Inaccurate variable count: ${e.xref} - found another read but count is already 0`);i.set(e.xref,n-1)}})}function FL(t,i){if(t&Wr.ViewContextWrite){if(i&Wr.ViewContextRead)return!1}else if(t&Wr.ViewContextRead&&i&Wr.ViewContextWrite)return!1;return!0}function qJ(t,i,e,n){let o=!1,r=!0;return tr(e,(a,c)=>{if(!jc(a)||o||!r)return a;if(c&$n.InChildOperation&&n&Wr.ViewContextRead)return a;switch(a.kind){case en.ReadVariable:if(a.xref===t)return o=!0,i;break;default:let m=UP(a);r=r&&FL(m,n);break}return a},$n.None),o}function XJ(t,i){switch(t.variable.kind){case oa.Identifier:return t.initializer instanceof tc&&t.initializer.name===Gs;case oa.Context:return i.kind===B.Variable;default:return!0}}function s6(t){let i=t.head.next,e=t.tail.prev;i!==null&&e!==null&&i.next===e&&i.kind===B.Statement&&i.statement instanceof va&&i.statement.expr instanceof ev&&e.kind===B.Statement&&e.statement instanceof Ar&&e.statement.value instanceof Zx&&(Ze.remove(i),e.statement.value=e.statement.value.expr)}function QJ(t){for(let i of t.units){let e=null,n=null;for(let o of i.create)switch(o.kind){case B.I18nStart:e=o;break;case B.I18nEnd:e=null;break;case B.IcuStart:e===null&&(n=t.allocateXrefId(),Ze.insertBefore(k1(n,o.message,void 0,null),o));break;case B.IcuEnd:n!==null&&(Ze.insertAfter(T1(n,null),o),n=null);break}}}function YJ(t){for(let i of t.units){for(let e of i.create)e.kind!==B.Animation&&e.kind!==B.AnimationListener&&e.kind!==B.Listener&&e.kind!==B.TwoWayListener&&l6(i,e);for(let e of i.update)l6(i,e)}}function l6(t,i){tr(i,(e,n)=>{if(!(e instanceof Nu)||n&$n.InChildOperation)return e;if(Array.isArray(e.body))throw new Error("AssertionError: unexpected multi-line arrow function");let o=new ND(e.params,e.body);return t.functions.add(o),o},$n.None)}var KJ=new Set(["formField"]);function ZJ(t){for(let i of t.units)JJ(i)}function JJ(t){for(let i of t.update)i.kind===B.Property&&KJ.has(i.name)&&iee(t,i)}var eee=new Set([B.Container,B.ContainerStart,B.ContainerEnd,B.Element,B.ElementStart,B.ElementEnd,B.Template]);function tee(t){return eee.has(t.kind)}function nee(t,i){let e=null;for(let n of t.create)!tee(n)||n.xref!==i||(e=n);return e}function iee(t,i){let e=nee(t,i.target);if(e===null)throw new Error(`No create instruction found for control target ${i.target}`);let n=AX(i.sourceSpan);Ze.insertAfter(n,e),Ze.insertAfter(pX(i.target,i.sourceSpan),i)}var oee=[{kind:Vt.Tmpl,fn:SK},{kind:Vt.Both,fn:FK},{kind:Vt.Host,fn:FQ},{kind:Vt.Tmpl,fn:aK},{kind:Vt.Tmpl,fn:PK},{kind:Vt.Tmpl,fn:QJ},{kind:Vt.Both,fn:oQ},{kind:Vt.Both,fn:NJ},{kind:Vt.Both,fn:HX},{kind:Vt.Tmpl,fn:ZJ},{kind:Vt.Both,fn:eQ},{kind:Vt.Both,fn:zX},{kind:Vt.Tmpl,fn:iQ},{kind:Vt.Both,fn:lK},{kind:Vt.Tmpl,fn:pJ},{kind:Vt.Both,fn:WX},{kind:Vt.Both,fn:yK},{kind:Vt.Tmpl,fn:qX},{kind:Vt.Tmpl,fn:kK},{kind:Vt.Tmpl,fn:rQ},{kind:Vt.Tmpl,fn:DK},{kind:Vt.Both,fn:YJ},{kind:Vt.Both,fn:OK},{kind:Vt.Tmpl,fn:AQ},{kind:Vt.Tmpl,fn:IQ},{kind:Vt.Tmpl,fn:OQ},{kind:Vt.Tmpl,fn:kJ},{kind:Vt.Both,fn:NX},{kind:Vt.Both,fn:vJ},{kind:Vt.Tmpl,fn:BJ},{kind:Vt.Tmpl,fn:hJ},{kind:Vt.Both,fn:yJ},{kind:Vt.Tmpl,fn:aQ},{kind:Vt.Tmpl,fn:VJ},{kind:Vt.Tmpl,fn:FJ},{kind:Vt.Both,fn:gJ},{kind:Vt.Both,fn:MJ},{kind:Vt.Tmpl,fn:oK},{kind:Vt.Both,fn:mQ},{kind:Vt.Both,fn:PJ},{kind:Vt.Both,fn:RJ},{kind:Vt.Both,fn:HJ},{kind:Vt.Both,fn:EJ},{kind:Vt.Tmpl,fn:iK},{kind:Vt.Tmpl,fn:nQ},{kind:Vt.Tmpl,fn:fJ},{kind:Vt.Tmpl,fn:BX},{kind:Vt.Tmpl,fn:FX},{kind:Vt.Tmpl,fn:TJ},{kind:Vt.Tmpl,fn:bJ},{kind:Vt.Tmpl,fn:CJ},{kind:Vt.Tmpl,fn:kQ},{kind:Vt.Tmpl,fn:ZY},{kind:Vt.Tmpl,fn:NQ},{kind:Vt.Both,fn:KX},{kind:Vt.Tmpl,fn:uJ},{kind:Vt.Both,fn:zJ},{kind:Vt.Tmpl,fn:PQ},{kind:Vt.Both,fn:cK},{kind:Vt.Tmpl,fn:_J},{kind:Vt.Tmpl,fn:pK},{kind:Vt.Tmpl,fn:hK},{kind:Vt.Tmpl,fn:dQ},{kind:Vt.Tmpl,fn:VX},{kind:Vt.Tmpl,fn:gK},{kind:Vt.Both,fn:AK},{kind:Vt.Both,fn:aJ},{kind:Vt.Both,fn:GX}];function LL(t,i){for(let e of oee)(e.kind===i||e.kind===Vt.Both)&&e.fn(t)}function ree(t,i){let e=VL(t.root);return BL(t.root,i),e}function BL(t,i){for(let e of t.job.units){if(e.parent!==t.xref)continue;BL(e,i);let n=VL(e);i.statements.push(n.toDeclStmt(n.name))}}function VL(t){if(t.fnName===null)throw new Error(`AssertionError: view ${t.xref} is unnamed`);let i=[];for(let r of t.create){if(r.kind!==B.Statement)throw new Error(`AssertionError: expected all create ops to have been compiled, but got ${B[r.kind]}`);i.push(r.statement)}let e=[];for(let r of t.update){if(r.kind!==B.Statement)throw new Error(`AssertionError: expected all update ops to have been compiled, but got ${B[r.kind]}`);e.push(r.statement)}let n=f1(1,i),o=f1(2,e);return Nm([new Ir(wf,bu),new Ir(Gs,hs)],[...n,...o],void 0,void 0,t.fnName)}function f1(t,i){return i.length===0?[]:[y1(new Mi(ht.BitwiseAnd,si(wf),Ee(t)),i)]}function aee(t){if(t.root.fnName===null)throw new Error("AssertionError: host binding function is unnamed");let i=[];for(let r of t.root.create){if(r.kind!==B.Statement)throw new Error(`AssertionError: expected all create ops to have been compiled, but got ${B[r.kind]}`);i.push(r.statement)}let e=[];for(let r of t.root.update){if(r.kind!==B.Statement)throw new Error(`AssertionError: expected all update ops to have been compiled, but got ${B[r.kind]}`);e.push(r.statement)}if(i.length===0&&e.length===0)return null;let n=f1(1,i),o=f1(2,e);return Nm([new Ir(wf,bu),new Ir(Gs,hs)],[...n,...o],void 0,void 0,t.root.fnName)}var _u=new yf,vu="ng-template",see="animate.";function ux(t){return t instanceof Qa}function lee(t){return ux(t)&&t.nodes.length===1&&t.nodes[0]instanceof Hx}function cee(t,i,e,n,o,r,a,c,m,p){let h=new ov(t,e,n,o,r,a,c,m,p);return Nd(h.root,i),h}function dee(t,i,e){let n=new r1(t.componentName,e,cs.DomOnly);for(let o of t.properties??[]){let r=Qt.Property;o.name.startsWith("attr.")&&(o.name=o.name.substring(5),r=Qt.Attribute),o.isLegacyAnimation&&(r=Qt.LegacyAnimation),o.isAnimation&&(r=Qt.Animation);let a=i.calcPossibleSecurityContexts(t.componentSelector,o.name,r===Qt.Attribute).filter(c=>c!==uo.NONE);mee(n,o,r,a)}for(let[o,r]of Object.entries(t.attributes)??[]){let a=i.calcPossibleSecurityContexts(t.componentSelector,o,!0).filter(c=>c!==uo.NONE);pee(n,o,r,a)}for(let o of t.events??[])uee(n,o);return n}function mee(t,i,e,n){let o,r=i.expression.ast;r instanceof hv?o=new er(r.strings,r.expressions.map(a=>Rn(a,t,i.sourceSpan)),[]):o=Rn(r,t,i.sourceSpan),t.root.update.push(Du(t.root.xref,e,i.name,o,null,n,!1,!1,null,null,i.sourceSpan))}function pee(t,i,e,n){let o=Du(t.root.xref,Qt.Attribute,i,e,null,n,!0,!1,null,null,e.sourceSpan);t.root.update.push(o)}function uee(t,i){let e;if(i.type===Xa.Animation)e=uL(t.root.xref,new ba,i.name,null,cv(t.root,i.handler,i.handlerSpan),i.name.endsWith("enter")?"enter":"leave",i.targetOrPhase,!0,i.sourceSpan);else{let[n,o]=i.type!==Xa.LegacyAnimation?[null,i.targetOrPhase]:[i.targetOrPhase,null];e=jP(t.root.xref,new ba,i.name,null,cv(t.root,i.handler,i.handlerSpan),n,o,!0,i.sourceSpan)}t.root.create.push(e)}function Nd(t,i){for(let e of i)if(e instanceof Vc)hee(t,e);else if(e instanceof js)fee(t,e);else if(e instanceof ff)gee(t,e);else if(e instanceof cu)zL(t,e,null);else if(e instanceof pf)jL(t,e,null);else if(e instanceof jx)_ee(t,e);else if(e instanceof zx)vee(t,e);else if(e instanceof Tu)bee(t,e);else if(e instanceof B6)xee(t,e);else if(e instanceof hf)yee(t,e);else if(e instanceof IP)wee(t,e);else if(!(e instanceof l0))throw new Error(`Unsupported template node: ${e.constructor.name}`)}function hee(t,i){if(i.i18n!==void 0&&!(i.i18n instanceof Qa||i.i18n instanceof Fm))throw Error(`Unhandled i18n metadata type for element: ${i.i18n.constructor.name}`);let e=t.job.allocateXrefId(),[n,o]=oc(i.name),r=hX(o,e,bL(n),i.i18n instanceof Fm?i.i18n:void 0,i.startSourceSpan,i.sourceSpan);t.create.push(r),kee(t,r,i),UL(r,i);let a=null;i.i18n instanceof Qa&&(a=t.job.allocateXrefId(),t.create.push(k1(a,i.i18n,void 0,i.startSourceSpan))),Nd(t,i.children);let c=gX(e,i.endSourceSpan??i.startSourceSpan);t.create.push(c),a!==null&&Ze.insertBefore(T1(a,i.endSourceSpan??i.startSourceSpan),c)}function fee(t,i){if(i.i18n!==void 0&&!(i.i18n instanceof Qa||i.i18n instanceof Fm))throw Error(`Unhandled i18n metadata type for template: ${i.i18n.constructor.name}`);let e=t.job.allocateView(t.xref),n=i.tagName,o="";i.tagName&&([o,n]=oc(i.tagName));let r=i.i18n instanceof Fm?i.i18n:void 0,a=bL(o),c=n===null?"":YX(n,a),m=Mee(i)?us.NgTemplate:us.Structural,p=cL(e.xref,m,n,c,a,r,i.startSourceSpan,i.sourceSpan);t.create.push(p),Tee(t,p,i,m),UL(p,i),Nd(e,i.children);for(let{name:h,value:g}of i.variables)e.contextVariables.set(h,g!==""?g:"$implicit");if(m===us.NgTemplate&&i.i18n instanceof Qa){let h=t.job.allocateXrefId();Ze.insertAfter(k1(h,i.i18n,void 0,i.startSourceSpan),e.create.head),Ze.insertBefore(T1(h,i.endSourceSpan??i.startSourceSpan),e.create.tail)}}function gee(t,i){if(i.i18n!==void 0&&!(i.i18n instanceof Fm))throw Error(`Unhandled i18n metadata type for element: ${i.i18n.constructor.name}`);let e=null;i.children.some(r=>!(r instanceof w1)&&(!(r instanceof cu)||r.value.trim().length>0))&&(e=t.job.allocateView(t.xref),Nd(e,i.children));let n=t.job.allocateXrefId(),o=wX(n,i.selector,i.i18n,e?.xref??null,i.sourceSpan);for(let r of i.attributes){let a=_u.securityContext(i.name,r.name,!0);t.update.push(Du(o.xref,Qt.Attribute,r.name,Ee(r.value),null,a,!0,!1,null,Dd(r.i18n),r.sourceSpan))}t.create.push(o)}function zL(t,i,e){t.create.push(pL(t.job.allocateXrefId(),i.value,e,i.sourceSpan))}function jL(t,i,e){let n=i.value;if(n instanceof ps&&(n=n.ast),!(n instanceof hv))throw new Error(`AssertionError: expected Interpolation for BoundText node, got ${n.constructor.name}`);if(i.i18n!==void 0&&!(i.i18n instanceof Pd))throw Error(`Unhandled i18n metadata type for text interpolation: ${i.i18n?.constructor.name}`);let o=i.i18n instanceof Pd?i.i18n.children.filter(a=>a instanceof U0).map(a=>a.name):[];if(o.length>0&&o.length!==n.expressions.length)throw Error(`Unexpected number of i18n placeholders (${n.expressions.length}) for BoundText with ${n.expressions.length} expressions`);let r=t.job.allocateXrefId();t.create.push(pL(r,"",e,i.sourceSpan)),t.update.push(eX(r,new er(n.strings,n.expressions.map(a=>Rn(a,t.job,null)),o),i.sourceSpan))}function _ee(t,i){let e=null,n=[];for(let o=0;o<i.branches.length;o++){let r=i.branches[o],a=t.job.allocateView(t.xref),c=g1(t,a.xref,r);r.expressionAlias!==null&&a.contextVariables.set(r.expressionAlias.name,gL);let m;if(r.i18n!==void 0){if(!(r.i18n instanceof Lm))throw Error(`Unhandled i18n metadata type for if block: ${r.i18n?.constructor.name}`);m=r.i18n}let h=(o===0?dL:mL)(a.xref,us.Block,c,"Conditional",Ia.HTML,m,r.startSourceSpan,r.sourceSpan);t.create.push(h),e===null&&(e=a.xref);let g=r.expression?Rn(r.expression,t.job,null):null,M=new t1(g,h.xref,h.handle,r.expressionAlias);n.push(M),Nd(a,r.children)}t.update.push(aL(e,null,n,i.sourceSpan))}function vee(t,i){if(i.groups.length===0)return;let e=null,n=[];for(let o=0;o<i.groups.length;o++){let r=i.groups[o],a=t.job.allocateView(t.xref),c=g1(t,a.xref,r),m;if(r.i18n!==void 0){if(!(r.i18n instanceof Lm))throw Error(`Unhandled i18n metadata type for switch block: ${r.i18n?.constructor.name}`);m=r.i18n}let h=(o===0?dL:mL)(a.xref,us.Block,c,"Case",Ia.HTML,m,r.startSourceSpan,r.sourceSpan);t.create.push(h),e===null&&(e=a.xref);for(let g of r.cases){let M=g.expression?Rn(g.expression,t.job,i.startSourceSpan):null,C=new t1(M,h.xref,h.handle);n.push(C)}Nd(a,r.children)}t.update.push(aL(e,Rn(i.expression,t.job,null),n,i.sourceSpan))}function ax(t,i,e,n,o){if(e!==void 0&&!(e instanceof Lm))throw Error("Unhandled i18n metadata type for defer block");if(n===void 0)return null;let r=t.job.allocateView(t.xref);Nd(r,n);let a=cL(r.xref,us.Block,null,`Defer${i}`,Ia.HTML,e,o,o);return t.create.push(a),a}function bee(t,i){let e=null;if(t.job.deferMeta.mode===0){if(!t.job.deferMeta.blocks.has(i))throw new Error("AssertionError: unable to find a dependency function for this deferred block");e=t.job.deferMeta.blocks.get(i)??null}let n=ax(t,"",i.i18n,i.children,i.sourceSpan),o=ax(t,"Loading",i.loading?.i18n,i.loading?.children,i.loading?.sourceSpan),r=ax(t,"Placeholder",i.placeholder?.i18n,i.placeholder?.children,i.placeholder?.sourceSpan),a=ax(t,"Error",i.error?.i18n,i.error?.children,i.error?.sourceSpan),c=t.job.allocateXrefId(),m=MX(c,n.xref,n.handle,e,t.job.allDeferrableDepsFn,i.sourceSpan);m.placeholderView=r?.xref??null,m.placeholderSlot=r?.handle??null,m.loadingSlot=o?.handle??null,m.errorSlot=a?.handle??null,m.placeholderMinimumTime=i.placeholder?.minimumTime??null,m.loadingMinimumTime=i.loading?.minimumTime??null,m.loadingAfterTime=i.loading?.afterTime??null,m.flags=Cee(i),t.create.push(m);let p=[],h=[];VE("hydrate",i.hydrateTriggers,p,h,t,c),VE("none",i.triggers,p,h,t,c),VE("prefetch",i.prefetchTriggers,p,h,t,c),p.some(M=>M.modifier==="none")||h.some(M=>M.modifier==="none")||p.push(km(c,{kind:po.Idle},"none",null)),t.create.push(p),t.update.push(h)}function Cee(t){return Object.keys(t.hydrateTriggers).length>0?1:null}function VE(t,i,e,n,o,r){if(i.idle!==void 0){let a=km(r,{kind:po.Idle},t,i.idle.sourceSpan);e.push(a)}if(i.immediate!==void 0){let a=km(r,{kind:po.Immediate},t,i.immediate.sourceSpan);e.push(a)}if(i.timer!==void 0){let a=km(r,{kind:po.Timer,delay:i.timer.delay},t,i.timer.sourceSpan);e.push(a)}if(i.hover!==void 0){let a=km(r,{kind:po.Hover,targetName:i.hover.reference,targetXref:null,targetSlot:null,targetView:null,targetSlotViewSteps:null},t,i.hover.sourceSpan);e.push(a)}if(i.interaction!==void 0){let a=km(r,{kind:po.Interaction,targetName:i.interaction.reference,targetXref:null,targetSlot:null,targetView:null,targetSlotViewSteps:null},t,i.interaction.sourceSpan);e.push(a)}if(i.viewport!==void 0){let a=km(r,{kind:po.Viewport,targetName:i.viewport.reference,targetXref:null,targetSlot:null,targetView:null,targetSlotViewSteps:null,options:i.viewport.options?Rn(i.viewport.options,o.job,i.viewport.sourceSpan):null},t,i.viewport.sourceSpan);e.push(a)}if(i.never!==void 0){let a=km(r,{kind:po.Never},t,i.never.sourceSpan);e.push(a)}if(i.when!==void 0){if(i.when.value instanceof hv)throw new Error("Unexpected interpolation in defer block when trigger");let a=cX(r,Rn(i.when.value,o.job,i.when.sourceSpan),t,i.when.sourceSpan);n.push(a)}}function xee(t,i){if(i.i18n instanceof Qa&&lee(i.i18n)){let e=t.job.allocateXrefId();t.create.push(EX(e,i.i18n,j6(i.i18n).name,null));for(let[n,o]of Object.entries(H(H({},i.vars),i.placeholders)))o instanceof pf?jL(t,o,n):zL(t,o,n);t.create.push(DX(e))}else throw Error(`Unhandled i18n metadata type for ICU: ${i.i18n?.constructor.name}`)}function yee(t,i){let e=t.job.allocateView(t.xref),n=`\u0275$index_${e.xref}`,o=`\u0275$count_${e.xref}`,r=new Set;e.contextVariables.set(i.item.name,i.item.value);for(let y of i.contextVariables)y.value==="$index"&&r.add(y.name),y.name==="$index"?e.contextVariables.set("$index",y.value).set(n,y.value):y.name==="$count"?e.contextVariables.set("$count",y.value).set(o,y.value):e.aliases.add({kind:oa.Alias,name:null,identifier:y.name,expression:See(y,n,o)});let a=Ur(i.trackBy.span,i.sourceSpan),c=Rn(i.trackBy,t.job,a);Nd(e,i.children);let m=null,p=null;i.empty!==null&&(m=t.job.allocateView(t.xref),Nd(m,i.empty.children),p=g1(t,m.xref,i.empty));let h={$index:r,$implicit:i.item.name};if(i.i18n!==void 0&&!(i.i18n instanceof Lm))throw Error("AssertionError: Unhandled i18n metadata type or @for");if(i.empty?.i18n!==void 0&&!(i.empty.i18n instanceof Lm))throw Error("AssertionError: Unhandled i18n metadata type or @empty");let g=i.i18n,M=i.empty?.i18n,C=g1(t,e.xref,i),_=fX(e.xref,m?.xref??null,C,c,h,p,g,M,i.startSourceSpan,i.sourceSpan);t.create.push(_);let w=Rn(i.expression,t.job,Ur(i.expression.span,i.sourceSpan)),S=lX(_.xref,_.handle,w,i.sourceSpan);t.update.push(S)}function See(t,i,e){switch(t.value){case"$index":return new na(i);case"$count":return new na(e);case"$first":return new na(i).identical(Ee(0));case"$last":return new na(i).identical(new na(e).minus(Ee(1)));case"$even":return new na(i).modulo(Ee(2)).identical(Ee(0));case"$odd":return new na(i).modulo(Ee(2)).notIdentical(Ee(0));default:throw new Error(`AssertionError: unknown @for loop variable ${t.value}`)}}function wee(t,i){let e=t.job.allocateXrefId();t.create.push(kX(e,i.name,i.sourceSpan)),t.update.push(mX(e,i.name,Rn(i.value,t.job,i.valueSpan),i.sourceSpan))}function Rn(t,i,e){if(t instanceof ps)return Rn(t.ast,i,e);if(t instanceof Ac)return t.receiver instanceof Bc?new na(t.name):new Hs(Rn(t.receiver,i,e),t.name,null,Ur(t.span,e));if(t instanceof df){if(t.receiver instanceof Bc)throw new Error("Unexpected ImplicitReceiver");return new fs(Rn(t.receiver,i,e),t.args.map(n=>Rn(n,i,e)),void 0,Ur(t.span,e))}else{if(t instanceof ds)return Ee(t.value,void 0,Ur(t.span,e));if(t instanceof tf)switch(t.operator){case"+":return new xu(g0.Plus,Rn(t.expr,i,e),void 0,Ur(t.span,e));case"-":return new xu(g0.Minus,Rn(t.expr,i,e),void 0,Ur(t.span,e));default:throw new Error(`AssertionError: unknown unary operator ${t.operator}`)}else if(t instanceof Ha){let n=XX.get(t.operation);if(n===void 0)throw new Error(`AssertionError: unknown binary operator ${t.operation}`);return new Mi(n,Rn(t.left,i,e),Rn(t.right,i,e),void 0,Ur(t.span,e))}else{if(t instanceof w0)return new zm(i.root.xref);if(t instanceof Mu)return new Ad(Rn(t.receiver,i,e),Rn(t.key,i,e),void 0,Ur(t.span,e));if(t instanceof cf)throw new Error("AssertionError: Chain in unknown context");if(t instanceof ku){let n=t.keys.map((o,r)=>{let a=Rn(t.values[r],i,e);return o.kind==="spread"?new Om(a):new sf(o.key,a,o.quoted)});return new ic(n,void 0,Ur(t.span,e))}else{if(t instanceof T0)return new Lc(t.expressions.map(n=>Rn(n,i,e)));if(t instanceof Ex)return new Fc(Rn(t.condition,i,e),Rn(t.trueExp,i,e),Rn(t.falseExp,i,e),void 0,Ur(t.span,e));if(t instanceof I0)return Rn(t.expression,i,e);if(t instanceof Dx)return new Iu(i.allocateXrefId(),new ba,t.name,[Rn(t.exp,i,e),...t.args.map(n=>Rn(n,i,e))]);if(t instanceof k0)return new bf(Rn(t.receiver,i,e),Rn(t.key,i,e),Ur(t.span,e));if(t instanceof M0)return new vf(Rn(t.receiver,i,e),t.name);if(t instanceof Ix)return new Au(Rn(t.receiver,i,e),t.args.map(n=>Rn(n,i,e)));if(t instanceof Da)return new nv(Ur(t.span,e));if(t instanceof E0)return uW(Rn(t.expression,i,e),Ur(t.span,e));if(t instanceof D0)return uv(Rn(t.expression,i,e));if(t instanceof P0)return new bx(Rn(t.expression,i,e),void 0,Ur(t.span,e));if(t instanceof O0)return c6(t,i,e);if(t instanceof A0)return new _0(Rn(t.tag,i,e),c6(t.template,i,e),void 0,Ur(t.span,e));if(t instanceof N0)return new nc(Rn(t.expression,i,e),void 0,Ur(t.span,e));if(t instanceof Nx)return new af(t.body,t.flags,e);if(t instanceof Px)return new yu(Rn(t.expression,i,e));if(t instanceof Ox)return Dee(Us(t.parameters.map(n=>new Ir(n.name,hs)),Rn(t.body,i,e)));throw new Error(`Unhandled expression type "${t.constructor.name}" in file "${e?.start.file.url}"`)}}}}function c6(t,i,e){return new b0(t.elements.map(n=>new Cx(n.text,Ur(n.span,e))),t.expressions.map(n=>Rn(n,i,e)),Ur(t.span,e))}function aP(t,i,e,n){let o;return i instanceof hv?o=new er(i.strings,i.expressions.map(r=>Rn(r,t,null)),Object.keys(Dd(e)?.placeholders??{})):i instanceof ho?o=Rn(i,t,null):o=Ee(i),o}var $L=new Map([[Li.Property,Qt.Property],[Li.TwoWay,Qt.TwoWayProperty],[Li.Attribute,Qt.Attribute],[Li.Class,Qt.ClassName],[Li.Style,Qt.StyleProperty],[Li.LegacyAnimation,Qt.LegacyAnimation],[Li.Animation,Qt.Animation]]);function Mee(t){return oc(t.tagName??"")[1]===vu}function Dd(t){if(t==null)return null;if(!(t instanceof Qa))throw Error(`Expected i18n meta to be a Message, but got: ${t.constructor.name}`);return t}function kee(t,i,e){let n=new Array,o=new Set;for(let r of e.attributes){let a=_u.securityContext(e.name,r.name,!0);n.push(Du(i.xref,Qt.Attribute,r.name,aP(t.job,r.value,r.i18n),null,a,!0,!1,null,Dd(r.i18n),r.sourceSpan)),r.i18n&&o.add(r.name)}for(let r of e.inputs)o.has(r.name)&&console.error(`On component ${t.job.componentName}, the binding ${r.name} is both an i18n attribute and a property. You may want to remove the property binding. This will become a compilation error in future versions of Angular.`),n.push(Du(i.xref,$L.get(r.type),r.name,aP(t.job,dv(r.value),r.i18n),r.unit,r.securityContext,!1,!1,null,Dd(r.i18n)??null,r.sourceSpan));t.create.push(n.filter(r=>r?.kind===B.ExtractedAttribute)),t.update.push(n.filter(r=>r?.kind===B.Binding));for(let r of e.outputs){if(r.type===Xa.LegacyAnimation&&r.phase===null)throw Error("Animation listener should have a phase");r.type===Xa.TwoWay?t.create.push(hL(i.xref,i.handle,r.name,i.tag,HL(t,r.handler,r.handlerSpan),r.sourceSpan)):r.type===Xa.Animation?t.create.push(uL(i.xref,i.handle,r.name,i.tag,cv(t,r.handler,r.handlerSpan),r.name.endsWith("enter")?"enter":"leave",r.target,!1,r.sourceSpan)):t.create.push(jP(i.xref,i.handle,r.name,i.tag,cv(t,r.handler,r.handlerSpan),r.phase,r.target,!1,r.sourceSpan))}n.some(r=>r?.i18nMessage)!==null&&t.create.push(fL(t.job.allocateXrefId(),new ba,i.xref))}function Tee(t,i,e,n){let o=new Array;for(let r of e.templateAttrs)if(r instanceof uf){let a=_u.securityContext(vu,r.name,!0);o.push(sx(t,i.xref,Li.Attribute,r.name,r.value,null,a,!0,n,Dd(r.i18n),r.sourceSpan))}else o.push(sx(t,i.xref,r.type,r.name,dv(r.value),r.unit,r.securityContext,!0,n,Dd(r.i18n),r.sourceSpan));for(let r of e.attributes){let a=_u.securityContext(vu,r.name,!0);o.push(sx(t,i.xref,Li.Attribute,r.name,r.value,null,a,!1,n,Dd(r.i18n),r.sourceSpan))}for(let r of e.inputs)o.push(sx(t,i.xref,r.type,r.name,dv(r.value),r.unit,r.securityContext,!1,n,Dd(r.i18n),r.sourceSpan));t.create.push(o.filter(r=>r?.kind===B.ExtractedAttribute)),t.update.push(o.filter(r=>r?.kind===B.Binding));for(let r of e.outputs){if(r.type===Xa.LegacyAnimation&&r.phase===null)throw Error("Animation listener should have a phase");if(n===us.NgTemplate&&(r.type===Xa.TwoWay?t.create.push(hL(i.xref,i.handle,r.name,i.tag,HL(t,r.handler,r.handlerSpan),r.sourceSpan)):t.create.push(jP(i.xref,i.handle,r.name,i.tag,cv(t,r.handler,r.handlerSpan),r.phase,r.target,!1,r.sourceSpan))),n===us.Structural&&r.type!==Xa.LegacyAnimation){let a=_u.securityContext(vu,r.name,!1);t.create.push(ul(i.xref,Qt.Property,null,r.name,null,null,null,a))}}o.some(r=>r?.i18nMessage)!==null&&t.create.push(fL(t.job.allocateXrefId(),new ba,i.xref))}function sx(t,i,e,n,o,r,a,c,m,p,h){let g=typeof o=="string";if(m===us.Structural){if(!c)switch(e){case Li.Property:case Li.Class:case Li.Style:return ul(i,Qt.Property,null,n,null,null,p,a);case Li.TwoWay:return ul(i,Qt.TwoWayProperty,null,n,null,null,p,a)}if(!g&&(e===Li.Attribute||e===Li.LegacyAnimation||e===Li.Animation))return null}let M=$L.get(e);return m===us.NgTemplate&&(e===Li.Class||e===Li.Style||e===Li.Attribute&&!g)&&(M=Qt.Property),Du(i,M,n,aP(t.job,o,p),r,a,g,c,m,p,h)}function cv(t,i,e){i=dv(i);let n=new Array,o=i instanceof cf?i.expressions:[i];if(o.length===0)throw new Error("Expected listener to have non-empty expression list.");let r=o.map(c=>Rn(c,t.job,e)),a=r.pop();return n.push(...r.map(c=>Ws(new va(c,c.sourceSpan)))),n.push(Ws(new Ar(a,a.sourceSpan))),n}function HL(t,i,e){i=dv(i);let n=new Array;if(i instanceof cf)if(i.expressions.length===1)i=i.expressions[0];else throw new Error("Expected two-way listener to have a single expression.");let o=Rn(i,t.job,e),r=new na("$event"),a=new Jx(o,r);return n.push(Ws(new va(a))),n.push(Ws(new Ar(r))),n}function dv(t){return t instanceof ps?t.ast:t}function UL(t,i){Eee(t.localRefs);for(let{name:e,value:n}of i.references)t.localRefs.push({name:e,target:n})}function Eee(t){if(!Array.isArray(t))throw new Error("AssertionError: expected an array")}function Ur(t,i){if(i===null)return null;let e=i.start.moveBy(t.start),n=i.start.moveBy(t.end),o=i.fullStart.moveBy(t.start);return new bn(e,n,o)}function g1(t,i,e){let n=null;for(let o of e.children)if(!(o instanceof w1||o instanceof IP)){if(n!==null)return null;if(o instanceof Vc||o instanceof js&&o.tagName!==null)n=o;else return null}if(n!==null){for(let r of n.attributes)if(!r.name.startsWith(see)){let a=_u.securityContext(vu,r.name,!0);t.update.push(Du(i,Qt.Attribute,r.name,Ee(r.value),null,a,!0,!1,null,Dd(r.i18n),r.sourceSpan))}for(let r of n.inputs)if(r.type!==Li.LegacyAnimation&&r.type!==Li.Animation&&r.type!==Li.Attribute){let a=_u.securityContext(vu,r.name,!0);t.create.push(ul(i,Qt.Property,null,r.name,null,null,null,a))}let o=n instanceof Vc?n.name:n.tagName;return o===vu?null:o}return null}function Dee(t){let i=new Set(t.params.map(e=>e.name));return $t(t,e=>{if(e instanceof Nu)for(let n of e.params)i.add(n.name);else if(e instanceof na&&i.has(e.name))return si(e.name);return e},$n.None)}var Pee=!1;function Iee(){return Pee}function _1(t,i){return y1(si(wf).bitwiseAnd(Ee(t),null),i)}function Aee(t){return(t.descendants?1:0)|(t.static?2:0)|(t.emitDistinctChangesOnly?4:0)}function Oee(t,i){if(Array.isArray(t.predicate)){let e=[];return t.predicate.forEach(n=>{let o=n.split(",").map(r=>Ee(r.trim()));e.push(...o)}),i.getConstLiteral(oo(e),!0)}else switch(t.predicate.forwardRef){case 0:case 2:return t.predicate.expression;case 1:return Zt(he.resolveForwardRef).callFn([t.predicate.expression])}}function GL(t,i,e){let n=[];return e!==void 0&&n.push(...e),t.isSignal&&n.push(new Hs(si(Gs),t.propertyName)),n.push(Oee(t,i),Ee(Aee(t))),t.read&&n.push(t.read),n}var GP=Symbol("queryAdvancePlaceholder");function WL(t){let i=[],e=0,n=()=>{e>0&&(i.unshift(Zt(he.queryAdvance).callFn(e===1?[]:[Ee(e)]).toStmt()),e=0)};for(let o=t.length-1;o>=0;o--){let r=t[o];r===GP?e++:(n(),i.unshift(r))}return n(),i}function Nee(t,i,e){let n=[],o=[],r=$6(p=>o.push(p),OP),a=null,c=null;t.forEach(p=>{let h=GL(p,i);if(p.isSignal?(a??=Zt(he.viewQuerySignal),a=a.callFn(h)):(c??=Zt(he.viewQuery),c=c.callFn(h)),p.isSignal){o.push(GP);return}let g=r(),M=Zt(he.loadQuery).callFn([]),C=Zt(he.queryRefresh).callFn([g.set(M)]),_=si(Gs).prop(p.propertyName).set(p.first?g.prop("first"):g);o.push(C.and(_).toStmt())}),a!==null&&n.push(new va(a)),c!==null&&n.push(new va(c));let m=e?`${e}_Query`:null;return Nm([new Ir(wf,bu),new Ir(Gs,hs)],[_1(1,n),_1(2,WL(o))],ec,null,m)}function Ree(t,i,e){let n=[],o=[],r=$6(p=>o.push(p),OP),a=null,c=null;for(let p of t){let h=GL(p,i,[si("dirIndex")]);if(p.isSignal?(a??=Zt(he.contentQuerySignal),a=a.callFn(h)):(c??=Zt(he.contentQuery),c=c.callFn(h)),p.isSignal){o.push(GP);continue}let g=r(),M=Zt(he.loadQuery).callFn([]),C=Zt(he.queryRefresh).callFn([g.set(M)]),_=si(Gs).prop(p.propertyName).set(p.first?g.prop("first"):g);o.push(C.and(_).toStmt())}a!==null&&n.push(new va(a)),c!==null&&n.push(new va(c));let m=e?`${e}_ContentQueries`:null;return Nm([new Ir(wf,bu),new Ir(Gs,hs),new Ir("dirIndex",bu)],[_1(1,n),_1(2,WL(o))],ec,null,m)}var sP=class extends KQ{constructor(){super(JD)}parse(i,e,n){return super.parse(i,e,n)}},lx=".",Fee="attr",zE="animate",Lee="class",Bee="style",Vee="*",jE="animate-",lP=class{_exprParser;_schemaRegistry;errors;constructor(i,e,n){this._exprParser=i,this._schemaRegistry=e,this.errors=n}createBoundHostProperties(i,e){let n=[];for(let o of Object.keys(i)){let r=i[o];typeof r=="string"?this.parsePropertyBinding(o,r,!0,!1,e,e.start.offset,void 0,[],n,e):this._reportError(`Value of the host property binding "${o}" needs to be a string representing an expression but got "${r}" (${typeof r})`,e)}return n}createDirectiveHostEventAsts(i,e){let n=[];for(let o of Object.keys(i)){let r=i[o];typeof r=="string"?this.parseEvent(o,r,!1,e,e,[],n,e):this._reportError(`Value of the host listener "${o}" needs to be a string representing an expression but got "${r}" (${typeof r})`,e)}return n}parseInterpolation(i,e,n){let o=e.fullStart.offset;try{let r=this._exprParser.parseInterpolation(i,e,o,n);return r&&this.errors.push(...r.errors),r}catch(r){return this._reportError(`${r}`,e),this._exprParser.wrapLiteralPrimitive("ERROR",e,o)}}parseInterpolationExpression(i,e){let n=e.start.offset;try{let o=this._exprParser.parseInterpolationExpression(i,e,n);return o&&this.errors.push(...o.errors),o}catch(o){return this._reportError(`${o}`,e),this._exprParser.wrapLiteralPrimitive("ERROR",e,n)}}parseInlineTemplateBinding(i,e,n,o,r,a,c,m){let p=n.start.offset+Vee.length,h=this._parseTemplateBindings(i,e,n,p,o);for(let g of h){let M=wm(n,g.sourceSpan),C=g.key.source,_=wm(n,g.key.span);if(g instanceof R0){let w=g.value?g.value.source:"$implicit",S=g.value?wm(n,g.value.span):void 0;c.push(new cD(C,w,M,_,S))}else if(g.value){let w=m?M:n,S=wm(n,g.value.ast.sourceSpan);this._parsePropertyAst(C,g.value,!1,w,_,S,r,a)}else r.push([C,""]),this.parseLiteralAttr(C,null,_,o,void 0,r,a,_)}}_parseTemplateBindings(i,e,n,o,r){try{let a=this._exprParser.parseTemplateBindings(i,e,n,o,r);return a.errors.forEach(c=>this.errors.push(c)),a.warnings.forEach(c=>{this._reportError(c,n,Pm.WARNING)}),a.templateBindings}catch(a){return this._reportError(`${a}`,n),[]}}parseLiteralAttr(i,e,n,o,r,a,c,m){$E(i)?(i=i.substring(1),m!==void 0&&(m=wm(m,new zs(m.start.offset+1,m.end.offset))),e&&this._reportError('Assigning animation triggers via @prop="exp" attributes with an expression is invalid. Use property bindings (e.g. [@prop]="exp") or use an attribute without a value (e.g. @prop) instead.',n,Pm.ERROR),this._parseLegacyAnimation(i,e,n,o,m,r,a,c)):c.push(new Qh(i,this._exprParser.wrapLiteralPrimitive(e,"",o),Ec.LITERAL_ATTR,n,m,r))}parsePropertyBinding(i,e,n,o,r,a,c,m,p,h){i.length===0&&this._reportError("Property name is missing in binding",r);let g=!1;i.startsWith(jE)?(g=!0,i=i.substring(jE.length),h!==void 0&&(h=wm(h,new zs(h.start.offset+jE.length,h.end.offset)))):$E(i)&&(g=!0,i=i.substring(1),h!==void 0&&(h=wm(h,new zs(h.start.offset+1,h.end.offset)))),g?this._parseLegacyAnimation(i,e,r,a,h,c,m,p):i.startsWith(`${zE}${lx}`)?this._parseAnimation(i,this.parseBinding(e,n,c||r,a),r,h,c,m,p):this._parsePropertyAst(i,this.parseBinding(e,n,c||r,a),o,r,h,c,m,p)}parsePropertyInterpolation(i,e,n,o,r,a,c,m){let p=this.parseInterpolation(e,o||n,m);return p?(this._parsePropertyAst(i,p,!1,n,c,o,r,a),!0):!1}_parsePropertyAst(i,e,n,o,r,a,c,m){c.push([i,e.source]),m.push(new Qh(i,e,n?Ec.TWO_WAY:Ec.DEFAULT,o,r,a))}_parseAnimation(i,e,n,o,r,a,c){a.push([i,e.source]),c.push(new Qh(i,e,Ec.ANIMATION,n,o,r))}_parseLegacyAnimation(i,e,n,o,r,a,c,m){i.length===0&&this._reportError("Animation trigger is missing",n);let p=this.parseBinding(e||"undefined",!1,a||n,o);c.push([i,p.source]),m.push(new Qh(i,p,Ec.LEGACY_ANIMATION,n,r,a))}parseBinding(i,e,n,o){try{let r=e?this._exprParser.parseSimpleBinding(i,n,o):this._exprParser.parseBinding(i,n,o);return r&&this.errors.push(...r.errors),r}catch(r){return this._reportError(`${r}`,n),this._exprParser.wrapLiteralPrimitive("ERROR",n,o)}}createBoundElementProperty(i,e,n=!1,o=!0){if(e.isLegacyAnimation)return new Fx(e.name,Li.LegacyAnimation,uo.NONE,e.expression,null,e.sourceSpan,e.keySpan,e.valueSpan);let r=null,a,c=null,m=e.name.split(lx),p;if(m.length>1)if(m[0]==Fee){c=m.slice(1).join(lx),n||this._validatePropertyOrAttributeName(c,e.sourceSpan,!0),p=HE(this._schemaRegistry,i,c,!0);let h=c.indexOf(":");if(h>-1){let g=c.substring(0,h),M=c.substring(h+1);c=mx(g,M)}a=Li.Attribute}else m[0]==Lee?(c=m[1],a=Li.Class,p=[uo.NONE]):m[0]==Bee?(r=m.length>2?m[2]:null,c=m[1],a=Li.Style,p=[uo.STYLE]):m[0]==zE&&(c=e.name,a=Li.Animation,p=[uo.NONE]);if(c===null){let h=this._schemaRegistry.getMappedPropName(e.name);c=o?h:e.name,p=HE(this._schemaRegistry,i,h,!1),a=e.type===Ec.TWO_WAY?Li.TwoWay:Li.Property,n||this._validatePropertyOrAttributeName(h,e.sourceSpan,!1)}return new Fx(c,a,p[0],e.expression,r,e.sourceSpan,e.keySpan,e.valueSpan)}parseEvent(i,e,n,o,r,a,c,m){i.length===0&&this._reportError("Event name is missing in binding",o),$E(i)?(i=i.slice(1),m!==void 0&&(m=wm(m,new zs(m.start.offset+1,m.end.offset))),this._parseLegacyAnimationEvent(i,e,o,r,c,m)):this._parseRegularEvent(i,e,n,o,r,a,c,m)}calcPossibleSecurityContexts(i,e,n){let o=this._schemaRegistry.getMappedPropName(e);return HE(this._schemaRegistry,i,o,n)}parseEventListenerName(i){let[e,n]=yW(i,[null,i]);return{eventName:n,target:e}}parseLegacyAnimationEventName(i){let e=SW(i,[i,null]);return{eventName:e[0],phase:e[1]===null?null:e[1].toLowerCase()}}_parseLegacyAnimationEvent(i,e,n,o,r,a){let{eventName:c,phase:m}=this.parseLegacyAnimationEventName(i),p=this._parseAction(e,o);r.push(new Rx(c,m,Xa.LegacyAnimation,p,n,o,a)),c.length===0&&this._reportError("Animation event name is missing in binding",n),m?m!=="start"&&m!=="done"&&this._reportError(`The provided animation output phase value "${m}" for "@${c}" is not supported (use start or done)`,n):this._reportError(`The animation trigger output event (@${c}) is missing its phase value name (start or done are currently supported)`,n)}_parseRegularEvent(i,e,n,o,r,a,c,m){let{eventName:p,target:h}=this.parseEventListenerName(i),g=this.errors.length,M=this._parseAction(e,r),C=this.errors.length===g;a.push([i,M.source]),n&&C&&!this._isAllowedAssignmentEvent(M)&&this._reportError("Unsupported expression in a two-way binding",o);let _=Xa.Regular;n&&(_=Xa.TwoWay),i.startsWith(`${zE}${lx}`)&&(_=Xa.Animation),c.push(new Rx(p,h,_,M,o,r,m))}_parseAction(i,e){let n=e&&e.start?e.start.offset:0;try{let o=this._exprParser.parseAction(i,e,n);return o&&this.errors.push(...o.errors),!o||o.ast instanceof Da?(this._reportError("Empty expressions are not allowed",e),this._exprParser.wrapLiteralPrimitive("ERROR",e,n)):o}catch(o){return this._reportError(`${o}`,e),this._exprParser.wrapLiteralPrimitive("ERROR",e,n)}}_reportError(i,e,n=Pm.ERROR){this.errors.push(new mn(e,i,n))}_validatePropertyOrAttributeName(i,e,n){let o=n?this._schemaRegistry.validateAttribute(i):this._schemaRegistry.validateProperty(i);o.error&&this._reportError(o.msg,e,Pm.ERROR)}_isAllowedAssignmentEvent(i){return i instanceof ps?this._isAllowedAssignmentEvent(i.ast):i instanceof I0?this._isAllowedAssignmentEvent(i.expression):i instanceof df&&i.args.length===1&&i.receiver instanceof Ac&&i.receiver.name==="$any"&&i.receiver.receiver instanceof Bc?this._isAllowedAssignmentEvent(i.args[0]):(i instanceof Ac||i instanceof Mu)&&!cP(i)}};function cP(t){return t instanceof M0||t instanceof k0?!0:t instanceof N0?cP(t.expression):t instanceof Ac||t instanceof Mu||t instanceof df?cP(t.receiver):!1}function $E(t){return t[0]=="@"}function HE(t,i,e,n){let o,r=a=>t.securityContext(a,e,n);return i===null?o=t.allKnownElementNames().map(r):(o=[],of.parse(i).forEach(a=>{let c=a.element?[a.element]:t.allKnownElementNames(),m=new Set(a.notSelectors.filter(h=>h.isElementSelector()).map(h=>h.element)),p=c.filter(h=>!m.has(h));o.push(...p.map(r))})),o.length===0?[uo.NONE]:Array.from(new Set(o)).sort()}function wm(t,i){let e=i.start-t.start.offset,n=i.end-t.end.offset;return new bn(t.start.moveBy(e),t.end.moveBy(n),t.fullStart.moveBy(e),t.details)}function zee(t){if(t==null||t.length===0||t[0]=="/")return!1;let i=t.match(jee);return i===null||i[1]=="package"||i[1]=="asset"}var jee=/^([^:/?#]+):/,$ee="select",Hee="link",Uee="rel",Gee="href",Wee="stylesheet",qee="style",Xee="script",Qee="ngNonBindable",Yee="ngProjectAs";function qL(t){let i=null,e=null,n=null,o=!1,r="";t.attrs.forEach(m=>{let p=m.name.toLowerCase();p==$ee?i=m.value:p==Gee?e=m.value:p==Uee?n=m.value:m.name==Qee?o=!0:m.name==Yee&&m.value.length>0&&(r=m.value)}),i=Kee(i);let a=t.name.toLowerCase(),c=Vs.OTHER;return dD(a)?c=Vs.NG_CONTENT:a==qee?c=Vs.STYLE:a==Xee?c=Vs.SCRIPT:a==Hee&&n==Wee&&(c=Vs.STYLESHEET),new dP(c,i,e,o,r)}var Vs=(function(t){return t[t.NG_CONTENT=0]="NG_CONTENT",t[t.STYLE=1]="STYLE",t[t.STYLESHEET=2]="STYLESHEET",t[t.SCRIPT=3]="SCRIPT",t[t.OTHER=4]="OTHER",t})(Vs||{}),dP=class{type;selectAttr;hrefAttr;nonBindable;projectAs;constructor(i,e,n,o,r){this.type=i,this.selectAttr=e,this.hrefAttr=n,this.nonBindable=o,this.projectAs=r}};function Kee(t){return t===null||t.length===0?"*":t}var Zee=/^\s*([0-9A-Za-z_$]*)\s+of\s+([\S\s]*)/,Jee=/^track\s+([\S\s]*)/,ete=/^(as\s+)(.*)/,D1=/^else[^\S\r\n]+if/,tte=/^let\s+([\S\s]*)/,nte=/^[$A-Z_][0-9A-Z_$]*$/i,d6=/(\s*)(\S+)(\s*)/,f0=new Set(["$index","$first","$last","$even","$odd","$count"]);function m6(t){return t==="empty"}function p6(t){return t==="else"||D1.test(t)}function ite(t,i,e,n){let o=cte(i),r=[],a=u6(t,o,n);a!==null&&r.push(new pu(a.expression,Do(e,t.children,t.children),a.expressionAlias,t.sourceSpan,t.startSourceSpan,t.endSourceSpan,t.nameSpan,t.i18n));for(let g of i)if(D1.test(g.name)){let M=u6(g,o,n);if(M!==null){let C=Do(e,g.children,g.children);r.push(new pu(M.expression,C,M.expressionAlias,g.sourceSpan,g.startSourceSpan,g.endSourceSpan,g.nameSpan,g.i18n))}}else if(g.name==="else"){let M=Do(e,g.children,g.children);r.push(new pu(null,M,null,g.sourceSpan,g.startSourceSpan,g.endSourceSpan,g.nameSpan,g.i18n))}let c=r.length>0?r[0].startSourceSpan:t.startSourceSpan,m=r.length>0?r[r.length-1].endSourceSpan:t.endSourceSpan,p=t.sourceSpan,h=r[r.length-1];return h!==void 0&&(p=new bn(c.start,h.sourceSpan.end)),{node:new jx(r,p,t.startSourceSpan,m,t.nameSpan),errors:o}}function ote(t,i,e,n){let o=[],r=ate(t,o,n),a=null,c=null;for(let m of i)m.name==="empty"?c!==null?o.push(new mn(m.sourceSpan,"@for loop can only have one @empty block")):m.parameters.length>0?o.push(new mn(m.sourceSpan,"@empty block cannot have parameters")):c=new j0(Do(e,m.children,m.children),m.sourceSpan,m.startSourceSpan,m.endSourceSpan,m.nameSpan,m.i18n):o.push(new mn(m.sourceSpan,`Unrecognized @for loop block "${m.name}"`));if(r!==null)if(r.trackBy===null)o.push(new mn(t.startSourceSpan,'@for loop must have a "track" expression'));else{let m=c?.endSourceSpan??t.endSourceSpan,p=new bn(t.sourceSpan.start,m?.end??t.sourceSpan.end);ste(r.trackBy.expression,r.trackBy.keywordSpan,o),a=new hf(r.itemName,r.expression,r.trackBy.expression,r.trackBy.keywordSpan,r.context,Do(e,t.children,t.children),c,p,t.sourceSpan,t.startSourceSpan,m,t.nameSpan,t.i18n)}return{node:a,errors:o}}function rte(t,i,e){let n=dte(t),o=t.parameters.length>0?mv(t.parameters[0],e):e.parseBinding("",!1,t.sourceSpan,0),r=[],a=[],c=[],m=null,p=null;for(let g of t.children){if(!(g instanceof dl))continue;if((g.name!=="case"||g.parameters.length===0)&&g.name!=="default"&&g.name!=="default never"){a.push(new $x(g.name,g.sourceSpan,g.nameSpan));continue}p!==null&&n.push(new mn(g.sourceSpan,'@default block with "never" parameter must be the last case in a switch'));let M=g.name==="case",C=null;if(M)C=mv(g.parameters[0],e);else if(g.name==="default never"){(g.children.length>0||g.endSourceSpan!==null&&g.endSourceSpan.start.offset!==g.endSourceSpan.end.offset)&&n.push(new mn(g.sourceSpan,'@default block with "never" parameter cannot have a body')),c.length>0&&n.push(new mn(g.sourceSpan,'A @case block with no body cannot be followed by a @default block with "never" parameter')),p=new bD(g.sourceSpan,g.startSourceSpan,g.endSourceSpan,g.nameSpan);continue}let _=new vD(C,g.sourceSpan,g.startSourceSpan,g.endSourceSpan,g.nameSpan);if(c.push(_),g.children.length===0&&g.endSourceSpan!==null&&g.endSourceSpan.start.offset===g.endSourceSpan.end.offset){m===null&&(m=g.sourceSpan);continue}let S=g.sourceSpan,y=g.startSourceSpan;m!==null&&(S=new bn(m.start,g.sourceSpan.end),y=new bn(m.start,g.startSourceSpan.end),m=null);let k=new z0(c,Do(i,g.children,g.children),S,y,g.endSourceSpan,g.nameSpan,g.i18n);r.push(k),c=[]}return{node:new zx(o,r,a,p,t.sourceSpan,t.startSourceSpan,t.endSourceSpan,t.nameSpan),errors:n}}function ate(t,i,e){if(t.parameters.length===0)return i.push(new mn(t.startSourceSpan,"@for loop does not have an expression")),null;let[n,...o]=t.parameters,r=mte(n,i)?.match(Zee);if(!r||r[2].trim().length===0)return i.push(new mn(n.sourceSpan,'Cannot parse expression. @for loop expression must match the pattern "<identifier> of <expression>"')),null;let[,a,c]=r;f0.has(a)&&i.push(new mn(n.sourceSpan,`@for loop item name cannot be one of ${Array.from(f0).join(", ")}.`));let m=n.expression.split(" ")[0],p=new bn(n.sourceSpan.start,n.sourceSpan.start.moveBy(m.length)),h={itemName:new Rm(a,"$implicit",p,p),trackBy:null,expression:mv(n,e,c),context:Array.from(f0,g=>{let M=new bn(t.startSourceSpan.end,t.startSourceSpan.end);return new Rm(g,g,M,M)})};for(let g of o){let M=g.expression.match(tte);if(M!==null){let _=new bn(g.sourceSpan.start.moveBy(M[0].length-M[1].length),g.sourceSpan.end);lte(g.sourceSpan,M[1],_,a,h.context,i);continue}let C=g.expression.match(Jee);if(C!==null){if(h.trackBy!==null)i.push(new mn(g.sourceSpan,'@for loop can only have one "track" expression'));else{let _=mv(g,e,C[1]);_.ast instanceof Da&&i.push(new mn(t.startSourceSpan,'@for loop must have a "track" expression'));let w=new bn(g.sourceSpan.start,g.sourceSpan.start.moveBy(5));h.trackBy={expression:_,keywordSpan:w}}continue}i.push(new mn(g.sourceSpan,`Unrecognized @for loop parameter "${g.expression}"`))}return h}function ste(t,i,e){let n=new mP;t.ast.visit(n),n.hasPipe&&e.push(new mn(i,"Cannot use pipes in track expressions"))}function lte(t,i,e,n,o,r){let a=i.split(","),c=e.start;for(let m of a){let p=m.split("="),h=p.length===2?p[0].trim():"",g=p.length===2?p[1].trim():"";if(h.length===0||g.length===0)r.push(new mn(t,'Invalid @for loop "let" parameter. Parameter should match the pattern "<name> = <variable name>"'));else if(!f0.has(g))r.push(new mn(t,`Unknown "let" parameter variable "${g}". The allowed variables are: ${Array.from(f0).join(", ")}`));else if(h===n)r.push(new mn(t,`Invalid @for loop "let" parameter. Variable cannot be called "${n}"`));else if(o.some(M=>M.name===h))r.push(new mn(t,`Duplicate "let" parameter variable "${g}"`));else{let[,M,C]=p[0].match(d6)??[],_=M!==void 0&&p.length===2?new bn(c.moveBy(M.length),c.moveBy(M.length+C.length)):e,w;if(p.length===2){let[,y,k]=p[1].match(d6)??[];w=y!==void 0?new bn(c.moveBy(p[0].length+1+y.length),c.moveBy(p[0].length+1+y.length+k.length)):void 0}let S=new bn(_.start,w?.end??_.end);o.push(new Rm(h,g,S,_,w))}c=c.moveBy(m.length+1)}}function cte(t){let i=[],e=!1;for(let n=0;n<t.length;n++){let o=t[n];o.name==="else"?(e?i.push(new mn(o.startSourceSpan,"Conditional can only have one @else block")):t.length>1&&n<t.length-1?i.push(new mn(o.startSourceSpan,"@else block must be last inside the conditional")):o.parameters.length>0&&i.push(new mn(o.startSourceSpan,"@else block cannot have parameters")),e=!0):D1.test(o.name)||i.push(new mn(o.startSourceSpan,`Unrecognized conditional block @${o.name}`))}return i}function dte(t){let i=[],e=!1;if(t.parameters.length!==1)return i.push(new mn(t.startSourceSpan,"@switch block must have exactly one parameter")),i;for(let n of t.children)if(!(n instanceof rv||n instanceof Ou&&n.value.trim().length===0)){if(!(n instanceof dl)||n.name!=="case"&&n.name!=="default"&&n.name!=="default never"){i.push(new mn(n.sourceSpan,"@switch block can only contain @case and @default blocks"));continue}n.name==="default never"?(e&&i.push(new mn(n.startSourceSpan,"@switch block can only have one @default block")),e=!0):n.name==="default"?(e?i.push(new mn(n.startSourceSpan,"@switch block can only have one @default block")):n.parameters.length>0&&i.push(new mn(n.startSourceSpan,"@default block cannot have parameters")),e=!0):n.name==="case"&&n.parameters.length!==1&&i.push(new mn(n.startSourceSpan,"@case block must have exactly one parameter"))}return i}function mv(t,i,e){let n,o;return typeof e=="string"?(n=Math.max(0,t.expression.lastIndexOf(e)),o=n+e.length):(n=0,o=t.expression.length),i.parseBinding(t.expression.slice(n,o),!1,t.sourceSpan,t.sourceSpan.start.offset+n)}function u6(t,i,e){if(t.parameters.length===0)return i.push(new mn(t.startSourceSpan,"Conditional block does not have an expression")),null;let n=mv(t.parameters[0],e),o=null;for(let r=1;r<t.parameters.length;r++){let a=t.parameters[r],c=a.expression.match(ete);if(c===null)i.push(new mn(a.sourceSpan,`Unrecognized conditional parameter "${a.expression}"`));else if(t.name!=="if"&&!D1.test(t.name))i.push(new mn(a.sourceSpan,'"as" expression is only allowed on `@if` and `@else if` blocks'));else if(o!==null)i.push(new mn(a.sourceSpan,'Conditional can only have one "as" expression'));else{let m=c[2].trim();if(nte.test(m)){let p=a.sourceSpan.start.moveBy(c[1].length),h=new bn(p,p.moveBy(m.length));o=new Rm(m,m,h,h)}else i.push(new mn(a.sourceSpan,'"as" expression must be a valid JavaScript identifier'))}}return{expression:n,expressionAlias:o}}function mte(t,i){let e=t.expression,n=/^\s$/,o=0,r=0,a=e.length-1;for(let c=0;c<e.length;c++){let m=e[c];if(m==="(")r=c+1,o++;else{if(n.test(m))continue;break}}if(o===0)return e;for(let c=e.length-1;c>-1;c--){let m=e[c];if(m===")"){if(a=c,o--,o===0)break}else{if(n.test(m))continue;break}}return o!==0?(i.push(new mn(t.sourceSpan,"Unclosed parentheses in expression")),null):e.slice(r,a)}var mP=class extends mf{hasPipe=!1;visitPipe(){this.hasPipe=!0}},pte=/^\d+\.?\d*(ms|s)?$/,ute=/^\s$/,h6=new Map([[ml,Ga],[Oc,Ed],[qa,Pr]]),Wa=(function(t){return t.IDLE="idle",t.TIMER="timer",t.INTERACTION="interaction",t.IMMEDIATE="immediate",t.HOVER="hover",t.VIEWPORT="viewport",t.NEVER="never",t})(Wa||{});function hte({expression:t,sourceSpan:i},e,n){let o=t.indexOf("never"),r=new bn(i.start.moveBy(o),i.start.moveBy(o+5)),a=WP(t,i),c=qP(t,i);o===-1?n.push(new mn(i,'Could not find "never" keyword in expression')):XP("never",e,n,new hD(r,i,a,null,c))}function UE({expression:t,sourceSpan:i},e,n,o){let r=t.indexOf("when"),a=new bn(i.start.moveBy(r),i.start.moveBy(r+4)),c=WP(t,i),m=qP(t,i);if(r===-1)o.push(new mn(i,'Could not find "when" keyword in expression'));else{let p=pv(t,r+1),h=e.parseBinding(t.slice(p),!1,i,i.start.offset+p);XP("when",n,o,new Lx(h,i,c,a,m))}}function GE({expression:t,sourceSpan:i},e,n,o,r){let a=t.indexOf("on"),c=new bn(i.start.moveBy(a),i.start.moveBy(a+2)),m=WP(t,i),p=qP(t,i);if(a===-1)o.push(new mn(i,'Could not find "on" keyword in expression'));else{let h=pv(t,a+1),g=t.startsWith("hydrate");new pP(t,e,h,i,n,o,g?yte:xte,g,m,c,p).parse()}}function WP(t,i){return t.startsWith("prefetch")?new bn(i.start,i.start.moveBy(8)):null}function qP(t,i){return t.startsWith("hydrate")?new bn(i.start,i.start.moveBy(7)):null}var pP=class{expression;bindingParser;start;span;triggers;errors;validator;isHydrationTrigger;prefetchSpan;onSourceSpan;hydrateSpan;index=0;tokens;constructor(i,e,n,o,r,a,c,m,p,h,g){this.expression=i,this.bindingParser=e,this.start=n,this.span=o,this.triggers=r,this.errors=a,this.validator=c,this.isHydrationTrigger=m,this.prefetchSpan=p,this.onSourceSpan=h,this.hydrateSpan=g,this.tokens=new lv().tokenize(i.slice(n))}parse(){for(;this.tokens.length>0&&this.index<this.tokens.length;){let i=this.token();if(!i.isIdentifier()){this.unexpectedToken(i);break}if(this.isFollowedByOrLast(Pa))this.consumeTrigger(i,[]),this.advance();else if(this.isFollowedByOrLast(qa)){this.advance();let e=this.errors.length,n=this.consumeParameters();if(this.errors.length!==e)break;this.consumeTrigger(i,n),this.advance()}else this.index<this.tokens.length-1&&this.unexpectedToken(this.tokens[this.index+1]);this.advance()}}advance(){this.index++}isFollowedByOrLast(i){return this.index===this.tokens.length-1?!0:this.tokens[this.index+1].isCharacter(i)}token(){return this.tokens[Math.min(this.index,this.tokens.length-1)]}consumeTrigger(i,e){let n=this.span.start.moveBy(this.start+i.index-this.tokens[0].index),o=new bn(n,n.moveBy(i.strValue.length)),r=n.moveBy(this.token().end-i.index),a=i.index===0,c=a?this.onSourceSpan:null,m=a?this.prefetchSpan:null,p=a?this.hydrateSpan:null,h=new bn(a?this.span.start:n,r);try{switch(i.toString()){case Wa.IDLE:this.trackTrigger("idle",fte(e,o,h,m,c,p));break;case Wa.TIMER:this.trackTrigger("timer",gte(e,o,h,this.prefetchSpan,this.onSourceSpan,this.hydrateSpan));break;case Wa.INTERACTION:this.trackTrigger("interaction",bte(e,o,h,this.prefetchSpan,this.onSourceSpan,this.hydrateSpan,this.validator));break;case Wa.IMMEDIATE:this.trackTrigger("immediate",_te(e,o,h,this.prefetchSpan,this.onSourceSpan,this.hydrateSpan));break;case Wa.HOVER:this.trackTrigger("hover",vte(e,o,h,this.prefetchSpan,this.onSourceSpan,this.hydrateSpan,this.validator));break;case Wa.VIEWPORT:this.trackTrigger("viewport",Cte(this.start,this.isHydrationTrigger,this.bindingParser,e,o,h,this.prefetchSpan,this.onSourceSpan,this.hydrateSpan,this.validator));break;default:throw new Error(`Unrecognized trigger type "${i}"`)}}catch(g){this.error(i,g.message)}}consumeParameters(){let i=[];if(!this.token().isCharacter(qa))return this.unexpectedToken(this.token()),i;this.advance();let e=[],n=[];for(;this.index<this.tokens.length;){let o=this.token();if(o.isCharacter(Pr)&&e.length===0){n.length&&i.push({expression:this.tokenRangeText(n),start:n[0].index});break}if(o.type===_n.Character&&h6.has(o.numValue)&&e.push(h6.get(o.numValue)),e.length>0&&o.isCharacter(e[e.length-1])&&e.pop(),e.length===0&&o.isCharacter(Pa)&&n.length>0){i.push({expression:this.tokenRangeText(n),start:n[0].index}),this.advance(),n=[];continue}n.push(o),this.advance()}return(!this.token().isCharacter(Pr)||e.length>0)&&this.error(this.token(),"Unexpected end of expression"),this.index<this.tokens.length-1&&!this.tokens[this.index+1].isCharacter(Pa)&&this.unexpectedToken(this.tokens[this.index+1]),i}tokenRangeText(i){return i.length===0?"":this.expression.slice(this.start+i[0].index,this.start+i[i.length-1].end)}trackTrigger(i,e){XP(i,this.triggers,this.errors,e)}error(i,e){let n=this.span.start.moveBy(this.start+i.index),o=n.moveBy(i.end-i.index);this.errors.push(new mn(new bn(n,o),e))}unexpectedToken(i){this.error(i,`Unexpected token "${i}"`)}};function XP(t,i,e,n){i[t]?e.push(new mn(n.sourceSpan,`Duplicate "${t}" trigger is not allowed`)):i[t]=n}function fte(t,i,e,n,o,r){if(t.length>0)throw new Error(`"${Wa.IDLE}" trigger cannot have parameters`);return new fD(i,e,n,o,r)}function gte(t,i,e,n,o,r){if(t.length!==1)throw new Error(`"${Wa.TIMER}" trigger must have exactly one parameter`);let a=v1(t[0].expression);if(a===null)throw new Error(`Could not parse time value of trigger "${Wa.TIMER}"`);return new _D(a,i,e,n,o,r)}function _te(t,i,e,n,o,r){if(t.length>0)throw new Error(`"${Wa.IMMEDIATE}" trigger cannot have parameters`);return new gD(i,e,n,o,r)}function vte(t,i,e,n,o,r,a){return a(Wa.HOVER,t),new Bx(t[0]?.expression??null,i,e,n,o,r)}function bte(t,i,e,n,o,r,a){return a(Wa.INTERACTION,t),new Vx(t[0]?.expression??null,i,e,n,o,r)}function Cte(t,i,e,n,o,r,a,c,m,p){p(Wa.VIEWPORT,n);let h,g;if(n.length===0)h=g=null;else if(!n[0].expression.startsWith("{"))h=n[0].expression,g=null;else{let M=e.parseBinding(n[0].expression,!1,r,r.start.offset+t+n[0].start);if(M.ast instanceof ku){if(M.ast.keys.some(_=>_.kind==="spread"))throw new Error("Spread operator are not allowed in this context");if(M.ast.keys.some(_=>_.kind==="property"&&_.key==="root"))throw new Error('The "root" option is not supported in the options parameter of the "viewport" trigger')}else throw new Error('Options parameter of the "viewport" trigger must be an object literal');let C=M.ast.keys.findIndex(_=>_.kind==="property"&&_.key==="trigger");if(C===-1)h=null,g=M.ast;else{let _=M.ast.values[C],w=(S,y)=>y!==C;if(!(_ instanceof Ac)||!(_.receiver instanceof Bc))throw new Error('"trigger" option of the "viewport" trigger must be an identifier');h=_.name,g=new ku(M.ast.span,M.ast.sourceSpan,M.ast.keys.filter(w),M.ast.values.filter(w))}}if(i&&h!==null)throw new Error('"viewport" hydration trigger cannot have a "trigger"');if(g){let M=uP.findDynamicNode(g);if(M!==null)throw new Error(`Options of the "viewport" trigger must be an object literal containing only literal values, but "${M.constructor.name}" was found`)}return new F0(h,g,o,r,a,c,m)}function xte(t,i){if(i.length>1)throw new Error(`"${t}" trigger can only have zero or one parameters`)}function yte(t,i){if(t===Wa.VIEWPORT){if(i.length>1)throw new Error(`Hydration trigger "${t}" cannot have more than one parameter`);return}if(i.length>0)throw new Error(`Hydration trigger "${t}" cannot have parameters`)}function pv(t,i=0){let e=!1;for(let n=i;n<t.length;n++)if(ute.test(t[n]))e=!0;else if(e)return n;return-1}function v1(t){let i=t.match(pte);if(!i)return null;let[e,n]=i;return parseFloat(e)*(n==="s"?1e3:1)}var uP=class t extends mf{dynamicNode=null;static findDynamicNode(i){let e=new t;return e.visit(i),e.dynamicNode}visit(i){!(i instanceof ps)&&!(i instanceof ds)&&!(i instanceof T0)&&!(i instanceof ku)?this.dynamicNode=i:super.visit(i)}},Ste=/^prefetch\s+when\s/,wte=/^prefetch\s+on\s/,Mte=/^hydrate\s+when\s/,kte=/^hydrate\s+on\s/,Tte=/^hydrate\s+never(\s*)$/,XL=/^minimum\s/,Ete=/^after\s/,Dte=/^when\s/,Pte=/^on\s/;function hP(t){return t==="placeholder"||t==="loading"||t==="error"}function Ite(t,i,e,n){let o=[],{placeholder:r,loading:a,error:c}=Ate(i,o,e),{triggers:m,prefetchTriggers:p,hydrateTriggers:h}=Fte(t,n,o),g=t.endSourceSpan,M=t.sourceSpan.end;if(i.length>0){let w=i[i.length-1];g=w.endSourceSpan,M=w.sourceSpan.end}let C=new bn(t.sourceSpan.start,M);return{node:new Tu(Do(e,t.children,t.children),m,p,h,r,a,c,t.nameSpan,C,t.sourceSpan,t.startSourceSpan,g,t.i18n),errors:o}}function Ate(t,i,e){let n=null,o=null,r=null;for(let a of t)try{if(!hP(a.name)){i.push(new mn(a.startSourceSpan,`Unrecognized block "@${a.name}"`));break}switch(a.name){case"placeholder":n!==null?i.push(new mn(a.startSourceSpan,"@defer block can only have one @placeholder block")):n=Ote(a,e);break;case"loading":o!==null?i.push(new mn(a.startSourceSpan,"@defer block can only have one @loading block")):o=Nte(a,e);break;case"error":r!==null?i.push(new mn(a.startSourceSpan,"@defer block can only have one @error block")):r=Rte(a,e);break}}catch(c){i.push(new mn(a.startSourceSpan,c.message))}return{placeholder:n,loading:o,error:r}}function Ote(t,i){let e=null;for(let n of t.parameters)if(XL.test(n.expression)){if(e!=null)throw new Error('@placeholder block can only have one "minimum" parameter');let o=v1(n.expression.slice(pv(n.expression)));if(o===null)throw new Error('Could not parse time value of parameter "minimum"');e=o}else throw new Error(`Unrecognized parameter in @placeholder block: "${n.expression}"`);return new L0(Do(i,t.children,t.children),e,t.nameSpan,t.sourceSpan,t.startSourceSpan,t.endSourceSpan,t.i18n)}function Nte(t,i){let e=null,n=null;for(let o of t.parameters)if(Ete.test(o.expression)){if(e!=null)throw new Error('@loading block can only have one "after" parameter');let r=v1(o.expression.slice(pv(o.expression)));if(r===null)throw new Error('Could not parse time value of parameter "after"');e=r}else if(XL.test(o.expression)){if(n!=null)throw new Error('@loading block can only have one "minimum" parameter');let r=v1(o.expression.slice(pv(o.expression)));if(r===null)throw new Error('Could not parse time value of parameter "minimum"');n=r}else throw new Error(`Unrecognized parameter in @loading block: "${o.expression}"`);return new B0(Do(i,t.children,t.children),e,n,t.nameSpan,t.sourceSpan,t.startSourceSpan,t.endSourceSpan,t.i18n)}function Rte(t,i){if(t.parameters.length>0)throw new Error("@error block cannot have parameters");return new V0(Do(i,t.children,t.children),t.nameSpan,t.sourceSpan,t.startSourceSpan,t.endSourceSpan,t.i18n)}function Fte(t,i,e,n){let o={},r={},a={};for(let c of t.parameters)Dte.test(c.expression)?UE(c,i,o,e):Pte.test(c.expression)?GE(c,i,o,e):Ste.test(c.expression)?UE(c,i,r,e):wte.test(c.expression)?GE(c,i,r,e):Mte.test(c.expression)?UE(c,i,a,e):kte.test(c.expression)?GE(c,i,a,e):Tte.test(c.expression)?hte(c,a,e):e.push(new mn(c.sourceSpan,"Unrecognized trigger"));return a.never&&Object.keys(a).length>1&&e.push(new mn(t.startSourceSpan,"Cannot specify additional `hydrate` triggers if `hydrate never` is present")),{triggers:o,prefetchTriggers:r,hydrateTriggers:a}}var Lte=/^(?:(bind-)|(let-)|(ref-|#)|(on-)|(bindon-)|(@))(.*)$/,f6=1,g6=2,_6=3,v6=4,b6=5,Bte=6,e0=7,Mm={BANANA_BOX:{start:"[(",end:")]"},PROPERTY:{start:"[",end:"]"},EVENT:{start:"(",end:")"}},WE="*",Vte=new Set(["link","style","script","ng-template","ng-container","ng-content"]),zte=new Set(["ngProjectAs","ngNonBindable"]);function jte(t,i,e){let n=new fP(i,e),o=Do(n,t,t),r=i.errors.concat(n.errors),a={nodes:o,errors:r,styleUrls:n.styleUrls,styles:n.styles,ngContentSelectors:n.ngContentSelectors};return e.collectCommentNodes&&(a.commentNodes=n.commentNodes),a}var fP=class{bindingParser;options;errors=[];styles=[];styleUrls=[];ngContentSelectors=[];commentNodes=[];inI18nBlock=!1;processedNodes=new Set;constructor(i,e){this.bindingParser=i,this.options=e}visitElement(i){let e=ux(i.i18n);e&&(this.inI18nBlock&&this.reportError("Cannot mark an element as translatable inside of a translatable section. Please remove the nested i18n marker.",i.sourceSpan),this.inI18nBlock=!0);let n=qL(i);if(n.type===Vs.SCRIPT)return null;if(n.type===Vs.STYLE){let y=$te(i);return y!==null&&this.styles.push(y),null}else if(n.type===Vs.STYLESHEET&&zee(n.hrefAttr))return this.styleUrls.push(n.hrefAttr),null;let o=UW(i.name),{attributes:r,boundEvents:a,references:c,variables:m,templateVariables:p,elementHasInlineTemplate:h,parsedProperties:g,templateParsedProperties:M,i18nAttrsMeta:C}=this.prepareAttributes(i.attrs,o),_=this.extractDirectives(i),w;n.nonBindable?w=Do(C6,i.children).flat(1/0):w=Do(this,i.children,i.children);let S;if(n.type===Vs.NG_CONTENT){let y=n.selectAttr,k=i.attrs.map(I=>this.visitAttribute(I));S=new ff(y,k,w,i.isSelfClosing,i.sourceSpan,i.startSourceSpan,i.endSourceSpan,i.i18n),this.ngContentSelectors.push(y)}else if(o){let y=this.categorizePropertyAttributes(i.name,g,C);S=new js(i.name,r,y.bound,a,_,[],w,c,m,i.isSelfClosing,i.sourceSpan,i.startSourceSpan,i.endSourceSpan,i.i18n)}else{let y=this.categorizePropertyAttributes(i.name,g,C);if(i.name==="ng-container")for(let k of y.bound)k.type===Li.Attribute&&this.reportError("Attribute bindings are not supported on ng-container. Use property bindings instead.",k.sourceSpan);S=new Vc(i.name,r,y.bound,a,_,w,c,i.isSelfClosing,i.sourceSpan,i.startSourceSpan,i.endSourceSpan,i.isVoid,i.i18n)}return h&&(S=this.wrapInTemplate(S,M,p,C,o,e)),e&&(this.inI18nBlock=!1),S}visitAttribute(i){return new uf(i.name,i.value,i.sourceSpan,i.keySpan,i.valueSpan,i.i18n)}visitText(i){return this.processedNodes.has(i)?null:this._visitTextWithInterpolation(i.value,i.sourceSpan,i.tokens,i.i18n)}visitExpansion(i){if(!i.i18n)return null;if(!ux(i.i18n))throw new Error(`Invalid type "${i.i18n.constructor}" for "i18n" property of ${i.sourceSpan.toString()}. Expected a "Message"`);let e=i.i18n,n={},o={};return Object.keys(e.placeholders).forEach(r=>{let a=e.placeholders[r];if(r.startsWith(XW)){let c=r.trim(),m=this.bindingParser.parseInterpolationExpression(a.text,a.sourceSpan);n[c]=new pf(m,a.sourceSpan)}else o[r]=this._visitTextWithInterpolation(a.text,a.sourceSpan,null)}),new B6(n,o,i.sourceSpan,e)}visitExpansionCase(i){return null}visitComment(i){return this.options.collectCommentNodes&&this.commentNodes.push(new w1(i.value||"",i.sourceSpan)),null}visitLetDeclaration(i,e){let n=this.bindingParser.parseBinding(i.value,!1,i.valueSpan,i.valueSpan.start.offset);return n.errors.length===0&&n.ast instanceof Da&&this.reportError("@let declaration value cannot be empty",i.valueSpan),new IP(i.name,n,i.sourceSpan,i.nameSpan,i.valueSpan)}visitComponent(i){let e=ux(i.i18n);if(e&&(this.inI18nBlock&&this.reportError("Cannot mark a component as translatable inside of a translatable section. Please remove the nested i18n marker.",i.sourceSpan),this.inI18nBlock=!0),i.tagName!==null&&Vte.has(i.tagName))return this.reportError(`Tag name "${i.tagName}" cannot be used as a component tag`,i.startSourceSpan),null;let{attributes:n,boundEvents:o,references:r,templateVariables:a,elementHasInlineTemplate:c,parsedProperties:m,templateParsedProperties:p,i18nAttrsMeta:h}=this.prepareAttributes(i.attrs,!1);this.validateSelectorlessReferences(r);let g=this.extractDirectives(i),M;i.attrs.find(w=>w.name==="ngNonBindable")?M=Do(C6,i.children).flat(1/0):M=Do(this,i.children,i.children);let C=this.categorizePropertyAttributes(i.tagName,m,h),_=new l0(i.componentName,i.tagName,i.fullName,n,C.bound,o,g,M,r,i.isSelfClosing,i.sourceSpan,i.startSourceSpan,i.endSourceSpan,i.i18n);return c&&(_=this.wrapInTemplate(_,p,a,h,!1,e)),e&&(this.inI18nBlock=!1),_}visitDirective(){return null}visitBlockParameter(){return null}visitBlock(i,e){let n=Array.isArray(e)?e.indexOf(i):-1;if(n===-1)throw new Error("Visitor invoked incorrectly. Expecting visitBlock to be invoked siblings array as its context");if(this.processedNodes.has(i))return null;let o=null;switch(i.name){case"defer":o=Ite(i,this.findConnectedBlocks(n,e,hP),this,this.bindingParser);break;case"switch":o=rte(i,this,this.bindingParser);break;case"for":o=ote(i,this.findConnectedBlocks(n,e,m6),this,this.bindingParser);break;case"if":o=ite(i,this.findConnectedBlocks(n,e,p6),this,this.bindingParser);break;default:let r;hP(i.name)?(r=`@${i.name} block can only be used after an @defer block.`,this.processedNodes.add(i)):m6(i.name)?(r=`@${i.name} block can only be used after an @for block.`,this.processedNodes.add(i)):p6(i.name)?(r=`@${i.name} block can only be used after an @if or @else if block.`,this.processedNodes.add(i)):r=`Unrecognized block @${i.name}.`,o={node:new $x(i.name,i.sourceSpan,i.nameSpan),errors:[new mn(i.sourceSpan,r)]};break}return this.errors.push(...o.errors),o.node}findConnectedBlocks(i,e,n){let o=[];for(let r=i+1;r<e.length;r++){let a=e[r];if(!(a instanceof rv)){if(a instanceof Ou&&a.value.trim().length===0){this.processedNodes.add(a);continue}if(!(a instanceof dl)||!n(a.name))break;o.push(a),this.processedNodes.add(a)}}return o}categorizePropertyAttributes(i,e,n){let o=[],r=[];return e.forEach(a=>{let c=n[a.name];if(a.isLiteral)r.push(new uf(a.name,a.expression.source||"",a.sourceSpan,a.keySpan,a.valueSpan,c));else{let m=this.bindingParser.createBoundElementProperty(i,a,!0,!1);o.push(pD.fromBoundElementProperty(m,c))}}),{bound:o,literal:r}}prepareAttributes(i,e){let n=[],o=[],r=[],a=[],c=[],m={},p=[],h=[],g=!1;for(let M of i){let C=!1,_=x6(M.name),w=!1;if(M.i18n&&(m[M.name]=M.i18n),_.startsWith(WE)){g&&this.reportError("Can't have multiple template bindings on one element. Use only one attribute prefixed with *",M.sourceSpan),w=!0,g=!0;let S=M.value,y=_.substring(WE.length),k=[],I=M.valueSpan?M.valueSpan.fullStart.offset:M.sourceSpan.fullStart.offset+M.name.length;this.bindingParser.parseInlineTemplateBinding(y,S,M.sourceSpan,I,[],p,k,!0),h.push(...k.map(E=>new Rm(E.name,E.value,E.sourceSpan,E.keySpan,E.valueSpan)))}else C=this.parseAttribute(e,M,[],n,o,r,a);!C&&!w&&c.push(this.visitAttribute(M))}return{attributes:c,boundEvents:o,references:a,variables:r,templateVariables:h,elementHasInlineTemplate:g,parsedProperties:n,templateParsedProperties:p,i18nAttrsMeta:m}}parseAttribute(i,e,n,o,r,a,c){let m=x6(e.name),p=e.value,h=e.sourceSpan,g=e.valueSpan?e.valueSpan.fullStart.offset:h.fullStart.offset;function M(y,k,I){let E=e.name.length-m.length,N=y.start.moveBy(k.length+E),T=N.moveBy(I.length);return new bn(N,T,N,I)}let C=m.match(Lte);if(C){if(C[f6]!=null){let y=C[e0],k=M(h,C[f6],y);this.bindingParser.parsePropertyBinding(y,p,!1,!1,h,g,e.valueSpan,n,o,k)}else if(C[g6])if(i){let y=C[e0],k=M(h,C[g6],y);this.parseVariable(y,p,h,k,e.valueSpan,a)}else this.reportError('"let-" is only supported on ng-template elements.',h);else if(C[_6]){let y=C[e0],k=M(h,C[_6],y);this.parseReference(y,p,h,k,e.valueSpan,c)}else if(C[v6]){let y=[],k=C[e0],I=M(h,C[v6],k);this.bindingParser.parseEvent(k,p,!1,h,e.valueSpan||h,n,y,I),qE(y,r)}else if(C[b6]){let y=C[e0],k=M(h,C[b6],y);this.bindingParser.parsePropertyBinding(y,p,!1,!0,h,g,e.valueSpan,n,o,k),this.parseAssignmentEvent(y,p,h,e.valueSpan,n,r,k,g)}else if(C[Bte]){let y=M(h,"",m);this.bindingParser.parseLiteralAttr(m,p,h,g,e.valueSpan,n,o,y)}return!0}let _=null;if(m.startsWith(Mm.BANANA_BOX.start)?_=Mm.BANANA_BOX:m.startsWith(Mm.PROPERTY.start)?_=Mm.PROPERTY:m.startsWith(Mm.EVENT.start)&&(_=Mm.EVENT),_!==null&&m.endsWith(_.end)&&m.length>_.start.length+_.end.length){let y=m.substring(_.start.length,m.length-_.end.length),k=M(h,_.start,y);if(_.start===Mm.BANANA_BOX.start)this.bindingParser.parsePropertyBinding(y,p,!1,!0,h,g,e.valueSpan,n,o,k),this.parseAssignmentEvent(y,p,h,e.valueSpan,n,r,k,g);else if(_.start===Mm.PROPERTY.start)this.bindingParser.parsePropertyBinding(y,p,!1,!1,h,g,e.valueSpan,n,o,k);else{let I=[];this.bindingParser.parseEvent(y,p,!1,h,e.valueSpan||h,n,I,k),qE(I,r)}return!0}let w=M(h,"",m);return this.bindingParser.parsePropertyInterpolation(m,p,h,e.valueSpan,n,o,w,e.valueTokens??null)}extractDirectives(i){let e=i instanceof Ua?i.tagName:i.name,n=[],o=new Set;for(let r of i.directives){let a=!1;for(let C of r.attrs)C.name.startsWith(WE)?(a=!0,this.reportError(`Shorthand template syntax "${C.name}" is not supported inside a directive context`,C.sourceSpan)):zte.has(C.name)&&(a=!0,this.reportError(`Attribute "${C.name}" is not supported in a directive context`,C.sourceSpan));if(!a&&o.has(r.name)&&(a=!0,this.reportError(`Cannot apply directive "${r.name}" multiple times on the same element`,r.sourceSpan)),a)continue;let{attributes:c,parsedProperties:m,boundEvents:p,references:h,i18nAttrsMeta:g}=this.prepareAttributes(r.attrs,!1);this.validateSelectorlessReferences(h);let{bound:M}=this.categorizePropertyAttributes(e,m,g);for(let C of M)C.type!==Li.Property&&C.type!==Li.TwoWay&&(a=!0,this.reportError("Binding is not supported in a directive context",C.sourceSpan));a||(o.add(r.name),n.push(new L6(r.name,c,M,p,h,r.sourceSpan,r.startSourceSpan,r.endSourceSpan,void 0)))}return n}filterAnimationAttributes(i){return i.filter(e=>!e.name.startsWith("animate."))}filterAnimationInputs(i){return i.filter(e=>e.type!==Li.Animation)}wrapInTemplate(i,e,n,o,r,a){let c=this.categorizePropertyAttributes("ng-template",e,o),m=[];c.literal.forEach(M=>m.push(M)),c.bound.forEach(M=>m.push(M));let p={attributes:[],inputs:[],outputs:[]};(i instanceof Vc||i instanceof l0)&&(p.attributes.push(...this.filterAnimationAttributes(i.attributes)),p.inputs.push(...this.filterAnimationInputs(i.inputs)),p.outputs.push(...i.outputs));let h=r&&a?void 0:i.i18n,g;return i instanceof l0?g=i.tagName:i instanceof js?g=null:g=i.name,new js(g,p.attributes,p.inputs,p.outputs,[],m,[i],[],n,!1,i.sourceSpan,i.startSourceSpan,i.endSourceSpan,h)}_visitTextWithInterpolation(i,e,n,o){let r=ML(i),a=this.bindingParser.parseInterpolation(r,e,n);return a?new pf(a,e,o):new cu(r,e)}parseVariable(i,e,n,o,r,a){i.indexOf("-")>-1?this.reportError('"-" is not allowed in variable names',n):i.length===0&&this.reportError("Variable does not have a name",n),a.push(new Rm(i,e,n,o,r))}parseReference(i,e,n,o,r,a){i.indexOf("-")>-1?this.reportError('"-" is not allowed in reference names',n):i.length===0?this.reportError("Reference does not have a name",n):a.some(c=>c.name===i)&&this.reportError(`Reference "#${i}" is defined more than once`,n),a.push(new $0(i,e,n,o,r))}parseAssignmentEvent(i,e,n,o,r,a,c,m){let p=[];this.bindingParser.parseEvent(`${i}Change`,e,!0,n,o||n,r,p,c),qE(p,a)}validateSelectorlessReferences(i){if(i.length===0)return;let e=new Set;for(let n of i)n.value.length>0?this.reportError("Cannot specify a value for a local reference in this context",n.valueSpan||n.sourceSpan):e.has(n.name)?this.reportError("Duplicate reference names are not allowed",n.sourceSpan):e.add(n.name)}reportError(i,e,n=Pm.ERROR){this.errors.push(new mn(e,i,n))}},gP=class{visitElement(i){let e=qL(i);if(e.type===Vs.SCRIPT||e.type===Vs.STYLE||e.type===Vs.STYLESHEET)return null;let n=Do(this,i.children,null);return new Vc(i.name,Do(this,i.attrs),[],[],[],n,[],i.isSelfClosing,i.sourceSpan,i.startSourceSpan,i.endSourceSpan,i.isVoid)}visitComment(i){return null}visitAttribute(i){return new uf(i.name,i.value,i.sourceSpan,i.keySpan,i.valueSpan,i.i18n)}visitText(i){return new cu(i.value,i.sourceSpan)}visitExpansion(i){return null}visitExpansionCase(i){return null}visitBlock(i,e){let n=[new cu(i.startSourceSpan.toString(),i.startSourceSpan),...Do(this,i.children)];return i.endSourceSpan!==null&&n.push(new cu(i.endSourceSpan.toString(),i.endSourceSpan)),n}visitBlockParameter(i,e){return null}visitLetDeclaration(i,e){return new cu(`@let ${i.name} = ${i.value};`,i.sourceSpan)}visitComponent(i,e){let n=Do(this,i.children,null);return new Vc(i.fullName,Do(this,i.attrs),[],[],[],n,[],i.isSelfClosing,i.sourceSpan,i.startSourceSpan,i.endSourceSpan,!1)}visitDirective(i,e){return null}},C6=new gP;function x6(t){return/^data-/i.test(t)?t.substring(5):t}function qE(t,i){i.push(...t.map(e=>uD.fromParsedEvent(e)))}function $te(t){return t.children.length!==1||!(t.children[0]instanceof Ou)?null:t.children[0].value}var Hte=[" ",`
|
||
`,"\r"," "];function Ute(t,i,e={}){let{preserveWhitespaces:n,enableI18nLegacyMessageIdFormat:o}=e,r=e.enableSelectorless??!1,a=b1(r),m=new sP().parse(t,i,tt(H({leadingTriviaChars:Hte},e),{tokenizeExpansionForms:!0,tokenizeBlocks:e.enableBlockSyntax??!0,tokenizeLet:e.enableLetSyntax??!0,selectorlessEnabled:r}));if(!e.alwaysAttemptHtmlToR3AstConversion&&m.errors&&m.errors.length>0){let E={preserveWhitespaces:n,errors:m.errors,nodes:[],styleUrls:[],styles:[],ngContentSelectors:[]};return e.collectCommentNodes&&(E.commentNodes=[]),E}let p=m.rootNodes,h=!(e.preserveSignificantWhitespace??!0),g=new u1(!n,o,e.preserveSignificantWhitespace,h),M=g.visitAllWithErrors(p);if(!e.alwaysAttemptHtmlToR3AstConversion&&M.errors&&M.errors.length>0){let E={preserveWhitespaces:n,errors:M.errors,nodes:[],styleUrls:[],styles:[],ngContentSelectors:[]};return e.collectCommentNodes&&(E.commentNodes=[]),E}p=M.rootNodes,n||(p=Do(new m1(!0,void 0,!1),p),g.hasI18nMeta&&(p=Do(new u1(!1,void 0,!0,h),p)));let{nodes:C,errors:_,styleUrls:w,styles:S,ngContentSelectors:y,commentNodes:k}=jte(p,a,{collectCommentNodes:!!e.collectCommentNodes});_.push(...m.errors,...M.errors);let I={preserveWhitespaces:n,errors:_.length>0?_:null,nodes:C,styleUrls:w,styles:S,ngContentSelectors:y};return e.collectCommentNodes&&(I.commentNodes=k),I}var Gte=new yf;function b1(t=!1){return new lP(new p1(new lv,t),Gte,[])}var QL="%COMP%",Wte=`_nghost-${QL}`,qte=`_ngcontent-${QL}`;function YL(t,i,e){let n=new Bm,o=TP(t.selector);return n.set("type",t.type.value),o.length>0&&n.set("selectors",Yh(o)),t.queries.length>0&&n.set("contentQueries",Ree(t.queries,i,t.name)),t.viewQueries.length&&n.set("viewQuery",Nee(t.viewQueries,i,t.name)),n.set("hostBindings",tne(t.host,t.typeSourceSpan,e,i,t.selector||"",t.name,n)),n.set("inputs",YR(t.inputs,!0)),n.set("outputs",YR(t.outputs)),t.exportAs!==null&&n.set("exportAs",oo(t.exportAs.map(r=>Ee(r)))),t.isStandalone===!1&&n.set("standalone",Ee(!1)),t.isSignal&&n.set("signals",Ee(!0)),n}function KL(t,i){let e=[],n=i.providers,o=i.viewProviders;if(n||o){let r=[n||new Lc([])];o&&r.push(o),e.push(Zt(he.ProvidersFeature).callFn(r))}if(i.hostDirectives?.length&&e.push(Zt(he.HostDirectivesFeature).callFn([ane(i.hostDirectives)])),i.usesInheritance&&e.push(Zt(he.InheritDefinitionFeature)),i.lifecycle.usesOnChanges&&e.push(Zt(he.NgOnChangesFeature)),i.controlCreate!==null&&e.push(Zt(he.ControlFeature).callFn([Ee(i.controlCreate.passThroughInput)])),"externalStyles"in i&&i.externalStyles?.length){let r=i.externalStyles.map(a=>Ee(a));e.push(Zt(he.ExternalStylesFeature).callFn([oo(r)]))}e.length&&t.set("features",oo(e))}function Xte(t,i,e){let n=YL(t,i,e);KL(n,t);let o=Zt(he.defineDirective).callFn([n.toLiteralMap()],void 0,!0),r=ene(t);return{expression:o,type:r,statements:[]}}function Qte(t,i,e){let n=YL(t,i,e);KL(n,t);let o=t.selector&&of.parse(t.selector),r=o&&o[0];if(r){let _=r.getAttrs();_.length&&n.set("attrs",i.getConstLiteral(oo(_.map(w=>w!=null?Ee(w):Ee(void 0))),!0))}let a=t.name,c=null;if(t.defer.mode===1&&t.defer.dependenciesFn!==null){let _=`${a}_DeferFn`;i.statements.push(new qr(_,t.defer.dependenciesFn,void 0,fa.Final)),c=si(_)}let m=t.isStandalone&&!t.hasDirectiveDependencies?cs.DomOnly:cs.Full,p=cee(t.name,t.template.nodes,i,m,t.relativeContextFilePath,t.i18nUseExternalIds,t.defer,c,t.relativeTemplatePath,Iee());LL(p,Vt.Tmpl);let h=ree(p,i);if(p.contentSelectors!==null&&n.set("ngContentSelectors",p.contentSelectors),n.set("decls",Ee(p.root.decls)),n.set("vars",Ee(p.root.vars)),p.consts.length>0&&(p.constsInitializers.length>0?n.set("consts",Us([],[...p.constsInitializers,new Ar(oo(p.consts))])):n.set("consts",oo(p.consts))),n.set("template",h),t.declarationListEmitMode!==3&&t.declarations.length>0)n.set("dependencies",Kte(oo(t.declarations.map(_=>_.type)),t.declarationListEmitMode));else if(t.declarationListEmitMode===3){let _=[t.type.value];t.rawImports&&_.push(t.rawImports),n.set("dependencies",Zt(he.getComponentDepsFactory).callFn(_))}t.encapsulation===null&&(t.encapsulation=iu.Emulated);let g=!!t.externalStyles?.length;if(t.styles&&t.styles.length){let w=(t.encapsulation==iu.Emulated?rne(t.styles,qte,Wte):t.styles).reduce((S,y)=>(y.trim().length>0&&S.push(i.getConstLiteral(Ee(y))),S),[]);w.length>0&&(g=!0,n.set("styles",oo(w)))}!g&&t.encapsulation===iu.Emulated&&(t.encapsulation=iu.None),t.encapsulation!==iu.Emulated&&n.set("encapsulation",Ee(t.encapsulation)),t.animations!==null&&n.set("data",gl([{key:"animation",value:t.animations,quoted:!1}])),t.changeDetection!==null&&(typeof t.changeDetection=="number"&&t.changeDetection!==kP.Default?n.set("changeDetection",Ee(t.changeDetection)):typeof t.changeDetection=="object"&&n.set("changeDetection",t.changeDetection));let M=Zt(he.defineComponent).callFn([n.toLiteralMap()],void 0,!0),C=Yte(t);return{expression:M,type:C,statements:[]}}function Yte(t){let i=ZL(t);return i.push(vP(t.template.ngContentSelectors)),i.push(ga(Ee(t.isStandalone))),i.push(JL(t)),t.isSignal&&i.push(ga(Ee(t.isSignal))),ga(Zt(he.ComponentDeclaration,i))}function Kte(t,i){switch(i){case 0:return t;case 1:return Us([],t);case 2:let e=t.prop("map").callFn([Zt(he.resolveForwardRef)]);return Us([],e);case 3:throw new Error("Unsupported with an array of pre-resolved dependencies")}}function Zte(t){return ga(Ee(t))}function _P(t){let i=Object.keys(t).map(e=>{let n=Array.isArray(t[e])?t[e][0]:t[e];return{key:e,value:Ee(n),quoted:!0}});return gl(i)}function vP(t){return t.length>0?ga(oo(t.map(i=>Ee(i)))):Rc}function ZL(t){let i=t.selector!==null?t.selector.replace(/\n/g,""):null;return[S1(t.type.type,t.typeArgumentCount),i!==null?Zte(i):Rc,t.exportAs!==null?vP(t.exportAs):Rc,ga(Jte(t)),ga(_P(t.outputs)),vP(t.queries.map(e=>e.propertyName))]}function Jte(t){return gl(Object.keys(t.inputs).map(i=>{let e=t.inputs[i],n=[{key:"alias",value:Ee(e.bindingPropertyName),quoted:!0},{key:"required",value:Ee(e.required),quoted:!0}];return e.isSignal&&n.push({key:"isSignal",value:Ee(e.isSignal),quoted:!0}),{key:i,value:gl(n),quoted:!0}}))}function ene(t){let i=ZL(t);return i.push(Rc),i.push(ga(Ee(t.isStandalone))),i.push(JL(t)),t.isSignal&&i.push(ga(Ee(t.isSignal))),ga(Zt(he.DirectiveDeclaration,i))}function tne(t,i,e,n,o,r,a){let c=e.createBoundHostProperties(t.properties,i),m=e.createDirectiveHostEventAsts(t.listeners,i);t.specialAttributes.styleAttr&&(t.attributes.style=Ee(t.specialAttributes.styleAttr)),t.specialAttributes.classAttr&&(t.attributes.class=Ee(t.specialAttributes.classAttr));let p=dee({componentName:r,componentSelector:o,properties:c,events:m,attributes:t.attributes},e,n);LL(p,Vt.Host),a.set("hostAttrs",p.root.attributes);let h=p.root.vars;return h!==null&&h>0&&a.set("hostVars",Ee(h)),aee(p)}var nne=/^(?:\[([^\]]+)\])|(?:\(([^\)]+)\))$/;function ine(t){let i={},e={},n={},o={};for(let r of Object.keys(t)){let a=t[r],c=r.match(nne);if(c===null)switch(r){case"class":if(typeof a!="string")throw new Error("Class binding must be string");o.classAttr=a;break;case"style":if(typeof a!="string")throw new Error("Style binding must be string");o.styleAttr=a;break;default:typeof a=="string"?i[r]=Ee(a):i[r]=a}else if(c[1]!=null){if(typeof a!="string")throw new Error("Property binding must be string");n[c[1]]=a}else if(c[2]!=null){if(typeof a!="string")throw new Error("Event binding must be string");e[c[2]]=a}}return{attributes:i,listeners:e,properties:n,specialAttributes:o}}function one(t,i){let e=b1();return e.createDirectiveHostEventAsts(t.listeners,i),e.createBoundHostProperties(t.properties,i),e.errors}function rne(t,i,e){let n=new ED;return t.map(o=>n.shimCssText(o,i,e))}function JL(t){return t.hostDirectives?.length?ga(oo(t.hostDirectives.map(i=>gl([{key:"directive",value:uv(i.directive.type),quoted:!1},{key:"inputs",value:_P(i.inputs||{}),quoted:!1},{key:"outputs",value:_P(i.outputs||{}),quoted:!1}])))):Rc}function ane(t){let i=[],e=!1;for(let n of t){if(!n.inputs&&!n.outputs)i.push(n.directive.type);else{let o=[{key:"directive",value:n.directive.type,quoted:!1}];if(n.inputs){let r=y6(n.inputs);r&&o.push({key:"inputs",value:r,quoted:!1})}if(n.outputs){let r=y6(n.outputs);r&&o.push({key:"outputs",value:r,quoted:!1})}i.push(gl(o))}n.isForwardReference&&(e=!0)}return e?new Am([],[new Ar(oo(i))]):oo(i)}function y6(t){let i=[];for(let e in t)t.hasOwnProperty(e)&&i.push(Ee(e),Ee(t[e]));return i.length>0?oo(i):null}var bP=class extends mf{visit(i){i instanceof ps?this.visit(i.ast):i.visit(this)}visitElement(i){this.visitAllTemplateNodes(i.attributes),this.visitAllTemplateNodes(i.inputs),this.visitAllTemplateNodes(i.outputs),this.visitAllTemplateNodes(i.directives),this.visitAllTemplateNodes(i.references),this.visitAllTemplateNodes(i.children)}visitTemplate(i){this.visitAllTemplateNodes(i.attributes),this.visitAllTemplateNodes(i.inputs),this.visitAllTemplateNodes(i.outputs),this.visitAllTemplateNodes(i.directives),this.visitAllTemplateNodes(i.templateAttrs),this.visitAllTemplateNodes(i.variables),this.visitAllTemplateNodes(i.references),this.visitAllTemplateNodes(i.children)}visitContent(i){this.visitAllTemplateNodes(i.children)}visitBoundAttribute(i){this.visit(i.value)}visitBoundEvent(i){this.visit(i.handler)}visitBoundText(i){this.visit(i.value)}visitIcu(i){Object.keys(i.vars).forEach(e=>this.visit(i.vars[e])),Object.keys(i.placeholders).forEach(e=>this.visit(i.placeholders[e]))}visitDeferredBlock(i){i.visitAll(this)}visitDeferredTrigger(i){i instanceof Lx?this.visit(i.value):i instanceof F0&&i.options!==null&&this.visit(i.options)}visitDeferredBlockPlaceholder(i){this.visitAllTemplateNodes(i.children)}visitDeferredBlockError(i){this.visitAllTemplateNodes(i.children)}visitDeferredBlockLoading(i){this.visitAllTemplateNodes(i.children)}visitSwitchBlock(i){this.visit(i.expression),this.visitAllTemplateNodes(i.groups)}visitSwitchBlockCase(i){i.expression&&this.visit(i.expression)}visitSwitchBlockCaseGroup(i){this.visitAllTemplateNodes(i.cases),this.visitAllTemplateNodes(i.children)}visitSwitchExhaustiveCheck(i){}visitForLoopBlock(i){i.item.visit(this),this.visitAllTemplateNodes(i.contextVariables),this.visit(i.expression),this.visitAllTemplateNodes(i.children),i.empty?.visit(this)}visitForLoopBlockEmpty(i){this.visitAllTemplateNodes(i.children)}visitIfBlock(i){this.visitAllTemplateNodes(i.branches)}visitIfBlockBranch(i){i.expression&&this.visit(i.expression),i.expressionAlias?.visit(this),this.visitAllTemplateNodes(i.children)}visitLetDeclaration(i){this.visit(i.value)}visitComponent(i){this.visitAllTemplateNodes(i.attributes),this.visitAllTemplateNodes(i.inputs),this.visitAllTemplateNodes(i.outputs),this.visitAllTemplateNodes(i.directives),this.visitAllTemplateNodes(i.references),this.visitAllTemplateNodes(i.children)}visitDirective(i){this.visitAllTemplateNodes(i.attributes),this.visitAllTemplateNodes(i.inputs),this.visitAllTemplateNodes(i.outputs),this.visitAllTemplateNodes(i.references)}visitVariable(i){}visitReference(i){}visitTextAttribute(i){}visitText(i){}visitUnknownBlock(i){}visitAllTemplateNodes(i){for(let e of i)this.visit(e)}};var CP=class{directiveMatcher;constructor(i){this.directiveMatcher=i}bind(i){if(!i.template&&!i.host)throw new Error("Empty bound targets are not supported");let e=new Map,n=[],o=new Set,r=new Map,a=new Map,c=new Map,m=new Map,p=new Map,h=new Map,g=new Set,M=new Set,C=[];if(i.template){let _=C1.apply(i.template);sne(_,c),xP.apply(i.template,this.directiveMatcher,e,n,o,r,a),x1.applyWithScope(i.template,_,m,p,h,g,M,C)}return i.host&&(e.set(i.host.node,i.host.directives),x1.applyWithScope(i.host.node,C1.apply(i.host.node),m,p,h,g,M,C)),new yP(i,e,n,o,r,a,m,p,h,c,g,M,C)}},C1=class t{parentScope;rootNode;namedEntities=new Map;elementLikeInScope=new Set;childScopes=new Map;isDeferred;constructor(i,e){this.parentScope=i,this.rootNode=e,this.isDeferred=i!==null&&i.isDeferred?!0:e instanceof Tu}static newRootScope(){return new t(null,null)}static apply(i){let e=t.newRootScope();return e.ingest(i),e}ingest(i){i instanceof js?(i.variables.forEach(e=>this.visitVariable(e)),i.children.forEach(e=>e.visit(this))):i instanceof pu?(i.expressionAlias!==null&&this.visitVariable(i.expressionAlias),i.children.forEach(e=>e.visit(this))):i instanceof hf?(this.visitVariable(i.item),i.contextVariables.forEach(e=>this.visitVariable(e)),i.children.forEach(e=>e.visit(this))):i instanceof z0||i instanceof j0||i instanceof Tu||i instanceof V0||i instanceof L0||i instanceof B0||i instanceof ff?i.children.forEach(e=>e.visit(this)):i instanceof H0||i.forEach(e=>e.visit(this))}visitElement(i){this.visitElementLike(i)}visitTemplate(i){i.directives.forEach(e=>e.visit(this)),i.references.forEach(e=>this.visitReference(e)),this.ingestScopedNode(i)}visitVariable(i){this.maybeDeclare(i)}visitReference(i){this.maybeDeclare(i)}visitDeferredBlock(i){this.ingestScopedNode(i),i.placeholder?.visit(this),i.loading?.visit(this),i.error?.visit(this)}visitDeferredBlockPlaceholder(i){this.ingestScopedNode(i)}visitDeferredBlockError(i){this.ingestScopedNode(i)}visitDeferredBlockLoading(i){this.ingestScopedNode(i)}visitSwitchBlock(i){i.groups.forEach(e=>e.visit(this))}visitSwitchBlockCase(i){}visitSwitchBlockCaseGroup(i){this.ingestScopedNode(i)}visitSwitchExhaustiveCheck(i){}visitForLoopBlock(i){this.ingestScopedNode(i),i.empty?.visit(this)}visitForLoopBlockEmpty(i){this.ingestScopedNode(i)}visitIfBlock(i){i.branches.forEach(e=>e.visit(this))}visitIfBlockBranch(i){this.ingestScopedNode(i)}visitContent(i){this.ingestScopedNode(i)}visitLetDeclaration(i){this.maybeDeclare(i)}visitComponent(i){this.visitElementLike(i)}visitDirective(i){i.references.forEach(e=>this.visitReference(e))}visitBoundAttribute(i){}visitBoundEvent(i){}visitBoundText(i){}visitText(i){}visitTextAttribute(i){}visitIcu(i){}visitDeferredTrigger(i){}visitUnknownBlock(i){}visitElementLike(i){i.directives.forEach(e=>e.visit(this)),i.references.forEach(e=>this.visitReference(e)),i.children.forEach(e=>e.visit(this)),this.elementLikeInScope.add(i)}maybeDeclare(i){this.namedEntities.has(i.name)||this.namedEntities.set(i.name,i)}lookup(i){return this.namedEntities.has(i)?this.namedEntities.get(i):this.parentScope!==null?this.parentScope.lookup(i):null}getChildScope(i){let e=this.childScopes.get(i);if(e===void 0)throw new Error(`Assertion error: child scope for ${i} not found`);return e}ingestScopedNode(i){let e=new t(this,i);e.ingest(i),this.childScopes.set(i,e)}},xP=class t{directiveMatcher;directives;eagerDirectives;missingDirectives;bindings;references;isInDeferBlock=!1;constructor(i,e,n,o,r,a){this.directiveMatcher=i,this.directives=e,this.eagerDirectives=n,this.missingDirectives=o,this.bindings=r,this.references=a}static apply(i,e,n,o,r,a,c){new t(e,n,o,r,a,c).ingest(i)}ingest(i){i.forEach(e=>e.visit(this))}visitElement(i){this.visitElementOrTemplate(i)}visitTemplate(i){this.visitElementOrTemplate(i)}visitDeferredBlock(i){let e=this.isInDeferBlock;this.isInDeferBlock=!0,i.children.forEach(n=>n.visit(this)),this.isInDeferBlock=e,i.placeholder?.visit(this),i.loading?.visit(this),i.error?.visit(this)}visitDeferredBlockPlaceholder(i){i.children.forEach(e=>e.visit(this))}visitDeferredBlockError(i){i.children.forEach(e=>e.visit(this))}visitDeferredBlockLoading(i){i.children.forEach(e=>e.visit(this))}visitSwitchBlock(i){i.groups.forEach(e=>e.visit(this))}visitSwitchBlockCase(i){}visitSwitchBlockCaseGroup(i){i.children.forEach(e=>e.visit(this))}visitSwitchExhaustiveCheck(i){}visitForLoopBlock(i){i.item.visit(this),i.contextVariables.forEach(e=>e.visit(this)),i.children.forEach(e=>e.visit(this)),i.empty?.visit(this)}visitForLoopBlockEmpty(i){i.children.forEach(e=>e.visit(this))}visitIfBlock(i){i.branches.forEach(e=>e.visit(this))}visitIfBlockBranch(i){i.expressionAlias?.visit(this),i.children.forEach(e=>e.visit(this))}visitContent(i){i.children.forEach(e=>e.visit(this))}visitComponent(i){if(this.directiveMatcher instanceof fx){let e=this.directiveMatcher.match(i.componentName);e.length>0?this.trackSelectorlessMatchesAndDirectives(i,e):this.missingDirectives.add(i.componentName)}i.directives.forEach(e=>e.visit(this)),i.children.forEach(e=>e.visit(this))}visitDirective(i){if(this.directiveMatcher instanceof fx){let e=this.directiveMatcher.match(i.name);e.length>0?this.trackSelectorlessMatchesAndDirectives(i,e):this.missingDirectives.add(i.name)}}visitElementOrTemplate(i){if(this.directiveMatcher instanceof hx){let e=[],n=KW(i);this.directiveMatcher.match(n,(o,r)=>e.push(...r)),this.trackSelectorBasedBindingsAndDirectives(i,e)}else i.references.forEach(e=>{e.value.trim()===""&&this.references.set(e,i)});i.directives.forEach(e=>e.visit(this)),i.children.forEach(e=>e.visit(this))}trackMatchedDirectives(i,e){e.length>0&&(this.directives.set(i,e),this.isInDeferBlock||this.eagerDirectives.push(...e))}trackSelectorlessMatchesAndDirectives(i,e){if(e.length===0)return;this.trackMatchedDirectives(i,e);let n=(o,r,a)=>{o[a].hasBindingPropertyName(r.name)&&this.bindings.set(r,o)};for(let o of e)i.inputs.forEach(r=>n(o,r,"inputs")),i.attributes.forEach(r=>n(o,r,"inputs")),i.outputs.forEach(r=>n(o,r,"outputs"));i.references.forEach(o=>this.references.set(o,{directive:e[0],node:i}))}trackSelectorBasedBindingsAndDirectives(i,e){this.trackMatchedDirectives(i,e),i.references.forEach(o=>{let r=null;if(o.value.trim()==="")r=e.find(a=>a.isComponent)||null;else if(r=e.find(a=>a.exportAs!==null&&a.exportAs.some(c=>c===o.value))||null,r===null)return;r!==null?this.references.set(o,{directive:r,node:i}):this.references.set(o,i)});let n=(o,r)=>{let a=e.find(m=>m[r].hasBindingPropertyName(o.name)),c=a!==void 0?a:i;this.bindings.set(o,c)};i.inputs.forEach(o=>n(o,"inputs")),i.attributes.forEach(o=>n(o,"inputs")),i instanceof js&&i.templateAttrs.forEach(o=>n(o,"inputs")),i.outputs.forEach(o=>n(o,"outputs"))}visitVariable(i){}visitReference(i){}visitTextAttribute(i){}visitBoundAttribute(i){}visitBoundEvent(i){}visitBoundAttributeOrEvent(i){}visitText(i){}visitBoundText(i){}visitIcu(i){}visitDeferredTrigger(i){}visitUnknownBlock(i){}visitLetDeclaration(i){}},x1=class t extends bP{bindings;symbols;usedPipes;eagerPipes;deferBlocks;nestingLevel;scope;rootNode;level;visitNode=i=>i.visit(this);constructor(i,e,n,o,r,a,c,m,p){super(),this.bindings=i,this.symbols=e,this.usedPipes=n,this.eagerPipes=o,this.deferBlocks=r,this.nestingLevel=a,this.scope=c,this.rootNode=m,this.level=p}static applyWithScope(i,e,n,o,r,a,c,m){let p=i instanceof js?i:null;new t(n,o,a,c,m,r,e,p,0).ingest(i)}ingest(i){if(i instanceof js)i.variables.forEach(this.visitNode),i.children.forEach(this.visitNode),this.nestingLevel.set(i,this.level);else if(i instanceof pu)i.expressionAlias!==null&&this.visitNode(i.expressionAlias),i.children.forEach(this.visitNode),this.nestingLevel.set(i,this.level);else if(i instanceof hf)this.visitNode(i.item),i.contextVariables.forEach(e=>this.visitNode(e)),i.trackBy.visit(this),i.children.forEach(this.visitNode),this.nestingLevel.set(i,this.level);else if(i instanceof Tu){if(this.scope.rootNode!==i)throw new Error(`Assertion error: resolved incorrect scope for deferred block ${i}`);this.deferBlocks.push([i,this.scope]),i.children.forEach(e=>e.visit(this)),this.nestingLevel.set(i,this.level)}else i instanceof z0||i instanceof j0||i instanceof V0||i instanceof L0||i instanceof B0||i instanceof ff?(i.children.forEach(e=>e.visit(this)),this.nestingLevel.set(i,this.level)):i instanceof H0?this.nestingLevel.set(i,0):i.forEach(this.visitNode)}visitTemplate(i){i.inputs.forEach(this.visitNode),i.outputs.forEach(this.visitNode),i.directives.forEach(this.visitNode),i.templateAttrs.forEach(this.visitNode),i.references.forEach(this.visitNode),this.ingestScopedNode(i)}visitVariable(i){this.rootNode!==null&&this.symbols.set(i,this.rootNode)}visitReference(i){this.rootNode!==null&&this.symbols.set(i,this.rootNode)}visitDeferredBlock(i){this.ingestScopedNode(i),i.triggers.when?.value.visit(this),i.prefetchTriggers.when?.value.visit(this),i.hydrateTriggers.when?.value.visit(this),i.hydrateTriggers.never?.visit(this),i.placeholder&&this.visitNode(i.placeholder),i.loading&&this.visitNode(i.loading),i.error&&this.visitNode(i.error)}visitDeferredBlockPlaceholder(i){this.ingestScopedNode(i)}visitDeferredBlockError(i){this.ingestScopedNode(i)}visitDeferredBlockLoading(i){this.ingestScopedNode(i)}visitSwitchBlockCase(i){i.expression?.visit(this)}visitSwitchBlockCaseGroup(i){i.cases.forEach(e=>e.visit(this)),this.ingestScopedNode(i)}visitSwitchExhaustiveCheck(i){}visitForLoopBlock(i){i.expression.visit(this),this.ingestScopedNode(i),i.empty?.visit(this)}visitForLoopBlockEmpty(i){this.ingestScopedNode(i)}visitIfBlockBranch(i){i.expression?.visit(this),this.ingestScopedNode(i)}visitContent(i){this.ingestScopedNode(i)}visitLetDeclaration(i){super.visitLetDeclaration(i),this.rootNode!==null&&this.symbols.set(i,this.rootNode)}visitPipe(i,e){return this.usedPipes.add(i.name),this.scope.isDeferred||this.eagerPipes.add(i.name),super.visitPipe(i,e)}visitPropertyRead(i,e){return this.maybeMap(i,i.name),super.visitPropertyRead(i,e)}visitSafePropertyRead(i,e){return this.maybeMap(i,i.name),super.visitSafePropertyRead(i,e)}ingestScopedNode(i){let e=this.scope.getChildScope(i);new t(this.bindings,this.symbols,this.usedPipes,this.eagerPipes,this.deferBlocks,this.nestingLevel,e,i,this.level+1).ingest(i)}maybeMap(i,e){if(!(i.receiver instanceof Bc))return;let n=this.scope.lookup(e);n!==null&&this.bindings.set(i,n)}},yP=class{target;directives;eagerDirectives;missingDirectives;bindings;references;exprTargets;symbols;nestingLevel;scopedNodeEntities;usedPipes;eagerPipes;deferredBlocks;deferredScopes;constructor(i,e,n,o,r,a,c,m,p,h,g,M,C){this.target=i,this.directives=e,this.eagerDirectives=n,this.missingDirectives=o,this.bindings=r,this.references=a,this.exprTargets=c,this.symbols=m,this.nestingLevel=p,this.scopedNodeEntities=h,this.usedPipes=g,this.eagerPipes=M,this.deferredBlocks=C.map(_=>_[0]),this.deferredScopes=new Map(C)}getEntitiesInScope(i){return this.scopedNodeEntities.get(i)??new Set}getDirectivesOfNode(i){return this.directives.get(i)||null}getReferenceTarget(i){return this.references.get(i)||null}getConsumerOfBinding(i){return this.bindings.get(i)||null}getExpressionTarget(i){return this.exprTargets.get(i)||null}getDefinitionNodeOfSymbol(i){return this.symbols.get(i)||null}getNestingLevel(i){return this.nestingLevel.get(i)||0}getUsedDirectives(){let i=new Set;return this.directives.forEach(e=>e.forEach(n=>i.add(n))),Array.from(i.values())}getEagerlyUsedDirectives(){let i=new Set(this.eagerDirectives);return Array.from(i.values())}getUsedPipes(){return Array.from(this.usedPipes)}getEagerlyUsedPipes(){return Array.from(this.eagerPipes)}getDeferBlocks(){return this.deferredBlocks}getDeferredTriggerTarget(i,e){if(!(e instanceof Vx)&&!(e instanceof F0)&&!(e instanceof Bx))return null;let n=e.reference;if(n===null){let r=null;if(i.placeholder!==null){for(let a of i.placeholder.children)if(!(a instanceof w1)){if(r!==null)return null;a instanceof Vc&&(r=a)}}return r}let o=this.findEntityInScope(i,n);if(o instanceof $0&&this.getDefinitionNodeOfSymbol(o)!==i){let r=this.getReferenceTarget(o);if(r!==null)return this.referenceTargetToElement(r)}if(i.placeholder!==null){let r=this.findEntityInScope(i.placeholder,n),a=r instanceof $0?this.getReferenceTarget(r):null;if(a!==null)return this.referenceTargetToElement(a)}return null}isDeferred(i){for(let e of this.deferredBlocks){if(!this.deferredScopes.has(e))continue;let n=[this.deferredScopes.get(e)];for(;n.length>0;){let o=n.pop();if(o.elementLikeInScope.has(i))return!0;n.push(...o.childScopes.values())}}return!1}referencedDirectiveExists(i){return!this.missingDirectives.has(i)}findEntityInScope(i,e){let n=this.getEntitiesInScope(i);for(let o of n)if(o.name===e)return o;return null}referenceTargetToElement(i){return i instanceof Vc?i:i instanceof js||i.node instanceof l0||i.node instanceof L6||i.node instanceof H0?null:this.referenceTargetToElement(i.node)}};function sne(t,i){let e=new Map;function n(r){if(e.has(r.rootNode))return e.get(r.rootNode);let a=r.namedEntities,c;return r.parentScope!==null?c=new Map([...n(r.parentScope),...a]):c=new Map(a),e.set(r.rootNode,c),c}let o=[t];for(;o.length>0;){let r=o.pop();for(let a of r.childScopes.values())o.push(a);n(r)}for(let[r,a]of e)i.set(r,new Set(a.values()))}var SP=class{},wP=class{jitEvaluator;FactoryTarget=Td;ResourceLoader=SP;elementSchemaRegistry=new yf;constructor(i=new MD){this.jitEvaluator=i}compilePipe(i,e,n){let o={name:n.name,type:Gr(n.type),typeArgumentCount:0,pipeName:n.pipeName,pure:n.pure,isStandalone:n.isStandalone},r=sF(o);return this.jitExpression(r.expression,i,e,[])}compilePipeDeclaration(i,e,n){let o=wne(n),r=sF(o);return this.jitExpression(r.expression,i,e,[])}compileInjectable(i,e,n){let{expression:o,statements:r}=KR({name:n.name,type:Gr(n.type),typeArgumentCount:n.typeArgumentCount,providedIn:E6(n.providedIn),useClass:Wh(n,"useClass"),useFactory:T6(n,"useFactory"),useValue:Wh(n,"useValue"),useExisting:Wh(n,"useExisting"),deps:n.deps?.map(i8)},!0);return this.jitExpression(o,i,e,r)}compileInjectableDeclaration(i,e,n){let{expression:o,statements:r}=KR({name:n.type.name,type:Gr(n.type),typeArgumentCount:0,providedIn:E6(n.providedIn),useClass:Wh(n,"useClass"),useFactory:T6(n,"useFactory"),useValue:Wh(n,"useValue"),useExisting:Wh(n,"useExisting"),deps:n.deps?.map(D6)},!0);return this.jitExpression(o,i,e,r)}compileInjector(i,e,n){let o={type:Gr(n.type),providers:n.providers&&n.providers.length>0?new gi(n.providers):null,imports:n.imports.map(a=>new gi(a))},r=aF(o);return this.jitExpression(r.expression,i,e,[])}compileInjectorDeclaration(i,e,n){let o=Mne(n),r=aF(o);return this.jitExpression(r.expression,i,e,[])}compileNgModule(i,e,n){let o={kind:Im.Global,type:Gr(n.type),bootstrap:n.bootstrap.map(Gr),declarations:n.declarations.map(Gr),publicDeclarationTypes:null,imports:n.imports.map(Gr),includeImportTypes:!0,exports:n.exports.map(Gr),selectorScopeMode:Xx.Inline,containsForwardDecls:!1,schemas:n.schemas?n.schemas.map(Gr):null,id:n.id?new gi(n.id):null},r=_q(o);return this.jitExpression(r.expression,i,e,[])}compileNgModuleDeclaration(i,e,n){let o=vq(n);return this.jitExpression(o,i,e,[])}compileDirective(i,e,n){let o=M6(n);return this.compileDirectiveFromMeta(i,e,o)}compileDirectiveDeclaration(i,e,n){let o=this.createParseSourceSpan("Directive",n.type.name,e),r=t8(n,o);return this.compileDirectiveFromMeta(i,e,r)}compileDirectiveFromMeta(i,e,n){let o=new Mx,r=b1(),a=Xte(n,o,r);return this.jitExpression(a.expression,i,e,o.statements)}compileComponent(i,e,n){let{template:o,defer:r}=n8(n.template,n.name,e,n.preserveWhitespaces,void 0),a=tt(H(H({},n),M6(n)),{selector:n.selector||this.elementSchemaRegistry.getDefaultComponentElementName(),template:o,declarations:n.declarations.map(mne),declarationListEmitMode:0,defer:r,styles:[...n.styles,...o.styles],encapsulation:n.encapsulation,changeDetection:n.changeDetection??null,animations:n.animations!=null?new gi(n.animations):null,viewProviders:n.viewProviders!=null?new gi(n.viewProviders):null,relativeContextFilePath:"",i18nUseExternalIds:!0,relativeTemplatePath:null}),c=`ng:///${n.name}.js`;return this.compileComponentFromMeta(i,c,a)}compileComponentDeclaration(i,e,n){let o=this.createParseSourceSpan("Component",n.type.name,e),r=dne(n,o,e);return this.compileComponentFromMeta(i,e,r)}compileComponentFromMeta(i,e,n){let o=new Mx,r=b1(),a=Qte(n,o,r);return this.jitExpression(a.expression,i,e,o.statements)}compileFactory(i,e,n){let o=ou({name:n.name,type:Gr(n.type),typeArgumentCount:n.typeArgumentCount,deps:hne(n.deps),target:n.target});return this.jitExpression(o.expression,i,e,o.statements)}compileFactoryDeclaration(i,e,n){let o=ou({name:n.type.name,type:Gr(n.type),typeArgumentCount:0,deps:Array.isArray(n.deps)?n.deps.map(D6):n.deps,target:n.target});return this.jitExpression(o.expression,i,e,o.statements)}createParseSourceSpan(i,e,n){return dq(i,e,n)}jitExpression(i,e,n,o){let r=[...o,new qr("$def",i,void 0,fa.Exported)];return this.jitEvaluator.evaluateStatements(n,r,new TD(e),!0).$def}};function S6(t){return tt(H({},t),{isSignal:t.isSignal,predicate:e8(t.predicate),read:t.read?new gi(t.read):null,static:t.static,emitDistinctChangesOnly:t.emitDistinctChangesOnly})}function w6(t){return{propertyName:t.propertyName,first:t.first??!1,predicate:e8(t.predicate),descendants:t.descendants??!1,read:t.read?new gi(t.read):null,static:t.static??!1,emitDistinctChangesOnly:t.emitDistinctChangesOnly??!0,isSignal:!!t.isSignal}}function e8(t){return Array.isArray(t)?t:PP(new gi(t),1)}function M6(t){let i=Sne(t.inputs||[]),e=QE(t.outputs||[]),n=t.propMetadata,o={},r={};for(let c in n)n.hasOwnProperty(c)&&n[c].forEach(m=>{bne(m)?o[c]={bindingPropertyName:m.alias||c,classPropertyName:c,required:m.required||!1,isSignal:!!m.isSignal,transformFunction:m.transform!=null?new gi(m.transform):null}:Cne(m)&&(r[c]=m.alias||c)});let a=t.hostDirectives?.length?t.hostDirectives.map(c=>typeof c=="function"?{directive:Gr(c),inputs:null,outputs:null,isForwardReference:!1}:{directive:Gr(c.directive),isForwardReference:!1,inputs:c.inputs?QE(c.inputs):null,outputs:c.outputs?QE(c.outputs):null}):null;return tt(H({},t),{typeArgumentCount:0,typeSourceSpan:t.typeSourceSpan,type:Gr(t.type),deps:null,host:H({},gne(t.propMetadata,t.typeSourceSpan,t.host)),inputs:H(H({},i),o),outputs:H(H({},e),r),queries:t.queries.map(S6),providers:t.providers!=null?new gi(t.providers):null,viewQueries:t.viewQueries.map(S6),hostDirectives:a})}function t8(t,i){let e=t.hostDirectives?.length?t.hostDirectives.map(n=>({directive:Gr(n.directive),isForwardReference:!1,inputs:n.inputs?k6(n.inputs):null,outputs:n.outputs?k6(n.outputs):null})):null;return{name:t.type.name,type:Gr(t.type),typeSourceSpan:i,selector:t.selector??null,inputs:t.inputs?xne(t.inputs):{},outputs:t.outputs??{},host:lne(t.host),queries:(t.queries??[]).map(w6),viewQueries:(t.viewQueries??[]).map(w6),providers:t.providers!==void 0?new gi(t.providers):null,exportAs:t.exportAs??null,usesInheritance:t.usesInheritance??!1,controlCreate:t.controlCreate??null,lifecycle:{usesOnChanges:t.usesOnChanges??!1},deps:null,typeArgumentCount:0,isStandalone:t.isStandalone??F6(t.version),isSignal:t.isSignal??!1,hostDirectives:e}}function lne(t={}){return{attributes:cne(t.attributes??{}),listeners:t.listeners??{},properties:t.properties??{},specialAttributes:{classAttr:t.classAttribute,styleAttr:t.styleAttribute}}}function k6(t){let i=null;for(let e=1;e<t.length;e+=2)i=i||{},i[t[e-1]]=t[e];return i}function cne(t){let i={};for(let e of Object.keys(t))i[e]=new gi(t[e]);return i}function dne(t,i,e){let{template:n,defer:o}=n8(t.template,t.type.name,e,t.preserveWhitespaces??!1,t.deferBlockDependencies),r=[];if(t.dependencies)for(let c of t.dependencies)switch(c.kind){case"directive":case"component":r.push(XE(c));break;case"pipe":r.push(une(c));break}else(t.components||t.directives||t.pipes)&&(t.components&&r.push(...t.components.map(c=>XE(c,!0))),t.directives&&r.push(...t.directives.map(c=>XE(c))),t.pipes&&r.push(...pne(t.pipes)));let a=r.some(({kind:c})=>c===_f.Directive||c===_f.NgModule);return tt(H({},t8(t,i)),{template:n,styles:t.styles??[],declarations:r,viewProviders:t.viewProviders!==void 0?new gi(t.viewProviders):null,animations:t.animations!==void 0?new gi(t.animations):null,defer:o,changeDetection:t.changeDetection??kP.Default,encapsulation:t.encapsulation??iu.Emulated,declarationListEmitMode:2,relativeContextFilePath:"",i18nUseExternalIds:!0,relativeTemplatePath:null,hasDirectiveDependencies:a})}function mne(t){return tt(H({},t),{type:new gi(t.type)})}function XE(t,i=null){return{kind:_f.Directive,isComponent:i||t.kind==="component",selector:t.selector,type:new gi(t.type),inputs:t.inputs??[],outputs:t.outputs??[],exportAs:t.exportAs??null}}function pne(t){return t?Object.keys(t).map(i=>({kind:_f.Pipe,name:i,type:new gi(t[i])})):[]}function une(t){return{kind:_f.Pipe,name:t.name,type:new gi(t.type)}}function n8(t,i,e,n,o){let r=Ute(t,e,{preserveWhitespaces:n});if(r.errors!==null){let m=r.errors.map(p=>p.toString()).join(", ");throw new Error(`Errors during JIT compilation of template for ${i}: ${m}`)}let c=new CP(null).bind({template:r.nodes});return{template:r,defer:fne(c,o)}}function Wh(t,i){if(t.hasOwnProperty(i))return PP(new gi(t[i]),0)}function T6(t,i){if(t.hasOwnProperty(i))return new gi(t[i])}function E6(t){let i=typeof t=="function"?new gi(t):new _a(t??null);return PP(i,0)}function hne(t){return t==null?null:t.map(i8)}function i8(t){let i=t.attribute!=null,e=t.token===null?null:new gi(t.token),n=i?new gi(t.attribute):e;return o8(n,i,t.host,t.optional,t.self,t.skipSelf)}function D6(t){let i=t.attribute??!1,e=t.token===null?null:new gi(t.token);return o8(e,i,t.host??!1,t.optional??!1,t.self??!1,t.skipSelf??!1)}function o8(t,i,e,n,o,r){let a=i?Ee("unknown"):null;return{token:t,attributeNameType:a,host:e,optional:n,self:o,skipSelf:r}}function fne(t,i){let e=t.getDeferBlocks(),n=new Map;for(let o=0;o<e.length;o++){let r=i?.[o];n.set(e[o],r?new gi(r):null)}return{mode:0,blocks:n}}function gne(t,i,e){let n=ine(e||{}),o=one(n,i);if(o.length)throw new Error(o.map(r=>r.msg).join(`
|
||
`));for(let r in t)t.hasOwnProperty(r)&&t[r].forEach(a=>{_ne(a)?n.properties[a.hostPropertyName||r]=OW("this",r):vne(a)&&(n.listeners[a.eventName||r]=`${r}(${(a.args||[]).join(",")})`)});return n}function _ne(t){return t.ngMetadataName==="HostBinding"}function vne(t){return t.ngMetadataName==="HostListener"}function bne(t){return t.ngMetadataName==="Input"}function Cne(t){return t.ngMetadataName==="Output"}function xne(t){return Object.keys(t).reduce((i,e)=>{let n=t[e];return typeof n=="string"||Array.isArray(n)?i[e]=yne(n):i[e]={bindingPropertyName:n.publicName,classPropertyName:e,transformFunction:n.transformFunction!==null?new gi(n.transformFunction):null,required:n.isRequired,isSignal:n.isSignal},i},{})}function yne(t){return typeof t=="string"?{bindingPropertyName:t,classPropertyName:t,transformFunction:null,required:!1,isSignal:!1}:{bindingPropertyName:t[0],classPropertyName:t[1],transformFunction:t[2]?new gi(t[2]):null,required:!1,isSignal:!1}}function Sne(t){return t.reduce((i,e)=>{if(typeof e=="string"){let[n,o]=r8(e);i[o]={bindingPropertyName:n,classPropertyName:o,required:!1,isSignal:!1,transformFunction:null}}else i[e.name]={bindingPropertyName:e.alias||e.name,classPropertyName:e.name,required:e.required||!1,isSignal:!1,transformFunction:e.transform!=null?new gi(e.transform):null};return i},{})}function QE(t){return t.reduce((i,e)=>{let[n,o]=r8(e);return i[o]=n,i},{})}function r8(t){let[i,e]=t.split(":",2).map(n=>n.trim());return[e??i,i]}function wne(t){return{name:t.type.name,type:Gr(t.type),typeArgumentCount:0,pipeName:t.name,deps:null,pure:t.pure??!0,isStandalone:t.isStandalone??F6(t.version)}}function Mne(t){return{name:t.type.name,type:Gr(t.type),providers:t.providers!==void 0&&t.providers.length>0?new gi(t.providers):null,imports:t.imports!==void 0?t.imports.map(i=>new gi(i)):[]}}function kne(t){let i=t.ng||(t.ng={});i.\u0275compilerFacade=new wP}var MP=class{closedByParent=!1;implicitNamespacePrefix=null;isVoid=!1;ignoreFirstLf=!1;canSelfClose=!0;preventNamespaceInheritance=!1;requireExtraParent(i){return!1}isClosedByChild(i){return!1}getContentType(){return Dc.PARSABLE_DATA}},PFe=new MP;var IFe=new nD("21.2.6");kne(s0);function KP(t){let i=t.cloneNode(!0),e=i.querySelectorAll("[id]"),n=t.nodeName.toLowerCase();i.removeAttribute("id");for(let o=0;o<e.length;o++)e[o].removeAttribute("id");return n==="canvas"?l8(t,i):(n==="input"||n==="select"||n==="textarea")&&s8(t,i),a8("canvas",t,i,l8),a8("input, textarea, select",t,i,s8),i}function a8(t,i,e,n){let o=i.querySelectorAll(t);if(o.length){let r=e.querySelectorAll(t);for(let a=0;a<o.length;a++)n(o[a],r[a])}}var Tne=0;function s8(t,i){i.type!=="file"&&(i.value=t.value),i.type==="radio"&&i.name&&(i.name=`mat-clone-${i.name}-${Tne++}`)}function l8(t,i){let e=i.getContext("2d");if(e)try{e.drawImage(t,0,0)}catch{}}function iI(t){let i=t.getBoundingClientRect();return{top:i.top,right:i.right,bottom:i.bottom,left:i.left,width:i.width,height:i.height,x:i.x,y:i.y}}function ZP(t,i,e){let{top:n,bottom:o,left:r,right:a}=t;return e>=n&&e<=o&&i>=r&&i<=a}function Ene(t,i){let e=i.left<t.left,n=i.left+i.width>t.right,o=i.top<t.top,r=i.top+i.height>t.bottom;return e||n||o||r}function Cv(t,i,e){t.top+=i,t.bottom=t.top+t.height,t.left+=e,t.right=t.left+t.width}function c8(t,i,e,n){let{top:o,right:r,bottom:a,left:c,width:m,height:p}=t,h=m*i,g=p*i;return n>o-g&&n<a+g&&e>c-h&&e<r+h}var P1=class{_document;positions=new Map;constructor(i){this._document=i}clear(){this.positions.clear()}cache(i){this.clear(),this.positions.set(this._document,{scrollPosition:this.getViewportScrollPosition()}),i.forEach(e=>{this.positions.set(e,{scrollPosition:{top:e.scrollTop,left:e.scrollLeft},clientRect:iI(e)})})}handleScroll(i){let e=eu(i),n=this.positions.get(e);if(!n)return null;let o=n.scrollPosition,r,a;if(e===this._document){let p=this.getViewportScrollPosition();r=p.top,a=p.left}else r=e.scrollTop,a=e.scrollLeft;let c=o.top-r,m=o.left-a;return this.positions.forEach((p,h)=>{p.clientRect&&e!==h&&e.contains(h)&&Cv(p.clientRect,c,m)}),o.top=r,o.left=a,{top:c,left:m}}getViewportScrollPosition(){return{top:window.scrollY,left:window.scrollX}}};function x8(t,i){let e=t.rootNodes;if(e.length===1&&e[0].nodeType===i.ELEMENT_NODE)return e[0];let n=i.createElement("div");return e.forEach(o=>n.appendChild(o)),n}function oI(t,i,e){for(let n in i)if(i.hasOwnProperty(n)){let o=i[n];o?t.setProperty(n,o,e?.has(n)?"important":""):t.removeProperty(n)}return t}function Df(t,i){let e=i?"":"none";oI(t.style,{"touch-action":i?"":"none","-webkit-user-drag":i?"":"none","-webkit-tap-highlight-color":i?"":"transparent","user-select":e,"-ms-user-select":e,"-webkit-user-select":e,"-moz-user-select":e})}function d8(t,i,e){oI(t.style,{position:i?"":"fixed",top:i?"":"0",opacity:i?"":"0",left:i?"":"-999em"},e)}function I1(t,i){return i&&i!="none"?t+" "+i:t}function m8(t,i){t.style.width=`${i.width}px`,t.style.height=`${i.height}px`,t.style.transform=xv(i.left,i.top)}function xv(t,i){return`translate3d(${Math.round(t)}px, ${Math.round(i)}px, 0)`}var vv={capture:!0},QP={passive:!1,capture:!0},Dne=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["ng-component"]],hostAttrs:["cdk-drag-resets-container",""],decls:0,vars:0,template:function(n,o){},styles:[`@layer cdk-resets{.cdk-drag-preview{background:none;border:none;padding:0;color:inherit;inset:auto}}.cdk-drag-placeholder *,.cdk-drag-preview *{pointer-events:none !important}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),y8=(()=>{class t{_ngZone=f(bi);_document=f(Pi);_styleLoader=f(Go);_renderer=f(yd).createRenderer(null,null);_cleanupDocumentTouchmove;_scroll=new Le;_dropInstances=new Set;_dragInstances=new Set;_activeDragInstances=me([]);_globalListeners;_draggingPredicate=e=>e.isDragging();_domNodesToDirectives=null;pointerMove=new Le;pointerUp=new Le;constructor(){}registerDropContainer(e){this._dropInstances.has(e)||this._dropInstances.add(e)}registerDragItem(e){this._dragInstances.add(e),this._dragInstances.size===1&&this._ngZone.runOutsideAngular(()=>{this._cleanupDocumentTouchmove?.(),this._cleanupDocumentTouchmove=this._renderer.listen(this._document,"touchmove",this._persistentTouchmoveListener,QP)})}removeDropContainer(e){this._dropInstances.delete(e)}removeDragItem(e){this._dragInstances.delete(e),this.stopDragging(e),this._dragInstances.size===0&&this._cleanupDocumentTouchmove?.()}startDragging(e,n){if(!(this._activeDragInstances().indexOf(e)>-1)&&(this._styleLoader.load(Dne),this._activeDragInstances.update(o=>[...o,e]),this._activeDragInstances().length===1)){let o=n.type.startsWith("touch"),r=c=>this.pointerUp.next(c),a=[["scroll",c=>this._scroll.next(c),vv],["selectstart",this._preventDefaultWhileDragging,QP]];o?a.push(["touchend",r,vv],["touchcancel",r,vv]):a.push(["mouseup",r,vv]),o||a.push(["mousemove",c=>this.pointerMove.next(c),QP]),this._ngZone.runOutsideAngular(()=>{this._globalListeners=a.map(([c,m,p])=>this._renderer.listen(this._document,c,m,p))})}}stopDragging(e){this._activeDragInstances.update(n=>{let o=n.indexOf(e);return o>-1?(n.splice(o,1),[...n]):n}),this._activeDragInstances().length===0&&this._clearGlobalListeners()}isDragging(e){return this._activeDragInstances().indexOf(e)>-1}scrolled(e){let n=[this._scroll];return e&&e!==this._document&&n.push(new _r(o=>this._ngZone.runOutsideAngular(()=>{let r=this._renderer.listen(e,"scroll",a=>{this._activeDragInstances().length&&o.next(a)},vv);return()=>{r()}}))),Dn(...n)}registerDirectiveNode(e,n){this._domNodesToDirectives??=new WeakMap,this._domNodesToDirectives.set(e,n)}removeDirectiveNode(e){this._domNodesToDirectives?.delete(e)}getDragDirectiveForNode(e){return this._domNodesToDirectives?.get(e)||null}ngOnDestroy(){this._dragInstances.forEach(e=>this.removeDragItem(e)),this._dropInstances.forEach(e=>this.removeDropContainer(e)),this._domNodesToDirectives=null,this._clearGlobalListeners(),this.pointerMove.complete(),this.pointerUp.complete()}_preventDefaultWhileDragging=e=>{this._activeDragInstances().length>0&&e.preventDefault()};_persistentTouchmoveListener=e=>{this._activeDragInstances().length>0&&(this._activeDragInstances().some(this._draggingPredicate)&&e.preventDefault(),this.pointerMove.next(e))};_clearGlobalListeners(){this._globalListeners?.forEach(e=>e()),this._globalListeners=void 0}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function p8(t){let i=t.toLowerCase().indexOf("ms")>-1?1:1e3;return parseFloat(t)*i}function Pne(t){let i=getComputedStyle(t),e=YP(i,"transition-property"),n=e.find(c=>c==="transform"||c==="all");if(!n)return 0;let o=e.indexOf(n),r=YP(i,"transition-duration"),a=YP(i,"transition-delay");return p8(r[o])+p8(a[o])}function YP(t,i){return t.getPropertyValue(i).split(",").map(n=>n.trim())}var Ine=new Set(["position"]),JP=class{_document;_rootElement;_direction;_initialDomRect;_previewTemplate;_previewClass;_pickupPositionOnPage;_initialTransform;_zIndex;_renderer;_previewEmbeddedView=null;_preview;get element(){return this._preview}constructor(i,e,n,o,r,a,c,m,p,h){this._document=i,this._rootElement=e,this._direction=n,this._initialDomRect=o,this._previewTemplate=r,this._previewClass=a,this._pickupPositionOnPage=c,this._initialTransform=m,this._zIndex=p,this._renderer=h}attach(i){this._preview=this._createPreview(),i.appendChild(this._preview),u8(this._preview)&&this._preview.showPopover()}destroy(){this._preview.remove(),this._previewEmbeddedView?.destroy(),this._preview=this._previewEmbeddedView=null}setTransform(i){this._preview.style.transform=i}getBoundingClientRect(){return this._preview.getBoundingClientRect()}addClass(i){this._preview.classList.add(i)}getTransitionDuration(){return Pne(this._preview)}addEventListener(i,e){return this._renderer.listen(this._preview,i,e)}_createPreview(){let i=this._previewTemplate,e=this._previewClass,n=i?i.template:null,o;if(n&&i){let r=i.matchSize?this._initialDomRect:null,a=i.viewContainer.createEmbeddedView(n,i.context);a.detectChanges(),o=x8(a,this._document),this._previewEmbeddedView=a,i.matchSize?m8(o,r):o.style.transform=xv(this._pickupPositionOnPage.x,this._pickupPositionOnPage.y)}else o=KP(this._rootElement),m8(o,this._initialDomRect),this._initialTransform&&(o.style.transform=this._initialTransform);return oI(o.style,{"pointer-events":"none",margin:u8(o)?"0 auto 0 0":"0",position:"fixed",top:"0",left:"0","z-index":this._zIndex+""},Ine),Df(o,!1),o.classList.add("cdk-drag-preview"),o.setAttribute("popover","manual"),o.setAttribute("dir",this._direction),e&&(Array.isArray(e)?e.forEach(r=>o.classList.add(r)):o.classList.add(e)),o}};function u8(t){return"showPopover"in t}var Ane={passive:!0},h8={passive:!1},One={passive:!1,capture:!0},Nne=800,f8="cdk-drag-placeholder",g8=new Set(["position"]);function Rne(t,i,e={dragStartThreshold:5,pointerDirectionChangeThreshold:5}){let n=t.get(ii,null,{optional:!0})||t.get(yd).createRenderer(null,null);return new eI(i,e,t.get(Pi),t.get(bi),t.get(wd),t.get(y8),n)}var eI=class{_config;_document;_ngZone;_viewportRuler;_dragDropRegistry;_renderer;_rootElementCleanups;_cleanupShadowRootSelectStart;_preview=null;_previewContainer;_placeholderRef=null;_placeholder;_pickupPositionInElement;_pickupPositionOnPage;_marker;_anchor=null;_passiveTransform={x:0,y:0};_activeTransform={x:0,y:0};_initialTransform;_hasStartedDragging=me(!1);_hasMoved=!1;_initialContainer;_initialIndex;_parentPositions;_moveEvents=new Le;_pointerDirectionDelta;_pointerPositionAtLastDirectionChange;_lastKnownPointerPosition;_rootElement;_ownerSVGElement=null;_rootElementTapHighlight;_pointerMoveSubscription=so.EMPTY;_pointerUpSubscription=so.EMPTY;_scrollSubscription=so.EMPTY;_resizeSubscription=so.EMPTY;_lastTouchEventTime;_dragStartTime;_boundaryElement=null;_nativeInteractionsEnabled=!0;_initialDomRect;_previewRect;_boundaryRect;_previewTemplate;_placeholderTemplate;_handles=[];_disabledHandles=new Set;_dropContainer;_direction="ltr";_parentDragRef=null;_cachedShadowRoot;lockAxis=null;dragStartDelay=0;previewClass;scale=1;get disabled(){return this._disabled||!!(this._dropContainer&&this._dropContainer.disabled)}set disabled(i){i!==this._disabled&&(this._disabled=i,this._toggleNativeDragInteractions(),this._handles.forEach(e=>Df(e,i)))}_disabled=!1;beforeStarted=new Le;started=new Le;released=new Le;ended=new Le;entered=new Le;exited=new Le;dropped=new Le;moved=this._moveEvents;data;constrainPosition;constructor(i,e,n,o,r,a,c){this._config=e,this._document=n,this._ngZone=o,this._viewportRuler=r,this._dragDropRegistry=a,this._renderer=c,this.withRootElement(i).withParent(e.parentDragRef||null),this._parentPositions=new P1(n),a.registerDragItem(this)}getPlaceholderElement(){return this._placeholder}getRootElement(){return this._rootElement}getVisibleElement(){return this.isDragging()?this.getPlaceholderElement():this.getRootElement()}withHandles(i){this._handles=i.map(n=>Yl(n)),this._handles.forEach(n=>Df(n,this.disabled)),this._toggleNativeDragInteractions();let e=new Set;return this._disabledHandles.forEach(n=>{this._handles.indexOf(n)>-1&&e.add(n)}),this._disabledHandles=e,this}withPreviewTemplate(i){return this._previewTemplate=i,this}withPlaceholderTemplate(i){return this._placeholderTemplate=i,this}withRootElement(i){let e=Yl(i);if(e!==this._rootElement){this._removeRootElementListeners();let n=this._renderer;this._rootElementCleanups=this._ngZone.runOutsideAngular(()=>[n.listen(e,"mousedown",this._pointerDown,h8),n.listen(e,"touchstart",this._pointerDown,Ane),n.listen(e,"dragstart",this._nativeDragStart,h8)]),this._initialTransform=void 0,this._rootElement=e}return typeof SVGElement<"u"&&this._rootElement instanceof SVGElement&&(this._ownerSVGElement=this._rootElement.ownerSVGElement),this}withBoundaryElement(i){return this._boundaryElement=i?Yl(i):null,this._resizeSubscription.unsubscribe(),i&&(this._resizeSubscription=this._viewportRuler.change(10).subscribe(()=>this._containInsideBoundaryOnResize())),this}withParent(i){return this._parentDragRef=i,this}dispose(){this._removeRootElementListeners(),this.isDragging()&&this._rootElement?.remove(),this._marker?.remove(),this._destroyPreview(),this._destroyPlaceholder(),this._dragDropRegistry.removeDragItem(this),this._removeListeners(),this.beforeStarted.complete(),this.started.complete(),this.released.complete(),this.ended.complete(),this.entered.complete(),this.exited.complete(),this.dropped.complete(),this._moveEvents.complete(),this._handles=[],this._disabledHandles.clear(),this._dropContainer=void 0,this._resizeSubscription.unsubscribe(),this._parentPositions.clear(),this._boundaryElement=this._rootElement=this._ownerSVGElement=this._placeholderTemplate=this._previewTemplate=this._marker=this._parentDragRef=null}isDragging(){return this._hasStartedDragging()&&this._dragDropRegistry.isDragging(this)}reset(){this._rootElement.style.transform=this._initialTransform||"",this._activeTransform={x:0,y:0},this._passiveTransform={x:0,y:0}}resetToBoundary(){if(this._boundaryElement&&this._rootElement&&Ene(this._boundaryElement.getBoundingClientRect(),this._rootElement.getBoundingClientRect())){let i=this._boundaryElement.getBoundingClientRect(),e=this._rootElement.getBoundingClientRect(),n=0,o=0;e.left<i.left?n=i.left-e.left:e.right>i.right&&(n=i.right-e.right),e.top<i.top?o=i.top-e.top:e.bottom>i.bottom&&(o=i.bottom-e.bottom);let r=this._activeTransform.x,a=this._activeTransform.y,c=r+n,m=a+o;this._rootElement.style.transform=xv(c,m),this._activeTransform={x:c,y:m},this._passiveTransform={x:c,y:m}}}disableHandle(i){!this._disabledHandles.has(i)&&this._handles.indexOf(i)>-1&&(this._disabledHandles.add(i),Df(i,!0))}enableHandle(i){this._disabledHandles.has(i)&&(this._disabledHandles.delete(i),Df(i,this.disabled))}withDirection(i){return this._direction=i,this}_withDropContainer(i){this._dropContainer=i}getFreeDragPosition(){let i=this.isDragging()?this._activeTransform:this._passiveTransform;return{x:i.x,y:i.y}}setFreeDragPosition(i){return this._activeTransform={x:0,y:0},this._passiveTransform.x=i.x,this._passiveTransform.y=i.y,this._dropContainer||this._applyRootElementTransform(i.x,i.y),this}withPreviewContainer(i){return this._previewContainer=i,this}_sortFromLastPointerPosition(){let i=this._lastKnownPointerPosition;i&&this._dropContainer&&this._updateActiveDropContainer(this._getConstrainedPointerPosition(i),i)}_removeListeners(){this._pointerMoveSubscription.unsubscribe(),this._pointerUpSubscription.unsubscribe(),this._scrollSubscription.unsubscribe(),this._cleanupShadowRootSelectStart?.(),this._cleanupShadowRootSelectStart=void 0}_destroyPreview(){this._preview?.destroy(),this._preview=null}_destroyPlaceholder(){this._anchor?.remove(),this._placeholder?.remove(),this._placeholderRef?.destroy(),this._placeholder=this._anchor=this._placeholderRef=null}_pointerDown=i=>{if(this.beforeStarted.next(),this._handles.length){let e=this._getTargetHandle(i);e&&!this._disabledHandles.has(e)&&!this.disabled&&this._initializeDragSequence(e,i)}else this.disabled||this._initializeDragSequence(this._rootElement,i)};_pointerMove=i=>{let e=this._getPointerPositionOnPage(i);if(!this._hasStartedDragging()){let o=Math.abs(e.x-this._pickupPositionOnPage.x),r=Math.abs(e.y-this._pickupPositionOnPage.y);if(o+r>=this._config.dragStartThreshold){let c=Date.now()>=this._dragStartTime+this._getDragStartDelay(i),m=this._dropContainer;if(!c){this._endDragSequence(i);return}(!m||!m.isDragging()&&!m.isReceiving())&&(i.cancelable&&i.preventDefault(),this._hasStartedDragging.set(!0),this._ngZone.run(()=>this._startDragSequence(i)))}return}i.cancelable&&i.preventDefault();let n=this._getConstrainedPointerPosition(e);if(this._hasMoved=!0,this._lastKnownPointerPosition=e,this._updatePointerDirectionDelta(n),this._dropContainer)this._updateActiveDropContainer(n,e);else{let o=this.constrainPosition?this._initialDomRect:this._pickupPositionOnPage,r=this._activeTransform;r.x=n.x-o.x+this._passiveTransform.x,r.y=n.y-o.y+this._passiveTransform.y,this._applyRootElementTransform(r.x,r.y)}this._moveEvents.observers.length&&this._ngZone.run(()=>{this._moveEvents.next({source:this,pointerPosition:n,event:i,distance:this._getDragDistance(n),delta:this._pointerDirectionDelta})})};_pointerUp=i=>{this._endDragSequence(i)};_endDragSequence(i){if(this._dragDropRegistry.isDragging(this)&&(this._removeListeners(),this._dragDropRegistry.stopDragging(this),this._toggleNativeDragInteractions(),this._handles&&(this._rootElement.style.webkitTapHighlightColor=this._rootElementTapHighlight),!!this._hasStartedDragging()))if(this.released.next({source:this,event:i}),this._dropContainer)this._dropContainer._stopScrolling(),this._animatePreviewToPlaceholder().then(()=>{this._cleanupDragArtifacts(i),this._cleanupCachedDimensions(),this._dragDropRegistry.stopDragging(this)});else{this._passiveTransform.x=this._activeTransform.x;let e=this._getPointerPositionOnPage(i);this._passiveTransform.y=this._activeTransform.y,this._ngZone.run(()=>{this.ended.next({source:this,distance:this._getDragDistance(e),dropPoint:e,event:i})}),this._cleanupCachedDimensions(),this._dragDropRegistry.stopDragging(this)}}_startDragSequence(i){bv(i)&&(this._lastTouchEventTime=Date.now()),this._toggleNativeDragInteractions();let e=this._getShadowRoot(),n=this._dropContainer;if(e&&this._ngZone.runOutsideAngular(()=>{this._cleanupShadowRootSelectStart=this._renderer.listen(e,"selectstart",Fne,One)}),n){let o=this._rootElement,r=o.parentNode,a=this._placeholder=this._createPlaceholderElement(),c=this._marker=this._marker||this._document.createComment("");r.insertBefore(c,o),this._initialTransform=o.style.transform||"",this._preview=new JP(this._document,this._rootElement,this._direction,this._initialDomRect,this._previewTemplate||null,this.previewClass||null,this._pickupPositionOnPage,this._initialTransform,this._config.zIndex||1e3,this._renderer),this._preview.attach(this._getPreviewInsertionPoint(r,e)),d8(o,!1,g8),this._document.body.appendChild(r.replaceChild(a,o)),this.started.next({source:this,event:i}),n.start(),this._initialContainer=n,this._initialIndex=n.getItemIndex(this)}else this.started.next({source:this,event:i}),this._initialContainer=this._initialIndex=void 0;this._parentPositions.cache(n?n.getScrollableParents():[])}_initializeDragSequence(i,e){this._parentDragRef&&e.stopPropagation();let n=this.isDragging(),o=bv(e),r=!o&&e.button!==0,a=this._rootElement,c=eu(e),m=!o&&this._lastTouchEventTime&&this._lastTouchEventTime+Nne>Date.now(),p=o?OC(e):AC(e);if(c&&c.draggable&&e.type==="mousedown"&&e.preventDefault(),n||r||m||p)return;if(this._handles.length){let M=a.style;this._rootElementTapHighlight=M.webkitTapHighlightColor||"",M.webkitTapHighlightColor="transparent"}this._hasMoved=!1,this._hasStartedDragging.set(this._hasMoved),this._removeListeners(),this._initialDomRect=this._rootElement.getBoundingClientRect(),this._pointerMoveSubscription=this._dragDropRegistry.pointerMove.subscribe(this._pointerMove),this._pointerUpSubscription=this._dragDropRegistry.pointerUp.subscribe(this._pointerUp),this._scrollSubscription=this._dragDropRegistry.scrolled(this._getShadowRoot()).subscribe(M=>this._updateOnScroll(M)),this._boundaryElement&&(this._boundaryRect=iI(this._boundaryElement));let h=this._previewTemplate;this._pickupPositionInElement=h&&h.template&&!h.matchSize?{x:0,y:0}:this._getPointerPositionInElement(this._initialDomRect,i,e);let g=this._pickupPositionOnPage=this._lastKnownPointerPosition=this._getPointerPositionOnPage(e);this._pointerDirectionDelta={x:0,y:0},this._pointerPositionAtLastDirectionChange={x:g.x,y:g.y},this._dragStartTime=Date.now(),this._dragDropRegistry.startDragging(this,e)}_cleanupDragArtifacts(i){d8(this._rootElement,!0,g8),this._marker.parentNode.replaceChild(this._rootElement,this._marker),this._destroyPreview(),this._destroyPlaceholder(),this._initialDomRect=this._boundaryRect=this._previewRect=this._initialTransform=void 0,this._ngZone.run(()=>{let e=this._dropContainer,n=e.getItemIndex(this),o=this._getPointerPositionOnPage(i),r=this._getDragDistance(o),a=e._isOverContainer(o.x,o.y);this.ended.next({source:this,distance:r,dropPoint:o,event:i}),this.dropped.next({item:this,currentIndex:n,previousIndex:this._initialIndex,container:e,previousContainer:this._initialContainer,isPointerOverContainer:a,distance:r,dropPoint:o,event:i}),e.drop(this,n,this._initialIndex,this._initialContainer,a,r,o,i),this._dropContainer=this._initialContainer})}_updateActiveDropContainer({x:i,y:e},{x:n,y:o}){let r=this._initialContainer._getSiblingContainerFromPosition(this,i,e);!r&&this._dropContainer!==this._initialContainer&&this._initialContainer._isOverContainer(i,e)&&(r=this._initialContainer),r&&r!==this._dropContainer&&this._ngZone.run(()=>{let a=this._dropContainer.getItemIndex(this),c=this._dropContainer.getItemAtIndex(a+1)?.getVisibleElement()||null;this.exited.next({item:this,container:this._dropContainer}),this._dropContainer.exit(this),this._conditionallyInsertAnchor(r,this._dropContainer,c),this._dropContainer=r,this._dropContainer.enter(this,i,e,r===this._initialContainer&&r.sortingDisabled?this._initialIndex:void 0),this.entered.next({item:this,container:r,currentIndex:r.getItemIndex(this)})}),this.isDragging()&&(this._dropContainer._startScrollingIfNecessary(n,o),this._dropContainer._sortItem(this,i,e,this._pointerDirectionDelta),this.constrainPosition?this._applyPreviewTransform(i,e):this._applyPreviewTransform(i-this._pickupPositionInElement.x,e-this._pickupPositionInElement.y))}_animatePreviewToPlaceholder(){if(!this._hasMoved)return Promise.resolve();let i=this._placeholder.getBoundingClientRect();this._preview.addClass("cdk-drag-animating"),this._applyPreviewTransform(i.left,i.top);let e=this._preview.getTransitionDuration();return e===0?Promise.resolve():this._ngZone.runOutsideAngular(()=>new Promise(n=>{let o=c=>{(!c||this._preview&&eu(c)===this._preview.element&&c.propertyName==="transform")&&(a(),n(),clearTimeout(r))},r=setTimeout(o,e*1.5),a=this._preview.addEventListener("transitionend",o)}))}_createPlaceholderElement(){let i=this._placeholderTemplate,e=i?i.template:null,n;return e?(this._placeholderRef=i.viewContainer.createEmbeddedView(e,i.context),this._placeholderRef.detectChanges(),n=x8(this._placeholderRef,this._document)):n=KP(this._rootElement),n.style.pointerEvents="none",n.classList.add(f8),n}_getPointerPositionInElement(i,e,n){let o=e===this._rootElement?null:e,r=o?o.getBoundingClientRect():i,a=bv(n)?n.targetTouches[0]:n,c=this._getViewportScrollPosition(),m=a.pageX-r.left-c.left,p=a.pageY-r.top-c.top;return{x:r.left-i.left+m,y:r.top-i.top+p}}_getPointerPositionOnPage(i){let e=this._getViewportScrollPosition(),n=bv(i)?i.touches[0]||i.changedTouches[0]||{pageX:0,pageY:0}:i,o=n.pageX-e.left,r=n.pageY-e.top;if(this._ownerSVGElement){let a=this._ownerSVGElement.getScreenCTM();if(a){let c=this._ownerSVGElement.createSVGPoint();return c.x=o,c.y=r,c.matrixTransform(a.inverse())}}return{x:o,y:r}}_getConstrainedPointerPosition(i){let e=this._dropContainer?this._dropContainer.lockAxis:null,{x:n,y:o}=this.constrainPosition?this.constrainPosition(i,this,this._initialDomRect,this._pickupPositionInElement):i;if(this.lockAxis==="x"||e==="x"?o=this._pickupPositionOnPage.y-(this.constrainPosition?this._pickupPositionInElement.y:0):(this.lockAxis==="y"||e==="y")&&(n=this._pickupPositionOnPage.x-(this.constrainPosition?this._pickupPositionInElement.x:0)),this._boundaryRect){let{x:r,y:a}=this.constrainPosition?{x:0,y:0}:this._pickupPositionInElement,c=this._boundaryRect,{width:m,height:p}=this._getPreviewRect(),h=c.top+a,g=c.bottom-(p-a),M=c.left+r,C=c.right-(m-r);n=_8(n,M,C),o=_8(o,h,g)}return{x:n,y:o}}_updatePointerDirectionDelta(i){let{x:e,y:n}=i,o=this._pointerDirectionDelta,r=this._pointerPositionAtLastDirectionChange,a=Math.abs(e-r.x),c=Math.abs(n-r.y);return a>this._config.pointerDirectionChangeThreshold&&(o.x=e>r.x?1:-1,r.x=e),c>this._config.pointerDirectionChangeThreshold&&(o.y=n>r.y?1:-1,r.y=n),o}_toggleNativeDragInteractions(){if(!this._rootElement||!this._handles)return;let i=this._handles.length>0||!this.isDragging();i!==this._nativeInteractionsEnabled&&(this._nativeInteractionsEnabled=i,Df(this._rootElement,i))}_removeRootElementListeners(){this._rootElementCleanups?.forEach(i=>i()),this._rootElementCleanups=void 0}_applyRootElementTransform(i,e){let n=1/this.scale,o=xv(i*n,e*n),r=this._rootElement.style;this._initialTransform==null&&(this._initialTransform=r.transform&&r.transform!="none"?r.transform:""),r.transform=I1(o,this._initialTransform)}_applyPreviewTransform(i,e){let n=this._previewTemplate?.template?void 0:this._initialTransform,o=xv(i,e);this._preview.setTransform(I1(o,n))}_getDragDistance(i){let e=this._pickupPositionOnPage;return e?{x:i.x-e.x,y:i.y-e.y}:{x:0,y:0}}_cleanupCachedDimensions(){this._boundaryRect=this._previewRect=void 0,this._parentPositions.clear()}_containInsideBoundaryOnResize(){let{x:i,y:e}=this._passiveTransform;if(i===0&&e===0||this.isDragging()||!this._boundaryElement)return;let n=this._rootElement.getBoundingClientRect(),o=this._boundaryElement.getBoundingClientRect();if(o.width===0&&o.height===0||n.width===0&&n.height===0)return;let r=o.left-n.left,a=n.right-o.right,c=o.top-n.top,m=n.bottom-o.bottom;o.width>n.width?(r>0&&(i+=r),a>0&&(i-=a)):i=0,o.height>n.height?(c>0&&(e+=c),m>0&&(e-=m)):e=0,(i!==this._passiveTransform.x||e!==this._passiveTransform.y)&&this.setFreeDragPosition({y:e,x:i})}_getDragStartDelay(i){let e=this.dragStartDelay;return typeof e=="number"?e:bv(i)?e.touch:e?e.mouse:0}_updateOnScroll(i){let e=this._parentPositions.handleScroll(i);if(e){let n=eu(i);this._boundaryRect&&n!==this._boundaryElement&&n.contains(this._boundaryElement)&&Cv(this._boundaryRect,e.top,e.left),this._pickupPositionOnPage.x+=e.left,this._pickupPositionOnPage.y+=e.top,this._dropContainer||(this._activeTransform.x-=e.left,this._activeTransform.y-=e.top,this._applyRootElementTransform(this._activeTransform.x,this._activeTransform.y))}}_getViewportScrollPosition(){return this._parentPositions.positions.get(this._document)?.scrollPosition||this._parentPositions.getViewportScrollPosition()}_getShadowRoot(){return this._cachedShadowRoot===void 0&&(this._cachedShadowRoot=IC(this._rootElement)),this._cachedShadowRoot}_getPreviewInsertionPoint(i,e){let n=this._previewContainer||"global";if(n==="parent")return i;if(n==="global"){let o=this._document;return e||o.fullscreenElement||o.webkitFullscreenElement||o.mozFullScreenElement||o.msFullscreenElement||o.body}return Yl(n)}_getPreviewRect(){return(!this._previewRect||!this._previewRect.width&&!this._previewRect.height)&&(this._previewRect=this._preview?this._preview.getBoundingClientRect():this._initialDomRect),this._previewRect}_nativeDragStart=i=>{if(this._handles.length){let e=this._getTargetHandle(i);e&&!this._disabledHandles.has(e)&&!this.disabled&&i.preventDefault()}else this.disabled||i.preventDefault()};_getTargetHandle(i){return this._handles.find(e=>i.target&&(i.target===e||e.contains(i.target)))}_conditionallyInsertAnchor(i,e,n){if(i===this._initialContainer)this._anchor?.remove(),this._anchor=null;else if(e===this._initialContainer&&e.hasAnchor){let o=this._anchor??=KP(this._placeholder);o.classList.remove(f8),o.classList.add("cdk-drag-anchor"),o.style.transform="",n?n.before(o):Yl(e.element).appendChild(o)}}};function _8(t,i,e){return Math.max(i,Math.min(e,t))}function bv(t){return t.type[0]==="t"}function Fne(t){t.preventDefault()}function S8(t,i,e){let n=v8(i,t.length-1),o=v8(e,t.length-1);if(n===o)return;let r=t[n],a=o<n?-1:1;for(let c=n;c!==o;c+=a)t[c]=t[c+a];t[o]=r}function v8(t,i){return Math.max(0,Math.min(i,t))}var A1=class{_dragDropRegistry;_element;_sortPredicate;_itemPositions=[];_activeDraggables;orientation="vertical";direction="ltr";constructor(i){this._dragDropRegistry=i}_previousSwap={drag:null,delta:0,overlaps:!1};start(i){this.withItems(i)}sort(i,e,n,o){let r=this._itemPositions,a=this._getItemIndexFromPointerPosition(i,e,n,o);if(a===-1&&r.length>0)return null;let c=this.orientation==="horizontal",m=r.findIndex(S=>S.drag===i),p=r[a],h=r[m].clientRect,g=p.clientRect,M=m>a?1:-1,C=this._getItemOffsetPx(h,g,M),_=this._getSiblingOffsetPx(m,r,M),w=r.slice();return S8(r,m,a),r.forEach((S,y)=>{if(w[y]===S)return;let k=S.drag===i,I=k?C:_,E=k?i.getPlaceholderElement():S.drag.getRootElement();S.offset+=I;let N=Math.round(S.offset*(1/S.drag.scale));c?(E.style.transform=I1(`translate3d(${N}px, 0, 0)`,S.initialTransform),Cv(S.clientRect,0,I)):(E.style.transform=I1(`translate3d(0, ${N}px, 0)`,S.initialTransform),Cv(S.clientRect,I,0))}),this._previousSwap.overlaps=ZP(g,e,n),this._previousSwap.drag=p.drag,this._previousSwap.delta=c?o.x:o.y,{previousIndex:m,currentIndex:a}}enter(i,e,n,o){let r=this._activeDraggables,a=r.indexOf(i),c=i.getPlaceholderElement();a>-1&&r.splice(a,1);let m=o==null||o<0?this._getItemIndexFromPointerPosition(i,e,n):o,p=r[m];if(p===i&&(p=r[m+1]),!p&&(m==null||m===-1||m<r.length-1)&&this._shouldEnterAsFirstChild(e,n)&&(p=r[0]),p&&!this._dragDropRegistry.isDragging(p)){let h=p.getRootElement();h.parentElement.insertBefore(c,h),r.splice(m,0,i)}else this._element.appendChild(c),r.push(i);c.style.transform="",this._cacheItemPositions()}withItems(i){this._activeDraggables=i.slice(),this._cacheItemPositions()}withSortPredicate(i){this._sortPredicate=i}reset(){this._activeDraggables?.forEach(i=>{let e=i.getRootElement();if(e){let n=this._itemPositions.find(o=>o.drag===i)?.initialTransform;e.style.transform=n||""}}),this._itemPositions=[],this._activeDraggables=[],this._previousSwap.drag=null,this._previousSwap.delta=0,this._previousSwap.overlaps=!1}getActiveItemsSnapshot(){return this._activeDraggables}getItemIndex(i){return this._getVisualItemPositions().findIndex(e=>e.drag===i)}getItemAtIndex(i){return this._getVisualItemPositions()[i]?.drag||null}updateOnScroll(i,e){this._itemPositions.forEach(({clientRect:n})=>{Cv(n,i,e)}),this._itemPositions.forEach(({drag:n})=>{this._dragDropRegistry.isDragging(n)&&n._sortFromLastPointerPosition()})}withElementContainer(i){this._element=i}_cacheItemPositions(){let i=this.orientation==="horizontal";this._itemPositions=this._activeDraggables.map(e=>{let n=e.getVisibleElement();return{drag:e,offset:0,initialTransform:n.style.transform||"",clientRect:iI(n)}}).sort((e,n)=>i?e.clientRect.left-n.clientRect.left:e.clientRect.top-n.clientRect.top)}_getVisualItemPositions(){return this.orientation==="horizontal"&&this.direction==="rtl"?this._itemPositions.slice().reverse():this._itemPositions}_getItemOffsetPx(i,e,n){let o=this.orientation==="horizontal",r=o?e.left-i.left:e.top-i.top;return n===-1&&(r+=o?e.width-i.width:e.height-i.height),r}_getSiblingOffsetPx(i,e,n){let o=this.orientation==="horizontal",r=e[i].clientRect,a=e[i+n*-1],c=r[o?"width":"height"]*n;if(a){let m=o?"left":"top",p=o?"right":"bottom";n===-1?c-=a.clientRect[m]-r[p]:c+=r[m]-a.clientRect[p]}return c}_shouldEnterAsFirstChild(i,e){if(!this._activeDraggables.length)return!1;let n=this._itemPositions,o=this.orientation==="horizontal";if(n[0].drag!==this._activeDraggables[0]){let a=n[n.length-1].clientRect;return o?i>=a.right:e>=a.bottom}else{let a=n[0].clientRect;return o?i<=a.left:e<=a.top}}_getItemIndexFromPointerPosition(i,e,n,o){let r=this.orientation==="horizontal",a=this._itemPositions.findIndex(({drag:c,clientRect:m})=>{if(c===i)return!1;if(o){let p=r?o.x:o.y;if(c===this._previousSwap.drag&&this._previousSwap.overlaps&&p===this._previousSwap.delta)return!1}return r?e>=Math.floor(m.left)&&e<Math.floor(m.right):n>=Math.floor(m.top)&&n<Math.floor(m.bottom)});return a===-1||!this._sortPredicate(a,i)?-1:a}},tI=class{_document;_dragDropRegistry;_element;_sortPredicate;_rootNode;_activeItems;_previousSwap={drag:null,deltaX:0,deltaY:0,overlaps:!1};_relatedNodes=[];constructor(i,e){this._document=i,this._dragDropRegistry=e}start(i){let e=this._element.childNodes;this._relatedNodes=[];for(let n=0;n<e.length;n++){let o=e[n];this._relatedNodes.push([o,o.nextSibling])}this.withItems(i)}sort(i,e,n,o){let r=this._getItemIndexFromPointerPosition(i,e,n),a=this._previousSwap;if(r===-1||this._activeItems[r]===i)return null;let c=this._activeItems[r];if(a.drag===c&&a.overlaps&&a.deltaX===o.x&&a.deltaY===o.y)return null;let m=this.getItemIndex(i),p=i.getPlaceholderElement(),h=c.getRootElement();r>m?h.after(p):h.before(p),S8(this._activeItems,m,r);let g=this._getRootNode().elementFromPoint(e,n);return a.deltaX=o.x,a.deltaY=o.y,a.drag=c,a.overlaps=h===g||h.contains(g),{previousIndex:m,currentIndex:r}}enter(i,e,n,o){let r=this._activeItems.indexOf(i);r>-1&&this._activeItems.splice(r,1);let a=o==null||o<0?this._getItemIndexFromPointerPosition(i,e,n):o;a===-1&&(a=this._getClosestItemIndexToPointer(i,e,n));let c=this._activeItems[a];c&&!this._dragDropRegistry.isDragging(c)?(this._activeItems.splice(a,0,i),c.getRootElement().before(i.getPlaceholderElement())):(this._activeItems.push(i),this._element.appendChild(i.getPlaceholderElement()))}withItems(i){this._activeItems=i.slice()}withSortPredicate(i){this._sortPredicate=i}reset(){let i=this._element,e=this._previousSwap;for(let n=this._relatedNodes.length-1;n>-1;n--){let[o,r]=this._relatedNodes[n];o.parentNode===i&&o.nextSibling!==r&&(r===null?i.appendChild(o):r.parentNode===i&&i.insertBefore(o,r))}this._relatedNodes=[],this._activeItems=[],e.drag=null,e.deltaX=e.deltaY=0,e.overlaps=!1}getActiveItemsSnapshot(){return this._activeItems}getItemIndex(i){return this._activeItems.indexOf(i)}getItemAtIndex(i){return this._activeItems[i]||null}updateOnScroll(){this._activeItems.forEach(i=>{this._dragDropRegistry.isDragging(i)&&i._sortFromLastPointerPosition()})}withElementContainer(i){i!==this._element&&(this._element=i,this._rootNode=void 0)}_getItemIndexFromPointerPosition(i,e,n){let o=this._getRootNode().elementFromPoint(Math.floor(e),Math.floor(n)),r=o?this._activeItems.findIndex(a=>{let c=a.getRootElement();return o===c||c.contains(o)}):-1;return r===-1||!this._sortPredicate(r,i)?-1:r}_getRootNode(){return this._rootNode||(this._rootNode=IC(this._element)||this._document),this._rootNode}_getClosestItemIndexToPointer(i,e,n){if(this._activeItems.length===0)return-1;if(this._activeItems.length===1)return 0;let o=1/0,r=-1;for(let a=0;a<this._activeItems.length;a++){let c=this._activeItems[a];if(c!==i){let{x:m,y:p}=c.getRootElement().getBoundingClientRect(),h=Math.hypot(e-m,n-p);h<o&&(o=h,r=a)}}return r}},b8=.05,w8=.05,vl=(function(t){return t[t.NONE=0]="NONE",t[t.UP=1]="UP",t[t.DOWN=2]="DOWN",t})(vl||{}),Ya=(function(t){return t[t.NONE=0]="NONE",t[t.LEFT=1]="LEFT",t[t.RIGHT=2]="RIGHT",t})(Ya||{});function Lne(t,i){return new nI(i,t.get(y8),t.get(Pi),t.get(bi),t.get(wd))}var nI=class{_dragDropRegistry;_ngZone;_viewportRuler;element;disabled=!1;sortingDisabled=!1;lockAxis=null;autoScrollDisabled=!1;autoScrollStep=2;hasAnchor=!1;enterPredicate=()=>!0;sortPredicate=()=>!0;beforeStarted=new Le;entered=new Le;exited=new Le;dropped=new Le;sorted=new Le;receivingStarted=new Le;receivingStopped=new Le;data;_container;_isDragging=!1;_parentPositions;_sortStrategy;_domRect;_draggables=[];_siblings=[];_activeSiblings=new Set;_viewportScrollSubscription=so.EMPTY;_verticalScrollDirection=vl.NONE;_horizontalScrollDirection=Ya.NONE;_scrollNode;_stopScrollTimers=new Le;_cachedShadowRoot=null;_document;_scrollableElements=[];_initialScrollSnap;_direction="ltr";constructor(i,e,n,o,r){this._dragDropRegistry=e,this._ngZone=o,this._viewportRuler=r;let a=this.element=Yl(i);this._document=n,this.withOrientation("vertical").withElementContainer(a),e.registerDropContainer(this),this._parentPositions=new P1(n)}dispose(){this._stopScrolling(),this._stopScrollTimers.complete(),this._viewportScrollSubscription.unsubscribe(),this.beforeStarted.complete(),this.entered.complete(),this.exited.complete(),this.dropped.complete(),this.sorted.complete(),this.receivingStarted.complete(),this.receivingStopped.complete(),this._activeSiblings.clear(),this._scrollNode=null,this._parentPositions.clear(),this._dragDropRegistry.removeDropContainer(this)}isDragging(){return this._isDragging}start(){this._draggingStarted(),this._notifyReceivingSiblings()}enter(i,e,n,o){this._draggingStarted(),o==null&&this.sortingDisabled&&(o=this._draggables.indexOf(i)),this._sortStrategy.enter(i,e,n,o),this._cacheParentPositions(),this._notifyReceivingSiblings(),this.entered.next({item:i,container:this,currentIndex:this.getItemIndex(i)})}exit(i){this._reset(),this.exited.next({item:i,container:this})}drop(i,e,n,o,r,a,c,m={}){this._reset(),this.dropped.next({item:i,currentIndex:e,previousIndex:n,container:this,previousContainer:o,isPointerOverContainer:r,distance:a,dropPoint:c,event:m})}withItems(i){let e=this._draggables;return this._draggables=i,i.forEach(n=>n._withDropContainer(this)),this.isDragging()&&(e.filter(o=>o.isDragging()).every(o=>i.indexOf(o)===-1)?this._reset():this._sortStrategy.withItems(this._draggables)),this}withDirection(i){return this._direction=i,this._sortStrategy instanceof A1&&(this._sortStrategy.direction=i),this}connectedTo(i){return this._siblings=i.slice(),this}withOrientation(i){if(i==="mixed")this._sortStrategy=new tI(this._document,this._dragDropRegistry);else{let e=new A1(this._dragDropRegistry);e.direction=this._direction,e.orientation=i,this._sortStrategy=e}return this._sortStrategy.withElementContainer(this._container),this._sortStrategy.withSortPredicate((e,n)=>this.sortPredicate(e,n,this)),this}withScrollableParents(i){let e=this._container;return this._scrollableElements=i.indexOf(e)===-1?[e,...i]:i.slice(),this}withElementContainer(i){if(i===this._container)return this;let e=Yl(this.element),n=this._scrollableElements.indexOf(this._container),o=this._scrollableElements.indexOf(i);return n>-1&&this._scrollableElements.splice(n,1),o>-1&&this._scrollableElements.splice(o,1),this._sortStrategy&&this._sortStrategy.withElementContainer(i),this._cachedShadowRoot=null,this._scrollableElements.unshift(i),this._container=i,this}getScrollableParents(){return this._scrollableElements}getItemIndex(i){return this._isDragging?this._sortStrategy.getItemIndex(i):this._draggables.indexOf(i)}getItemAtIndex(i){return this._isDragging?this._sortStrategy.getItemAtIndex(i):this._draggables[i]||null}isReceiving(){return this._activeSiblings.size>0}_sortItem(i,e,n,o){if(this.sortingDisabled||!this._domRect||!c8(this._domRect,b8,e,n))return;let r=this._sortStrategy.sort(i,e,n,o);r&&this.sorted.next({previousIndex:r.previousIndex,currentIndex:r.currentIndex,container:this,item:i})}_startScrollingIfNecessary(i,e){if(this.autoScrollDisabled)return;let n,o=vl.NONE,r=Ya.NONE;if(this._parentPositions.positions.forEach((a,c)=>{c===this._document||!a.clientRect||n||c8(a.clientRect,b8,i,e)&&([o,r]=Bne(c,a.clientRect,this._direction,i,e),(o||r)&&(n=c))}),!o&&!r){let{width:a,height:c}=this._viewportRuler.getViewportSize(),m={width:a,height:c,top:0,right:a,bottom:c,left:0};o=M8(m,e),r=k8(m,i),n=window}n&&(o!==this._verticalScrollDirection||r!==this._horizontalScrollDirection||n!==this._scrollNode)&&(this._verticalScrollDirection=o,this._horizontalScrollDirection=r,this._scrollNode=n,(o||r)&&n?this._ngZone.runOutsideAngular(this._startScrollInterval):this._stopScrolling())}_stopScrolling(){this._stopScrollTimers.next()}_draggingStarted(){let i=this._container.style;this.beforeStarted.next(),this._isDragging=!0,this._initialScrollSnap=i.msScrollSnapType||i.scrollSnapType||"",i.scrollSnapType=i.msScrollSnapType="none",this._sortStrategy.start(this._draggables),this._cacheParentPositions(),this._viewportScrollSubscription.unsubscribe(),this._listenToScrollEvents()}_cacheParentPositions(){this._parentPositions.cache(this._scrollableElements),this._domRect=this._parentPositions.positions.get(this._container).clientRect}_reset(){this._isDragging=!1;let i=this._container.style;i.scrollSnapType=i.msScrollSnapType=this._initialScrollSnap,this._siblings.forEach(e=>e._stopReceiving(this)),this._sortStrategy.reset(),this._stopScrolling(),this._viewportScrollSubscription.unsubscribe(),this._parentPositions.clear()}_startScrollInterval=()=>{this._stopScrolling(),_C(0,yh).pipe(rt(this._stopScrollTimers)).subscribe(()=>{let i=this._scrollNode,e=this.autoScrollStep;this._verticalScrollDirection===vl.UP?i.scrollBy(0,-e):this._verticalScrollDirection===vl.DOWN&&i.scrollBy(0,e),this._horizontalScrollDirection===Ya.LEFT?i.scrollBy(-e,0):this._horizontalScrollDirection===Ya.RIGHT&&i.scrollBy(e,0)})};_isOverContainer(i,e){return this._domRect!=null&&ZP(this._domRect,i,e)}_getSiblingContainerFromPosition(i,e,n){return this._siblings.find(o=>o._canReceive(i,e,n))}_canReceive(i,e,n){if(!this._domRect||!ZP(this._domRect,e,n)||!this.enterPredicate(i,this))return!1;let o=this._getShadowRoot().elementFromPoint(e,n);return o?o===this._container||this._container.contains(o):!1}_startReceiving(i,e){let n=this._activeSiblings;!n.has(i)&&e.every(o=>this.enterPredicate(o,this)||this._draggables.indexOf(o)>-1)&&(n.add(i),this._cacheParentPositions(),this._listenToScrollEvents(),this.receivingStarted.next({initiator:i,receiver:this,items:e}))}_stopReceiving(i){this._activeSiblings.delete(i),this._viewportScrollSubscription.unsubscribe(),this.receivingStopped.next({initiator:i,receiver:this})}_listenToScrollEvents(){this._viewportScrollSubscription=this._dragDropRegistry.scrolled(this._getShadowRoot()).subscribe(i=>{if(this.isDragging()){let e=this._parentPositions.handleScroll(i);e&&this._sortStrategy.updateOnScroll(e.top,e.left)}else this.isReceiving()&&this._cacheParentPositions()})}_getShadowRoot(){if(!this._cachedShadowRoot){let i=IC(this._container);this._cachedShadowRoot=i||this._document}return this._cachedShadowRoot}_notifyReceivingSiblings(){let i=this._sortStrategy.getActiveItemsSnapshot().filter(e=>e.isDragging());this._siblings.forEach(e=>e._startReceiving(this,i))}};function M8(t,i){let{top:e,bottom:n,height:o}=t,r=o*w8;return i>=e-r&&i<=e+r?vl.UP:i>=n-r&&i<=n+r?vl.DOWN:vl.NONE}function k8(t,i){let{left:e,right:n,width:o}=t,r=o*w8;return i>=e-r&&i<=e+r?Ya.LEFT:i>=n-r&&i<=n+r?Ya.RIGHT:Ya.NONE}function Bne(t,i,e,n,o){let r=M8(i,o),a=k8(i,n),c=vl.NONE,m=Ya.NONE;if(r){let p=t.scrollTop;r===vl.UP?p>0&&(c=vl.UP):t.scrollHeight-p>t.clientHeight&&(c=vl.DOWN)}if(a){let p=t.scrollLeft;e==="rtl"?a===Ya.RIGHT?p<0&&(m=Ya.RIGHT):t.scrollWidth+p>t.clientWidth&&(m=Ya.LEFT):a===Ya.LEFT?p>0&&(m=Ya.LEFT):t.scrollWidth-p>t.clientWidth&&(m=Ya.RIGHT)}return[c,m]}var Vne=(()=>{class t{_injector=f(Di);constructor(){}createDrag(e,n){return Rne(this._injector,e,n)}createDropList(e){return Lne(this._injector,e)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var T8=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({providers:[Vne],imports:[Md]})}return t})();var zne=[[["caption"]],[["colgroup"],["col"]],"*"],jne=["caption","colgroup, col","*"];function $ne(t,i){t&1&&Yt(0,2)}function Hne(t,i){t&1&&(s(0,"thead",0),Xi(1,1),l(),s(2,"tbody",0),Xi(3,2)(4,3),l(),s(5,"tfoot",0),Xi(6,4),l())}function Une(t,i){t&1&&Xi(0,1)(1,2)(2,3)(3,4)}var rc=new kt("CDK_TABLE");var R1=(()=>{class t{template=f(So);constructor(){}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkCellDef",""]]})}return t})(),F1=(()=>{class t{template=f(So);constructor(){}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkHeaderCellDef",""]]})}return t})(),P8=(()=>{class t{template=f(So);constructor(){}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkFooterCellDef",""]]})}return t})(),qm=(()=>{class t{_table=f(rc,{optional:!0});_hasStickyChanged=!1;get name(){return this._name}set name(e){this._setNameInput(e)}_name;get sticky(){return this._sticky}set sticky(e){e!==this._sticky&&(this._sticky=e,this._hasStickyChanged=!0)}_sticky=!1;get stickyEnd(){return this._stickyEnd}set stickyEnd(e){e!==this._stickyEnd&&(this._stickyEnd=e,this._hasStickyChanged=!0)}_stickyEnd=!1;cell;headerCell;footerCell;cssClassFriendlyName;_columnCssClassName;constructor(){}hasStickyChanged(){let e=this._hasStickyChanged;return this.resetStickyChanged(),e}resetStickyChanged(){this._hasStickyChanged=!1}_updateColumnCssClassName(){this._columnCssClassName=[`cdk-column-${this.cssClassFriendlyName}`]}_setNameInput(e){e&&(this._name=e,this.cssClassFriendlyName=e.replace(/[^a-z0-9_-]/gi,"-"),this._updateColumnCssClassName())}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkColumnDef",""]],contentQueries:function(n,o,r){if(n&1&&$i(r,R1,5)(r,F1,5)(r,P8,5),n&2){let a;gt(a=_t())&&(o.cell=a.first),gt(a=_t())&&(o.headerCell=a.first),gt(a=_t())&&(o.footerCell=a.first)}},inputs:{name:[0,"cdkColumnDef","name"],sticky:[2,"sticky","sticky",dt],stickyEnd:[2,"stickyEnd","stickyEnd",dt]}})}return t})(),N1=class{constructor(i,e){e.nativeElement.classList.add(...i._columnCssClassName)}},I8=(()=>{class t extends N1{constructor(){super(f(qm),f(Lt))}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["cdk-header-cell"],["th","cdk-header-cell",""]],hostAttrs:["role","columnheader",1,"cdk-header-cell"],features:[xn]})}return t})();var A8=(()=>{class t extends N1{constructor(){let e=f(qm),n=f(Lt);super(e,n);let o=e._table?._getCellRole();o&&n.nativeElement.setAttribute("role",o)}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["cdk-cell"],["td","cdk-cell",""]],hostAttrs:[1,"cdk-cell"],features:[xn]})}return t})();var aI=(()=>{class t{template=f(So);_differs=f(Sd);columns;_columnsDiffer;constructor(){}ngOnChanges(e){if(!this._columnsDiffer){let n=e.columns&&e.columns.currentValue||[];this._columnsDiffer=this._differs.find(n).create(),this._columnsDiffer.diff(n)}}getColumnsDiff(){return this._columnsDiffer.diff(this.columns)}extractCellTemplate(e){return this instanceof Sv?e.headerCell.template:this instanceof sI?e.footerCell.template:e.cell.template}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,features:[un]})}return t})(),Sv=(()=>{class t extends aI{_table=f(rc,{optional:!0});_hasStickyChanged=!1;get sticky(){return this._sticky}set sticky(e){e!==this._sticky&&(this._sticky=e,this._hasStickyChanged=!0)}_sticky=!1;constructor(){super(f(So),f(Sd))}ngOnChanges(e){super.ngOnChanges(e)}hasStickyChanged(){let e=this._hasStickyChanged;return this.resetStickyChanged(),e}resetStickyChanged(){this._hasStickyChanged=!1}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkHeaderRowDef",""]],inputs:{columns:[0,"cdkHeaderRowDef","columns"],sticky:[2,"cdkHeaderRowDefSticky","sticky",dt]},features:[xn,un]})}return t})(),sI=(()=>{class t extends aI{_table=f(rc,{optional:!0});_hasStickyChanged=!1;get sticky(){return this._sticky}set sticky(e){e!==this._sticky&&(this._sticky=e,this._hasStickyChanged=!0)}_sticky=!1;constructor(){super(f(So),f(Sd))}ngOnChanges(e){super.ngOnChanges(e)}hasStickyChanged(){let e=this._hasStickyChanged;return this.resetStickyChanged(),e}resetStickyChanged(){this._hasStickyChanged=!1}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkFooterRowDef",""]],inputs:{columns:[0,"cdkFooterRowDef","columns"],sticky:[2,"cdkFooterRowDefSticky","sticky",dt]},features:[xn,un]})}return t})(),L1=(()=>{class t extends aI{_table=f(rc,{optional:!0});when;constructor(){super(f(So),f(Sd))}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkRowDef",""]],inputs:{columns:[0,"cdkRowDefColumns","columns"],when:[0,"cdkRowDefWhen","when"]},features:[xn]})}return t})(),Fu=(()=>{class t{_viewContainer=f(co);cells;context;static mostRecentCellOutlet=null;constructor(){t.mostRecentCellOutlet=this}ngOnDestroy(){t.mostRecentCellOutlet===this&&(t.mostRecentCellOutlet=null)}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkCellOutlet",""]]})}return t})(),lI=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["cdk-header-row"],["tr","cdk-header-row",""]],hostAttrs:["role","row",1,"cdk-header-row"],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(n,o){n&1&&Xi(0,0)},dependencies:[Fu],encapsulation:2})}return t})();var cI=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["cdk-row"],["tr","cdk-row",""]],hostAttrs:["role","row",1,"cdk-row"],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(n,o){n&1&&Xi(0,0)},dependencies:[Fu],encapsulation:2})}return t})(),O8=(()=>{class t{templateRef=f(So);_contentClassNames=["cdk-no-data-row","cdk-row"];_cellClassNames=["cdk-cell","cdk-no-data-cell"];_cellSelector="td, cdk-cell, [cdk-cell], .cdk-cell";constructor(){}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["ng-template","cdkNoDataRow",""]]})}return t})(),E8=["top","bottom","left","right"],rI=class{_isNativeHtmlTable;_stickCellCss;_isBrowser;_needsPositionStickyOnElement;direction;_positionListener;_tableInjector;_elemSizeCache=new WeakMap;_resizeObserver=globalThis?.ResizeObserver?new globalThis.ResizeObserver(i=>this._updateCachedSizes(i)):null;_updatedStickyColumnsParamsToReplay=[];_stickyColumnsReplayTimeout=null;_cachedCellWidths=[];_borderCellCss;_destroyed=!1;constructor(i,e,n=!0,o=!0,r,a,c){this._isNativeHtmlTable=i,this._stickCellCss=e,this._isBrowser=n,this._needsPositionStickyOnElement=o,this.direction=r,this._positionListener=a,this._tableInjector=c,this._borderCellCss={top:`${e}-border-elem-top`,bottom:`${e}-border-elem-bottom`,left:`${e}-border-elem-left`,right:`${e}-border-elem-right`}}clearStickyPositioning(i,e){(e.includes("left")||e.includes("right"))&&this._removeFromStickyColumnReplayQueue(i);let n=[];for(let o of i)o.nodeType===o.ELEMENT_NODE&&n.push(o,...Array.from(o.children));ar({write:()=>{for(let o of n)this._removeStickyStyle(o,e)}},{injector:this._tableInjector})}updateStickyColumns(i,e,n,o=!0,r=!0){if(!i.length||!this._isBrowser||!(e.some(S=>S)||n.some(S=>S))){this._positionListener?.stickyColumnsUpdated({sizes:[]}),this._positionListener?.stickyEndColumnsUpdated({sizes:[]});return}let a=i[0],c=a.children.length,m=this.direction==="rtl",p=m?"right":"left",h=m?"left":"right",g=e.lastIndexOf(!0),M=n.indexOf(!0),C,_,w;r&&this._updateStickyColumnReplayQueue({rows:[...i],stickyStartStates:[...e],stickyEndStates:[...n]}),ar({earlyRead:()=>{C=this._getCellWidths(a,o),_=this._getStickyStartColumnPositions(C,e),w=this._getStickyEndColumnPositions(C,n)},write:()=>{for(let S of i)for(let y=0;y<c;y++){let k=S.children[y];e[y]&&this._addStickyStyle(k,p,_[y],y===g),n[y]&&this._addStickyStyle(k,h,w[y],y===M)}this._positionListener&&C.some(S=>!!S)&&(this._positionListener.stickyColumnsUpdated({sizes:g===-1?[]:C.slice(0,g+1).map((S,y)=>e[y]?S:null)}),this._positionListener.stickyEndColumnsUpdated({sizes:M===-1?[]:C.slice(M).map((S,y)=>n[y+M]?S:null).reverse()}))}},{injector:this._tableInjector})}stickRows(i,e,n){if(!this._isBrowser)return;let o=n==="bottom"?i.slice().reverse():i,r=n==="bottom"?e.slice().reverse():e,a=[],c=[],m=[];ar({earlyRead:()=>{for(let p=0,h=0;p<o.length;p++){if(!r[p])continue;a[p]=h;let g=o[p];m[p]=this._isNativeHtmlTable?Array.from(g.children):[g];let M=this._retrieveElementSize(g).height;h+=M,c[p]=M}},write:()=>{let p=r.lastIndexOf(!0);for(let h=0;h<o.length;h++){if(!r[h])continue;let g=a[h],M=h===p;for(let C of m[h])this._addStickyStyle(C,n,g,M)}n==="top"?this._positionListener?.stickyHeaderRowsUpdated({sizes:c,offsets:a,elements:m}):this._positionListener?.stickyFooterRowsUpdated({sizes:c,offsets:a,elements:m})}},{injector:this._tableInjector})}updateStickyFooterContainer(i,e){this._isNativeHtmlTable&&ar({write:()=>{let n=i.querySelector("tfoot");n&&(e.some(o=>!o)?this._removeStickyStyle(n,["bottom"]):this._addStickyStyle(n,"bottom",0,!1))}},{injector:this._tableInjector})}destroy(){this._stickyColumnsReplayTimeout&&clearTimeout(this._stickyColumnsReplayTimeout),this._resizeObserver?.disconnect(),this._destroyed=!0}_removeStickyStyle(i,e){if(!i.classList.contains(this._stickCellCss))return;for(let o of e)i.style[o]="",i.classList.remove(this._borderCellCss[o]);E8.some(o=>e.indexOf(o)===-1&&i.style[o])?i.style.zIndex=this._getCalculatedZIndex(i):(i.style.zIndex="",this._needsPositionStickyOnElement&&(i.style.position=""),i.classList.remove(this._stickCellCss))}_addStickyStyle(i,e,n,o){i.classList.add(this._stickCellCss),o&&i.classList.add(this._borderCellCss[e]),i.style[e]=`${n}px`,i.style.zIndex=this._getCalculatedZIndex(i),this._needsPositionStickyOnElement&&(i.style.cssText+="position: -webkit-sticky; position: sticky; ")}_getCalculatedZIndex(i){let e={top:100,bottom:10,left:1,right:1},n=0;for(let o of E8)i.style[o]&&(n+=e[o]);return n?`${n}`:""}_getCellWidths(i,e=!0){if(!e&&this._cachedCellWidths.length)return this._cachedCellWidths;let n=[],o=i.children;for(let r=0;r<o.length;r++){let a=o[r];n.push(this._retrieveElementSize(a).width)}return this._cachedCellWidths=n,n}_getStickyStartColumnPositions(i,e){let n=[],o=0;for(let r=0;r<i.length;r++)e[r]&&(n[r]=o,o+=i[r]);return n}_getStickyEndColumnPositions(i,e){let n=[],o=0;for(let r=i.length;r>0;r--)e[r]&&(n[r]=o,o+=i[r]);return n}_retrieveElementSize(i){let e=this._elemSizeCache.get(i);if(e)return e;let n=i.getBoundingClientRect(),o={width:n.width,height:n.height};return this._resizeObserver&&(this._elemSizeCache.set(i,o),this._resizeObserver.observe(i,{box:"border-box"})),o}_updateStickyColumnReplayQueue(i){this._removeFromStickyColumnReplayQueue(i.rows),this._stickyColumnsReplayTimeout||this._updatedStickyColumnsParamsToReplay.push(i)}_removeFromStickyColumnReplayQueue(i){let e=new Set(i);for(let n of this._updatedStickyColumnsParamsToReplay)n.rows=n.rows.filter(o=>!e.has(o));this._updatedStickyColumnsParamsToReplay=this._updatedStickyColumnsParamsToReplay.filter(n=>!!n.rows.length)}_updateCachedSizes(i){let e=!1;for(let n of i){let o=n.borderBoxSize?.length?{width:n.borderBoxSize[0].inlineSize,height:n.borderBoxSize[0].blockSize}:{width:n.contentRect.width,height:n.contentRect.height};o.width!==this._elemSizeCache.get(n.target)?.width&&Gne(n.target)&&(e=!0),this._elemSizeCache.set(n.target,o)}e&&this._updatedStickyColumnsParamsToReplay.length&&(this._stickyColumnsReplayTimeout&&clearTimeout(this._stickyColumnsReplayTimeout),this._stickyColumnsReplayTimeout=setTimeout(()=>{if(!this._destroyed){for(let n of this._updatedStickyColumnsParamsToReplay)this.updateStickyColumns(n.rows,n.stickyStartStates,n.stickyEndStates,!0,!1);this._updatedStickyColumnsParamsToReplay=[],this._stickyColumnsReplayTimeout=null}},0))}};function Gne(t){return["cdk-cell","cdk-header-cell","cdk-footer-cell"].some(i=>t.classList.contains(i))}var yv=new kt("STICKY_POSITIONING_LISTENER");var dI=(()=>{class t{viewContainer=f(co);elementRef=f(Lt);constructor(){let e=f(rc);e._rowOutlet=this,e._outletAssigned()}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","rowOutlet",""]]})}return t})(),mI=(()=>{class t{viewContainer=f(co);elementRef=f(Lt);constructor(){let e=f(rc);e._headerRowOutlet=this,e._outletAssigned()}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","headerRowOutlet",""]]})}return t})(),pI=(()=>{class t{viewContainer=f(co);elementRef=f(Lt);constructor(){let e=f(rc);e._footerRowOutlet=this,e._outletAssigned()}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","footerRowOutlet",""]]})}return t})(),uI=(()=>{class t{viewContainer=f(co);elementRef=f(Lt);constructor(){let e=f(rc);e._noDataRowOutlet=this,e._outletAssigned()}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","noDataRowOutlet",""]]})}return t})(),hI=(()=>{class t{_differs=f(Sd);_changeDetectorRef=f(K);_elementRef=f(Lt);_dir=f(Hr,{optional:!0});_platform=f(Ta);_viewRepeater;_viewportRuler=f(wd);_injector=f(Di);_virtualScrollViewport=f(iR,{optional:!0,host:!0});_positionListener=f(yv,{optional:!0})||f(yv,{optional:!0,skipSelf:!0});_document=f(Pi);_data;_renderedRange;_onDestroy=new Le;_renderRows;_renderChangeSubscription=null;_columnDefsByName=new Map;_rowDefs;_headerRowDefs;_footerRowDefs;_dataDiffer;_defaultRowDef=null;_customColumnDefs=new Set;_customRowDefs=new Set;_customHeaderRowDefs=new Set;_customFooterRowDefs=new Set;_customNoDataRow=null;_headerRowDefChanged=!0;_footerRowDefChanged=!0;_stickyColumnStylesNeedReset=!0;_forceRecalculateCellWidths=!0;_cachedRenderRowsMap=new Map;_isNativeHtmlTable;_stickyStyler;stickyCssClass="cdk-table-sticky";needsPositionStickyOnElement=!0;_isServer;_isShowingNoDataRow=!1;_hasAllOutlets=!1;_hasInitialized=!1;_headerRowStickyUpdates=new Le;_footerRowStickyUpdates=new Le;_disableVirtualScrolling=!1;_getCellRole(){if(this._cellRoleInternal===void 0){let e=this._elementRef.nativeElement.getAttribute("role");return e==="grid"||e==="treegrid"?"gridcell":"cell"}return this._cellRoleInternal}_cellRoleInternal=void 0;get trackBy(){return this._trackByFn}set trackBy(e){this._trackByFn=e}_trackByFn;get dataSource(){return this._dataSource}set dataSource(e){this._dataSource!==e&&(this._switchDataSource(e),this._changeDetectorRef.markForCheck())}_dataSource;_dataSourceChanges=new Le;_dataStream=new Le;get multiTemplateDataRows(){return this._multiTemplateDataRows}set multiTemplateDataRows(e){this._multiTemplateDataRows=e,this._rowOutlet&&this._rowOutlet.viewContainer.length&&(this._forceRenderDataRows(),this.updateStickyColumnStyles())}_multiTemplateDataRows=!1;get fixedLayout(){return this._virtualScrollEnabled()?!0:this._fixedLayout}set fixedLayout(e){this._fixedLayout=e,this._forceRecalculateCellWidths=!0,this._stickyColumnStylesNeedReset=!0}_fixedLayout=!1;recycleRows=!1;contentChanged=new ve;viewChange=new qt({start:0,end:Number.MAX_VALUE});_rowOutlet;_headerRowOutlet;_footerRowOutlet;_noDataRowOutlet;_contentColumnDefs;_contentRowDefs;_contentHeaderRowDefs;_contentFooterRowDefs;_noDataRow;constructor(){f(new ka("role"),{optional:!0})||this._elementRef.nativeElement.setAttribute("role","table"),this._isServer=!this._platform.isBrowser,this._isNativeHtmlTable=this._elementRef.nativeElement.nodeName==="TABLE",this._dataDiffer=this._differs.find([]).create((n,o)=>this.trackBy?this.trackBy(o.dataIndex,o.data):o)}ngOnInit(){this._setupStickyStyler(),this._viewportRuler.change().pipe(rt(this._onDestroy)).subscribe(()=>{this._forceRecalculateCellWidths=!0})}ngAfterContentInit(){this._viewRepeater=this.recycleRows||this._virtualScrollEnabled()?new nR:new sR,this._virtualScrollEnabled()&&this._setupVirtualScrolling(this._virtualScrollViewport),this._hasInitialized=!0}ngAfterContentChecked(){this._canRender()&&this._render()}ngOnDestroy(){this._stickyStyler?.destroy(),[this._rowOutlet?.viewContainer,this._headerRowOutlet?.viewContainer,this._footerRowOutlet?.viewContainer,this._cachedRenderRowsMap,this._customColumnDefs,this._customRowDefs,this._customHeaderRowDefs,this._customFooterRowDefs,this._columnDefsByName].forEach(e=>{e?.clear()}),this._headerRowDefs=[],this._footerRowDefs=[],this._defaultRowDef=null,this._headerRowStickyUpdates.complete(),this._footerRowStickyUpdates.complete(),this._onDestroy.next(),this._onDestroy.complete(),Ih(this.dataSource)&&this.dataSource.disconnect(this)}renderRows(){this._renderRows=this._getAllRenderRows();let e=this._dataDiffer.diff(this._renderRows);if(!e){this._updateNoDataRow(),this.contentChanged.next();return}let n=this._rowOutlet.viewContainer;this._viewRepeater.applyChanges(e,n,(o,r,a)=>this._getEmbeddedViewArgs(o.item,a),o=>o.item.data,o=>{o.operation===tR.INSERTED&&o.context&&this._renderCellTemplateForItem(o.record.item.rowDef,o.context)}),this._updateRowIndexContext(),e.forEachIdentityChange(o=>{let r=n.get(o.currentIndex);r.context.$implicit=o.item.data}),this._updateNoDataRow(),this.contentChanged.next(),this.updateStickyColumnStyles()}addColumnDef(e){this._customColumnDefs.add(e)}removeColumnDef(e){this._customColumnDefs.delete(e)}addRowDef(e){this._customRowDefs.add(e)}removeRowDef(e){this._customRowDefs.delete(e)}addHeaderRowDef(e){this._customHeaderRowDefs.add(e),this._headerRowDefChanged=!0}removeHeaderRowDef(e){this._customHeaderRowDefs.delete(e),this._headerRowDefChanged=!0}addFooterRowDef(e){this._customFooterRowDefs.add(e),this._footerRowDefChanged=!0}removeFooterRowDef(e){this._customFooterRowDefs.delete(e),this._footerRowDefChanged=!0}setNoDataRow(e){this._customNoDataRow=e}updateStickyHeaderRowStyles(){let e=this._getRenderedRows(this._headerRowOutlet);if(this._isNativeHtmlTable){let o=D8(this._headerRowOutlet,"thead");o&&(o.style.display=e.length?"":"none")}let n=this._headerRowDefs.map(o=>o.sticky);this._stickyStyler.clearStickyPositioning(e,["top"]),this._stickyStyler.stickRows(e,n,"top"),this._headerRowDefs.forEach(o=>o.resetStickyChanged())}updateStickyFooterRowStyles(){let e=this._getRenderedRows(this._footerRowOutlet);if(this._isNativeHtmlTable){let o=D8(this._footerRowOutlet,"tfoot");o&&(o.style.display=e.length?"":"none")}let n=this._footerRowDefs.map(o=>o.sticky);this._stickyStyler.clearStickyPositioning(e,["bottom"]),this._stickyStyler.stickRows(e,n,"bottom"),this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement,n),this._footerRowDefs.forEach(o=>o.resetStickyChanged())}updateStickyColumnStyles(){let e=this._getRenderedRows(this._headerRowOutlet),n=this._getRenderedRows(this._rowOutlet),o=this._getRenderedRows(this._footerRowOutlet);(this._isNativeHtmlTable&&!this.fixedLayout||this._stickyColumnStylesNeedReset)&&(this._stickyStyler.clearStickyPositioning([...e,...n,...o],["left","right"]),this._stickyColumnStylesNeedReset=!1),e.forEach((r,a)=>{this._addStickyColumnStyles([r],this._headerRowDefs[a])}),this._rowDefs.forEach(r=>{let a=[];for(let c=0;c<n.length;c++)this._renderRows[c].rowDef===r&&a.push(n[c]);this._addStickyColumnStyles(a,r)}),o.forEach((r,a)=>{this._addStickyColumnStyles([r],this._footerRowDefs[a])}),Array.from(this._columnDefsByName.values()).forEach(r=>r.resetStickyChanged())}stickyColumnsUpdated(e){this._positionListener?.stickyColumnsUpdated(e)}stickyEndColumnsUpdated(e){this._positionListener?.stickyEndColumnsUpdated(e)}stickyHeaderRowsUpdated(e){this._headerRowStickyUpdates.next(e),this._positionListener?.stickyHeaderRowsUpdated(e)}stickyFooterRowsUpdated(e){this._footerRowStickyUpdates.next(e),this._positionListener?.stickyFooterRowsUpdated(e)}_outletAssigned(){!this._hasAllOutlets&&this._rowOutlet&&this._headerRowOutlet&&this._footerRowOutlet&&this._noDataRowOutlet&&(this._hasAllOutlets=!0,this._canRender()&&this._render())}_canRender(){return this._hasAllOutlets&&this._hasInitialized}_render(){this._cacheRowDefs(),this._cacheColumnDefs(),!this._headerRowDefs.length&&!this._footerRowDefs.length&&this._rowDefs.length;let n=this._renderUpdatedColumns()||this._headerRowDefChanged||this._footerRowDefChanged;this._stickyColumnStylesNeedReset=this._stickyColumnStylesNeedReset||n,this._forceRecalculateCellWidths=n,this._headerRowDefChanged&&(this._forceRenderHeaderRows(),this._headerRowDefChanged=!1),this._footerRowDefChanged&&(this._forceRenderFooterRows(),this._footerRowDefChanged=!1),this.dataSource&&this._rowDefs.length>0&&!this._renderChangeSubscription?this._observeRenderChanges():this._stickyColumnStylesNeedReset&&this.updateStickyColumnStyles(),this._checkStickyStates()}_getAllRenderRows(){if(!Array.isArray(this._data)||!this._renderedRange)return[];let e=[],n=Math.min(this._data.length,this._renderedRange.end),o=this._cachedRenderRowsMap;this._cachedRenderRowsMap=new Map;for(let r=this._renderedRange.start;r<n;r++){let a=this._data[r],c=this._getRenderRowsForData(a,r,o.get(a));this._cachedRenderRowsMap.has(a)||this._cachedRenderRowsMap.set(a,new WeakMap);for(let m=0;m<c.length;m++){let p=c[m],h=this._cachedRenderRowsMap.get(p.data);h.has(p.rowDef)?h.get(p.rowDef).push(p):h.set(p.rowDef,[p]),e.push(p)}}return e}_getRenderRowsForData(e,n,o){return this._getRowDefs(e,n).map(a=>{let c=o&&o.has(a)?o.get(a):[];if(c.length){let m=c.shift();return m.dataIndex=n,m}else return{data:e,rowDef:a,dataIndex:n}})}_cacheColumnDefs(){this._columnDefsByName.clear(),O1(this._getOwnDefs(this._contentColumnDefs),this._customColumnDefs).forEach(n=>{this._columnDefsByName.has(n.name),this._columnDefsByName.set(n.name,n)})}_cacheRowDefs(){this._headerRowDefs=O1(this._getOwnDefs(this._contentHeaderRowDefs),this._customHeaderRowDefs),this._footerRowDefs=O1(this._getOwnDefs(this._contentFooterRowDefs),this._customFooterRowDefs),this._rowDefs=O1(this._getOwnDefs(this._contentRowDefs),this._customRowDefs);let e=this._rowDefs.filter(n=>!n.when);this._defaultRowDef=e[0]}_renderUpdatedColumns(){let e=(a,c)=>{let m=!!c.getColumnsDiff();return a||m},n=this._rowDefs.reduce(e,!1);n&&this._forceRenderDataRows();let o=this._headerRowDefs.reduce(e,!1);o&&this._forceRenderHeaderRows();let r=this._footerRowDefs.reduce(e,!1);return r&&this._forceRenderFooterRows(),n||o||r}_switchDataSource(e){this._data=[],Ih(this.dataSource)&&this.dataSource.disconnect(this),this._renderChangeSubscription&&(this._renderChangeSubscription.unsubscribe(),this._renderChangeSubscription=null),e||(this._dataDiffer&&this._dataDiffer.diff([]),this._rowOutlet&&this._rowOutlet.viewContainer.clear()),this._dataSource=e}_observeRenderChanges(){if(!this.dataSource)return;let e;Ih(this.dataSource)?e=this.dataSource.connect(this):cm(this.dataSource)?e=this.dataSource:Array.isArray(this.dataSource)&&(e=xt(this.dataSource)),this._renderChangeSubscription=rr([e,this.viewChange]).pipe(rt(this._onDestroy)).subscribe(([n,o])=>{this._data=n||[],this._renderedRange=o,this._dataStream.next(n),this.renderRows()})}_forceRenderHeaderRows(){this._headerRowOutlet.viewContainer.length>0&&this._headerRowOutlet.viewContainer.clear(),this._headerRowDefs.forEach((e,n)=>this._renderRow(this._headerRowOutlet,e,n)),this.updateStickyHeaderRowStyles()}_forceRenderFooterRows(){this._footerRowOutlet.viewContainer.length>0&&this._footerRowOutlet.viewContainer.clear(),this._footerRowDefs.forEach((e,n)=>this._renderRow(this._footerRowOutlet,e,n)),this.updateStickyFooterRowStyles()}_addStickyColumnStyles(e,n){let o=Array.from(n?.columns||[]).map(c=>{let m=this._columnDefsByName.get(c);return m}),r=o.map(c=>c.sticky),a=o.map(c=>c.stickyEnd);this._stickyStyler.updateStickyColumns(e,r,a,!this.fixedLayout||this._forceRecalculateCellWidths)}_getRenderedRows(e){let n=[];for(let o=0;o<e.viewContainer.length;o++){let r=e.viewContainer.get(o);n.push(r.rootNodes[0])}return n}_getRowDefs(e,n){if(this._rowDefs.length===1)return[this._rowDefs[0]];let o=[];if(this.multiTemplateDataRows)o=this._rowDefs.filter(r=>!r.when||r.when(n,e));else{let r=this._rowDefs.find(a=>a.when&&a.when(n,e))||this._defaultRowDef;r&&o.push(r)}return o.length,o}_getEmbeddedViewArgs(e,n){let o=e.rowDef,r={$implicit:e.data};return{templateRef:o.template,context:r,index:n}}_renderRow(e,n,o,r={}){let a=e.viewContainer.createEmbeddedView(n.template,r,o);return this._renderCellTemplateForItem(n,r),a}_renderCellTemplateForItem(e,n){for(let o of this._getCellTemplates(e))Fu.mostRecentCellOutlet&&Fu.mostRecentCellOutlet._viewContainer.createEmbeddedView(o,n);this._changeDetectorRef.markForCheck()}_updateRowIndexContext(){let e=this._rowOutlet.viewContainer;for(let n=0,o=e.length;n<o;n++){let a=e.get(n).context;a.count=o,a.first=n===0,a.last=n===o-1,a.even=n%2===0,a.odd=!a.even,this.multiTemplateDataRows?(a.dataIndex=this._renderRows[n].dataIndex,a.renderIndex=n):a.index=this._renderRows[n].dataIndex}}_getCellTemplates(e){return!e||!e.columns?[]:Array.from(e.columns,n=>{let o=this._columnDefsByName.get(n);return e.extractCellTemplate(o)})}_forceRenderDataRows(){this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear(),this.renderRows()}_checkStickyStates(){let e=(n,o)=>n||o.hasStickyChanged();this._headerRowDefs.reduce(e,!1)&&this.updateStickyHeaderRowStyles(),this._footerRowDefs.reduce(e,!1)&&this.updateStickyFooterRowStyles(),Array.from(this._columnDefsByName.values()).reduce(e,!1)&&(this._stickyColumnStylesNeedReset=!0,this.updateStickyColumnStyles())}_setupStickyStyler(){let e=this._dir?this._dir.value:"ltr",n=this._injector;this._stickyStyler=new rI(this._isNativeHtmlTable,this.stickyCssClass,this._platform.isBrowser,this.needsPositionStickyOnElement,e,this,n),(this._dir?this._dir.change:xt()).pipe(rt(this._onDestroy)).subscribe(o=>{this._stickyStyler.direction=o,this.updateStickyColumnStyles()})}_setupVirtualScrolling(e){let n=typeof requestAnimationFrame<"u"?yh:p5;this.viewChange.next({start:0,end:0}),e.renderedRangeStream.pipe(vC(0,n),rt(this._onDestroy)).subscribe(this.viewChange),e.attach({dataStream:this._dataStream,measureRangeSize:(o,r)=>this._measureRangeSize(o,r)}),rr([e.renderedContentOffset,this._headerRowStickyUpdates]).pipe(rt(this._onDestroy)).subscribe(([o,r])=>{if(!(!r.sizes||!r.offsets||!r.elements))for(let a=0;a<r.elements.length;a++){let c=r.elements[a];if(c){let m=r.offsets[a],p=o!==0?Math.max(o-m,m):-m;for(let h of c)h.style.top=`${-p}px`}}}),rr([e.renderedContentOffset,this._footerRowStickyUpdates]).pipe(rt(this._onDestroy)).subscribe(([o,r])=>{if(!(!r.sizes||!r.offsets||!r.elements))for(let a=0;a<r.elements.length;a++){let c=r.elements[a];if(c)for(let m of c)m.style.bottom=`${o+r.offsets[a]}px`}})}_getOwnDefs(e){return e.filter(n=>!n._table||n._table===this)}_updateNoDataRow(){let e=this._customNoDataRow||this._noDataRow;if(!e)return;let n=this._rowOutlet.viewContainer.length===0;if(n===this._isShowingNoDataRow)return;let o=this._noDataRowOutlet.viewContainer;if(n){let r=o.createEmbeddedView(e.templateRef),a=r.rootNodes[0];if(r.rootNodes.length===1&&a?.nodeType===this._document.ELEMENT_NODE){a.setAttribute("role","row"),a.classList.add(...e._contentClassNames);let c=a.querySelectorAll(e._cellSelector);for(let m=0;m<c.length;m++)c[m].classList.add(...e._cellClassNames)}}else o.clear();this._isShowingNoDataRow=n,this._changeDetectorRef.markForCheck()}_measureRangeSize(e,n){if(e.start>=e.end||n!=="vertical")return 0;let o=this.viewChange.value,r=this._rowOutlet.viewContainer;e.start<o.start||e.end>o.end;let a=e.start-o.start,c=e.end-e.start,m,p;for(let M=0;M<c;M++){let C=r.get(M+a);if(C&&C.rootNodes.length){m=p=C.rootNodes[0];break}}for(let M=c-1;M>-1;M--){let C=r.get(M+a);if(C&&C.rootNodes.length){p=C.rootNodes[C.rootNodes.length-1];break}}let h=m?.getBoundingClientRect?.(),g=p?.getBoundingClientRect?.();return h&&g?g.bottom-h.top:0}_virtualScrollEnabled(){return!this._disableVirtualScrolling&&this._virtualScrollViewport!=null}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["cdk-table"],["table","cdk-table",""]],contentQueries:function(n,o,r){if(n&1&&$i(r,O8,5)(r,qm,5)(r,L1,5)(r,Sv,5)(r,sI,5),n&2){let a;gt(a=_t())&&(o._noDataRow=a.first),gt(a=_t())&&(o._contentColumnDefs=a),gt(a=_t())&&(o._contentRowDefs=a),gt(a=_t())&&(o._contentHeaderRowDefs=a),gt(a=_t())&&(o._contentFooterRowDefs=a)}},hostAttrs:[1,"cdk-table"],hostVars:2,hostBindings:function(n,o){n&2&&je("cdk-table-fixed-layout",o.fixedLayout)},inputs:{trackBy:"trackBy",dataSource:"dataSource",multiTemplateDataRows:[2,"multiTemplateDataRows","multiTemplateDataRows",dt],fixedLayout:[2,"fixedLayout","fixedLayout",dt],recycleRows:[2,"recycleRows","recycleRows",dt]},outputs:{contentChanged:"contentChanged"},exportAs:["cdkTable"],features:[hn([{provide:rc,useExisting:t},{provide:yv,useValue:null}])],ngContentSelectors:jne,decls:5,vars:2,consts:[["role","rowgroup"],["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(n,o){n&1&&(En(zne),Yt(0),Yt(1,1),A(2,$ne,1,0),A(3,Hne,7,0)(4,Une,4,0)),n&2&&(u(2),O(o._isServer?2:-1),u(),O(o._isNativeHtmlTable?3:4))},dependencies:[mI,dI,uI,pI],styles:[`.cdk-table-fixed-layout{table-layout:fixed}
|
||
`],encapsulation:2})}return t})();function O1(t,i){return t.concat(Array.from(i))}function D8(t,i){let e=i.toUpperCase(),n=t.viewContainer.element.nativeElement;for(;n;){let o=n.nodeType===1?n.nodeName:null;if(o===e)return n;if(o==="TABLE")break;n=n.parentNode}return null}var B1=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[oR]})}return t})();var N8=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[Md,wn,Md]})}return t})();var Hn=(function(t){return t[t.State=0]="State",t[t.Transition=1]="Transition",t[t.Sequence=2]="Sequence",t[t.Group=3]="Group",t[t.Animate=4]="Animate",t[t.Keyframes=5]="Keyframes",t[t.Style=6]="Style",t[t.Trigger=7]="Trigger",t[t.Reference=8]="Reference",t[t.AnimateChild=9]="AnimateChild",t[t.AnimateRef=10]="AnimateRef",t[t.Query=11]="Query",t[t.Stagger=12]="Stagger",t})(Hn||{}),bl="*";function fI(t,i){return{type:Hn.Trigger,name:t,definitions:i,options:{}}}function gI(t,i=null){return{type:Hn.Animate,styles:i,timings:t}}function R8(t,i=null){return{type:Hn.Sequence,steps:t,options:i}}function Bu(t){return{type:Hn.Style,styles:t,offset:null}}function V1(t,i,e){return{type:Hn.State,name:t,styles:i,options:e}}function _I(t,i,e=null){return{type:Hn.Transition,expr:t,animation:i,options:e}}var Hc=class{_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_originalOnDoneFns=[];_originalOnStartFns=[];_started=!1;_destroyed=!1;_finished=!1;_position=0;parentPlayer=null;totalTime;constructor(i=0,e=0){this.totalTime=i+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(i=>i()),this._onDoneFns=[])}onStart(i){this._originalOnStartFns.push(i),this._onStartFns.push(i)}onDone(i){this._originalOnDoneFns.push(i),this._onDoneFns.push(i)}onDestroy(i){this._onDestroyFns.push(i)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(i=>i()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(i=>i()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(i){this._position=this.totalTime?i*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(i){let e=i=="start"?this._onStartFns:this._onDoneFns;e.forEach(n=>n()),e.length=0}},Lu=class{_onDoneFns=[];_onStartFns=[];_finished=!1;_started=!1;_destroyed=!1;_onDestroyFns=[];parentPlayer=null;totalTime=0;players;constructor(i){this.players=i;let e=0,n=0,o=0,r=this.players.length;r==0?queueMicrotask(()=>this._onFinish()):this.players.forEach(a=>{a.onDone(()=>{++e==r&&this._onFinish()}),a.onDestroy(()=>{++n==r&&this._onDestroy()}),a.onStart(()=>{++o==r&&this._onStart()})}),this.totalTime=this.players.reduce((a,c)=>Math.max(a,c.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(i=>i()),this._onDoneFns=[])}init(){this.players.forEach(i=>i.init())}onStart(i){this._onStartFns.push(i)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(i=>i()),this._onStartFns=[])}onDone(i){this._onDoneFns.push(i)}onDestroy(i){this._onDestroyFns.push(i)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(i=>i.play())}pause(){this.players.forEach(i=>i.pause())}restart(){this.players.forEach(i=>i.restart())}finish(){this._onFinish(),this.players.forEach(i=>i.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(i=>i.destroy()),this._onDestroyFns.forEach(i=>i()),this._onDestroyFns=[])}reset(){this.players.forEach(i=>i.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(i){let e=i*this.totalTime;this.players.forEach(n=>{let o=n.totalTime?Math.min(1,e/n.totalTime):1;n.setPosition(o)})}getPosition(){let i=this.players.reduce((e,n)=>e===null||n.totalTime>e.totalTime?n:e,null);return i!=null?i.getPosition():0}beforeDestroy(){this.players.forEach(i=>{i.beforeDestroy&&i.beforeDestroy()})}triggerCallback(i){let e=i=="start"?this._onStartFns:this._onDoneFns;e.forEach(n=>n()),e.length=0}},Pf="!";function F8(t){return new vn(3e3,!1)}function Wne(){return new vn(3100,!1)}function qne(){return new vn(3101,!1)}function Xne(t){return new vn(3001,!1)}function Qne(t){return new vn(3003,!1)}function Yne(t){return new vn(3004,!1)}function B8(t,i){return new vn(3005,!1)}function V8(){return new vn(3006,!1)}function z8(){return new vn(3007,!1)}function j8(t,i){return new vn(3008,!1)}function $8(t){return new vn(3002,!1)}function H8(t,i,e,n,o){return new vn(3010,!1)}function U8(){return new vn(3011,!1)}function G8(){return new vn(3012,!1)}function W8(){return new vn(3200,!1)}function q8(){return new vn(3202,!1)}function X8(){return new vn(3013,!1)}function Q8(t){return new vn(3014,!1)}function Y8(t){return new vn(3015,!1)}function K8(t){return new vn(3016,!1)}function Z8(t,i){return new vn(3404,!1)}function Kne(t){return new vn(3502,!1)}function J8(t){return new vn(3503,!1)}function eB(){return new vn(3300,!1)}function tB(t){return new vn(3504,!1)}function nB(t){return new vn(3301,!1)}function iB(t,i){return new vn(3302,!1)}function oB(t){return new vn(3303,!1)}function rB(t,i){return new vn(3400,!1)}function aB(t){return new vn(3401,!1)}function sB(t){return new vn(3402,!1)}function lB(t,i){return new vn(3505,!1)}function Fd(t){switch(t.length){case 0:return new Hc;case 1:return t[0];default:return new Lu(t)}}function xI(t,i,e=new Map,n=new Map){let o=[],r=[],a=-1,c=null;if(i.forEach(m=>{let p=m.get("offset"),h=p==a,g=h&&c||new Map;m.forEach((M,C)=>{let _=C,w=M;if(C!=="offset")switch(_=t.normalizePropertyName(_,o),w){case Pf:w=e.get(C);break;case bl:w=n.get(C);break;default:w=t.normalizeStyleValue(C,_,w,o);break}g.set(_,w)}),h||r.push(g),c=g,a=p}),o.length)throw Kne(o);return r}function z1(t,i,e,n){switch(i){case"start":t.onStart(()=>n(e&&vI(e,"start",t)));break;case"done":t.onDone(()=>n(e&&vI(e,"done",t)));break;case"destroy":t.onDestroy(()=>n(e&&vI(e,"destroy",t)));break}}function vI(t,i,e){let n=e.totalTime,o=!!e.disabled,r=j1(t.element,t.triggerName,t.fromState,t.toState,i||t.phaseName,n??t.totalTime,o),a=t._data;return a!=null&&(r._data=a),r}function j1(t,i,e,n,o="",r=0,a){return{element:t,triggerName:i,fromState:e,toState:n,phaseName:o,totalTime:r,disabled:!!a}}function bs(t,i,e){let n=t.get(i);return n||t.set(i,n=e),n}function yI(t){let i=t.indexOf(":"),e=t.substring(1,i),n=t.slice(i+1);return[e,n]}var Zne=typeof document>"u"?null:document.documentElement;function $1(t){let i=t.parentNode||t.host||null;return i===Zne?null:i}function Jne(t){return t.substring(1,6)=="ebkit"}var Vu=null,L8=!1;function cB(t){Vu||(Vu=eie()||{},L8=Vu.style?"WebkitAppearance"in Vu.style:!1);let i=!0;return Vu.style&&!Jne(t)&&(i=t in Vu.style,!i&&L8&&(i="Webkit"+t.charAt(0).toUpperCase()+t.slice(1)in Vu.style)),i}function eie(){return typeof document<"u"?document.body:null}function SI(t,i){for(;i;){if(i===t)return!0;i=$1(i)}return!1}function wI(t,i,e){if(e)return Array.from(t.querySelectorAll(i));let n=t.querySelector(i);return n?[n]:[]}var tie=1e3,MI="{{",nie="}}",kI="ng-enter",H1="ng-leave",wv="ng-trigger",Mv=".ng-trigger",TI="ng-animating",U1=".ng-animating";function Uc(t){if(typeof t=="number")return t;let i=t.match(/^(-?[\.\d]+)(m?s)/);return!i||i.length<2?0:bI(parseFloat(i[1]),i[2])}function bI(t,i){return i==="s"?t*tie:t}function kv(t,i,e){return t.hasOwnProperty("duration")?t:oie(t,i,e)}var iie=/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i;function oie(t,i,e){let n,o=0,r="";if(typeof t=="string"){let a=t.match(iie);if(a===null)return i.push(F8(t)),{duration:0,delay:0,easing:""};n=bI(parseFloat(a[1]),a[2]);let c=a[3];c!=null&&(o=bI(parseFloat(c),a[4]));let m=a[5];m&&(r=m)}else n=t;if(!e){let a=!1,c=i.length;n<0&&(i.push(Wne()),a=!0),o<0&&(i.push(qne()),a=!0),a&&i.splice(c,0,F8(t))}return{duration:n,delay:o,easing:r}}function dB(t){return t.length?t[0]instanceof Map?t:t.map(i=>new Map(Object.entries(i))):[]}function ac(t,i,e){i.forEach((n,o)=>{let r=G1(o);e&&!e.has(o)&&e.set(o,t.style[r]),t.style[r]=n})}function Xm(t,i){i.forEach((e,n)=>{let o=G1(n);t.style[o]=""})}function If(t){return Array.isArray(t)?t.length==1?t[0]:R8(t):t}function mB(t,i,e){let n=i.params||{},o=EI(t);o.length&&o.forEach(r=>{n.hasOwnProperty(r)||e.push(Xne(r))})}var CI=new RegExp(`${MI}\\s*(.+?)\\s*${nie}`,"g");function EI(t){let i=[];if(typeof t=="string"){let e;for(;e=CI.exec(t);)i.push(e[1]);CI.lastIndex=0}return i}function Af(t,i,e){let n=`${t}`,o=n.replace(CI,(r,a)=>{let c=i[a];return c==null&&(e.push(Qne(a)),c=""),c.toString()});return o==n?t:o}var rie=/-+([a-z0-9])/g;function G1(t){return t.replace(rie,(...i)=>i[1].toUpperCase())}function pB(t,i){return t===0||i===0}function uB(t,i,e){if(e.size&&i.length){let n=i[0],o=[];if(e.forEach((r,a)=>{n.has(a)||o.push(a),n.set(a,r)}),o.length)for(let r=1;r<i.length;r++){let a=i[r];o.forEach(c=>a.set(c,W1(t,c)))}}return i}function Cs(t,i,e){switch(i.type){case Hn.Trigger:return t.visitTrigger(i,e);case Hn.State:return t.visitState(i,e);case Hn.Transition:return t.visitTransition(i,e);case Hn.Sequence:return t.visitSequence(i,e);case Hn.Group:return t.visitGroup(i,e);case Hn.Animate:return t.visitAnimate(i,e);case Hn.Keyframes:return t.visitKeyframes(i,e);case Hn.Style:return t.visitStyle(i,e);case Hn.Reference:return t.visitReference(i,e);case Hn.AnimateChild:return t.visitAnimateChild(i,e);case Hn.AnimateRef:return t.visitAnimateRef(i,e);case Hn.Query:return t.visitQuery(i,e);case Hn.Stagger:return t.visitStagger(i,e);default:throw Yne(i.type)}}function W1(t,i){return window.getComputedStyle(t)[i]}var GI=(()=>{class t{validateStyleProperty(e){return cB(e)}containsElement(e,n){return SI(e,n)}getParentElement(e){return $1(e)}query(e,n,o){return wI(e,n,o)}computeStyle(e,n,o){return o||""}animate(e,n,o,r,a,c=[],m){return new Hc(o,r)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})(),ju=class{static NOOP=new GI},$u=class{};var aie=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]),K1=class extends $u{normalizePropertyName(i,e){return G1(i)}normalizeStyleValue(i,e,n,o){let r="",a=n.toString().trim();if(aie.has(e)&&n!==0&&n!=="0")if(typeof n=="number")r="px";else{let c=n.match(/^[+-]?[\d\.]+([a-z]*)$/);c&&c[1].length==0&&o.push(B8(i,n))}return a+r}};var Z1="*";function sie(t,i){let e=[];return typeof t=="string"?t.split(/\s*,\s*/).forEach(n=>lie(n,e,i)):e.push(t),e}function lie(t,i,e){if(t[0]==":"){let m=cie(t,e);if(typeof m=="function"){i.push(m);return}t=m}let n=t.match(/^(\*|[-\w]+)\s*(<?[=-]>)\s*(\*|[-\w]+)$/);if(n==null||n.length<4)return e.push(Y8(t)),i;let o=n[1],r=n[2],a=n[3];i.push(hB(o,a));let c=o==Z1&&a==Z1;r[0]=="<"&&!c&&i.push(hB(a,o))}function cie(t,i){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(e,n)=>parseFloat(n)>parseFloat(e);case":decrement":return(e,n)=>parseFloat(n)<parseFloat(e);default:return i.push(K8(t)),"* => *"}}var q1=new Set(["true","1"]),X1=new Set(["false","0"]);function hB(t,i){let e=q1.has(t)||X1.has(t),n=q1.has(i)||X1.has(i);return(o,r)=>{let a=t==Z1||t==o,c=i==Z1||i==r;return!a&&e&&typeof o=="boolean"&&(a=o?q1.has(t):X1.has(t)),!c&&n&&typeof r=="boolean"&&(c=r?q1.has(i):X1.has(i)),a&&c}}var wB=":self",die=new RegExp(`s*${wB}s*,?`,"g");function MB(t,i,e,n){return new NI(t).build(i,e,n)}var fB="",NI=class{_driver;constructor(i){this._driver=i}build(i,e,n){let o=new RI(e);return this._resetContextStyleTimingState(o),Cs(this,If(i),o)}_resetContextStyleTimingState(i){i.currentQuerySelector=fB,i.collectedStyles=new Map,i.collectedStyles.set(fB,new Map),i.currentTime=0}visitTrigger(i,e){let n=e.queryCount=0,o=e.depCount=0,r=[],a=[];return i.name.charAt(0)=="@"&&e.errors.push(V8()),i.definitions.forEach(c=>{if(this._resetContextStyleTimingState(e),c.type==Hn.State){let m=c,p=m.name;p.toString().split(/\s*,\s*/).forEach(h=>{m.name=h,r.push(this.visitState(m,e))}),m.name=p}else if(c.type==Hn.Transition){let m=this.visitTransition(c,e);n+=m.queryCount,o+=m.depCount,a.push(m)}else e.errors.push(z8())}),{type:Hn.Trigger,name:i.name,states:r,transitions:a,queryCount:n,depCount:o,options:null}}visitState(i,e){let n=this.visitStyle(i.styles,e),o=i.options&&i.options.params||null;if(n.containsDynamicStyles){let r=new Set,a=o||{};n.styles.forEach(c=>{c instanceof Map&&c.forEach(m=>{EI(m).forEach(p=>{a.hasOwnProperty(p)||r.add(p)})})}),r.size&&e.errors.push(j8(i.name,[...r.values()]))}return{type:Hn.State,name:i.name,style:n,options:o?{params:o}:null}}visitTransition(i,e){e.queryCount=0,e.depCount=0;let n=Cs(this,If(i.animation),e),o=sie(i.expr,e.errors);return{type:Hn.Transition,matchers:o,animation:n,queryCount:e.queryCount,depCount:e.depCount,options:zu(i.options)}}visitSequence(i,e){return{type:Hn.Sequence,steps:i.steps.map(n=>Cs(this,n,e)),options:zu(i.options)}}visitGroup(i,e){let n=e.currentTime,o=0,r=i.steps.map(a=>{e.currentTime=n;let c=Cs(this,a,e);return o=Math.max(o,e.currentTime),c});return e.currentTime=o,{type:Hn.Group,steps:r,options:zu(i.options)}}visitAnimate(i,e){let n=hie(i.timings,e.errors);e.currentAnimateTimings=n;let o,r=i.styles?i.styles:Bu({});if(r.type==Hn.Keyframes)o=this.visitKeyframes(r,e);else{let a=i.styles,c=!1;if(!a){c=!0;let p={};n.easing&&(p.easing=n.easing),a=Bu(p)}e.currentTime+=n.duration+n.delay;let m=this.visitStyle(a,e);m.isEmptyStep=c,o=m}return e.currentAnimateTimings=null,{type:Hn.Animate,timings:n,style:o,options:null}}visitStyle(i,e){let n=this._makeStyleAst(i,e);return this._validateStyleAst(n,e),n}_makeStyleAst(i,e){let n=[],o=Array.isArray(i.styles)?i.styles:[i.styles];for(let c of o)typeof c=="string"?c===bl?n.push(c):e.errors.push($8(c)):n.push(new Map(Object.entries(c)));let r=!1,a=null;return n.forEach(c=>{if(c instanceof Map&&(c.has("easing")&&(a=c.get("easing"),c.delete("easing")),!r)){for(let m of c.values())if(m.toString().indexOf(MI)>=0){r=!0;break}}}),{type:Hn.Style,styles:n,easing:a,offset:i.offset,containsDynamicStyles:r,options:null}}_validateStyleAst(i,e){let n=e.currentAnimateTimings,o=e.currentTime,r=e.currentTime;n&&r>0&&(r-=n.duration+n.delay),i.styles.forEach(a=>{typeof a!="string"&&a.forEach((c,m)=>{let p=e.collectedStyles.get(e.currentQuerySelector),h=p.get(m),g=!0;h&&(r!=o&&r>=h.startTime&&o<=h.endTime&&(e.errors.push(H8(m,h.startTime,h.endTime,r,o)),g=!1),r=h.startTime),g&&p.set(m,{startTime:r,endTime:o}),e.options&&mB(c,e.options,e.errors)})})}visitKeyframes(i,e){let n={type:Hn.Keyframes,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push(U8()),n;let o=1,r=0,a=[],c=!1,m=!1,p=0,h=i.steps.map(y=>{let k=this._makeStyleAst(y,e),I=k.offset!=null?k.offset:uie(k.styles),E=0;return I!=null&&(r++,E=k.offset=I),m=m||E<0||E>1,c=c||E<p,p=E,a.push(E),k});m&&e.errors.push(G8()),c&&e.errors.push(W8());let g=i.steps.length,M=0;r>0&&r<g?e.errors.push(q8()):r==0&&(M=o/(g-1));let C=g-1,_=e.currentTime,w=e.currentAnimateTimings,S=w.duration;return h.forEach((y,k)=>{let I=M>0?k==C?1:M*k:a[k],E=I*S;e.currentTime=_+w.delay+E,w.duration=E,this._validateStyleAst(y,e),y.offset=I,n.styles.push(y)}),n}visitReference(i,e){return{type:Hn.Reference,animation:Cs(this,If(i.animation),e),options:zu(i.options)}}visitAnimateChild(i,e){return e.depCount++,{type:Hn.AnimateChild,options:zu(i.options)}}visitAnimateRef(i,e){return{type:Hn.AnimateRef,animation:this.visitReference(i.animation,e),options:zu(i.options)}}visitQuery(i,e){let n=e.currentQuerySelector,o=i.options||{};e.queryCount++,e.currentQuery=i;let[r,a]=mie(i.selector);e.currentQuerySelector=n.length?n+" "+r:r,bs(e.collectedStyles,e.currentQuerySelector,new Map);let c=Cs(this,If(i.animation),e);return e.currentQuery=null,e.currentQuerySelector=n,{type:Hn.Query,selector:r,limit:o.limit||0,optional:!!o.optional,includeSelf:a,animation:c,originalSelector:i.selector,options:zu(i.options)}}visitStagger(i,e){e.currentQuery||e.errors.push(X8());let n=i.timings==="full"?{duration:0,delay:0,easing:"full"}:kv(i.timings,e.errors,!0);return{type:Hn.Stagger,animation:Cs(this,If(i.animation),e),timings:n,options:null}}};function mie(t){let i=!!t.split(/\s*,\s*/).find(e=>e==wB);return i&&(t=t.replace(die,"")),t=t.replace(/@\*/g,Mv).replace(/@\w+/g,e=>Mv+"-"+e.slice(1)).replace(/:animating/g,U1),[t,i]}function pie(t){return t?H({},t):null}var RI=class{errors;queryCount=0;depCount=0;currentTransition=null;currentQuery=null;currentQuerySelector=null;currentAnimateTimings=null;currentTime=0;collectedStyles=new Map;options=null;unsupportedCSSPropertiesFound=new Set;constructor(i){this.errors=i}};function uie(t){if(typeof t=="string")return null;let i=null;if(Array.isArray(t))t.forEach(e=>{if(e instanceof Map&&e.has("offset")){let n=e;i=parseFloat(n.get("offset")),n.delete("offset")}});else if(t instanceof Map&&t.has("offset")){let e=t;i=parseFloat(e.get("offset")),e.delete("offset")}return i}function hie(t,i){if(t.hasOwnProperty("duration"))return t;if(typeof t=="number"){let r=kv(t,i).duration;return DI(r,0,"")}let e=t;if(e.split(/\s+/).some(r=>r.charAt(0)=="{"&&r.charAt(1)=="{")){let r=DI(0,0,"");return r.dynamic=!0,r.strValue=e,r}let o=kv(e,i);return DI(o.duration,o.delay,o.easing)}function zu(t){return t?(t=H({},t),t.params&&(t.params=pie(t.params))):t={},t}function DI(t,i,e){return{duration:t,delay:i,easing:e}}function WI(t,i,e,n,o,r,a=null,c=!1){return{type:1,element:t,keyframes:i,preStyleProps:e,postStyleProps:n,duration:o,delay:r,totalTime:o+r,easing:a,subTimeline:c}}var Ev=class{_map=new Map;get(i){return this._map.get(i)||[]}append(i,e){let n=this._map.get(i);n||this._map.set(i,n=[]),n.push(...e)}has(i){return this._map.has(i)}clear(){this._map.clear()}},fie=1,gie=":enter",_ie=new RegExp(gie,"g"),vie=":leave",bie=new RegExp(vie,"g");function kB(t,i,e,n,o,r=new Map,a=new Map,c,m,p=[]){return new FI().buildKeyframes(t,i,e,n,o,r,a,c,m,p)}var FI=class{buildKeyframes(i,e,n,o,r,a,c,m,p,h=[]){p=p||new Ev;let g=new LI(i,e,p,o,r,h,[]);g.options=m;let M=m.delay?Uc(m.delay):0;g.currentTimeline.delayNextStep(M),g.currentTimeline.setStyles([a],null,g.errors,m),Cs(this,n,g);let C=g.timelines.filter(_=>_.containsAnimation());if(C.length&&c.size){let _;for(let w=C.length-1;w>=0;w--){let S=C[w];if(S.element===e){_=S;break}}_&&!_.allowOnlyTimelineStyles()&&_.setStyles([c],null,g.errors,m)}return C.length?C.map(_=>_.buildKeyframes()):[WI(e,[],[],[],0,M,"",!1)]}visitTrigger(i,e){}visitState(i,e){}visitTransition(i,e){}visitAnimateChild(i,e){let n=e.subInstructions.get(e.element);if(n){let o=e.createSubContext(i.options),r=e.currentTimeline.currentTime,a=this._visitSubInstructions(n,o,o.options);r!=a&&e.transformIntoNewTimeline(a)}e.previousNode=i}visitAnimateRef(i,e){let n=e.createSubContext(i.options);n.transformIntoNewTimeline(),this._applyAnimationRefDelays([i.options,i.animation.options],e,n),this.visitReference(i.animation,n),e.transformIntoNewTimeline(n.currentTimeline.currentTime),e.previousNode=i}_applyAnimationRefDelays(i,e,n){for(let o of i){let r=o?.delay;if(r){let a=typeof r=="number"?r:Uc(Af(r,o?.params??{},e.errors));n.delayNextStep(a)}}}_visitSubInstructions(i,e,n){let r=e.currentTimeline.currentTime,a=n.duration!=null?Uc(n.duration):null,c=n.delay!=null?Uc(n.delay):null;return a!==0&&i.forEach(m=>{let p=e.appendInstructionToTimeline(m,a,c);r=Math.max(r,p.duration+p.delay)}),r}visitReference(i,e){e.updateOptions(i.options,!0),Cs(this,i.animation,e),e.previousNode=i}visitSequence(i,e){let n=e.subContextCount,o=e,r=i.options;if(r&&(r.params||r.delay)&&(o=e.createSubContext(r),o.transformIntoNewTimeline(),r.delay!=null)){o.previousNode.type==Hn.Style&&(o.currentTimeline.snapshotCurrentStyles(),o.previousNode=J1);let a=Uc(r.delay);o.delayNextStep(a)}i.steps.length&&(i.steps.forEach(a=>Cs(this,a,o)),o.currentTimeline.applyStylesToKeyframe(),o.subContextCount>n&&o.transformIntoNewTimeline()),e.previousNode=i}visitGroup(i,e){let n=[],o=e.currentTimeline.currentTime,r=i.options&&i.options.delay?Uc(i.options.delay):0;i.steps.forEach(a=>{let c=e.createSubContext(i.options);r&&c.delayNextStep(r),Cs(this,a,c),o=Math.max(o,c.currentTimeline.currentTime),n.push(c.currentTimeline)}),n.forEach(a=>e.currentTimeline.mergeTimelineCollectedStyles(a)),e.transformIntoNewTimeline(o),e.previousNode=i}_visitTiming(i,e){if(i.dynamic){let n=i.strValue,o=e.params?Af(n,e.params,e.errors):n;return kv(o,e.errors)}else return{duration:i.duration,delay:i.delay,easing:i.easing}}visitAnimate(i,e){let n=e.currentAnimateTimings=this._visitTiming(i.timings,e),o=e.currentTimeline;n.delay&&(e.incrementTime(n.delay),o.snapshotCurrentStyles());let r=i.style;r.type==Hn.Keyframes?this.visitKeyframes(r,e):(e.incrementTime(n.duration),this.visitStyle(r,e),o.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=i}visitStyle(i,e){let n=e.currentTimeline,o=e.currentAnimateTimings;!o&&n.hasCurrentStyleProperties()&&n.forwardFrame();let r=o&&o.easing||i.easing;i.isEmptyStep?n.applyEmptyStep(r):n.setStyles(i.styles,r,e.errors,e.options),e.previousNode=i}visitKeyframes(i,e){let n=e.currentAnimateTimings,o=e.currentTimeline.duration,r=n.duration,c=e.createSubContext().currentTimeline;c.easing=n.easing,i.styles.forEach(m=>{let p=m.offset||0;c.forwardTime(p*r),c.setStyles(m.styles,m.easing,e.errors,e.options),c.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(c),e.transformIntoNewTimeline(o+r),e.previousNode=i}visitQuery(i,e){let n=e.currentTimeline.currentTime,o=i.options||{},r=o.delay?Uc(o.delay):0;r&&(e.previousNode.type===Hn.Style||n==0&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=J1);let a=n,c=e.invokeQuery(i.selector,i.originalSelector,i.limit,i.includeSelf,!!o.optional,e.errors);e.currentQueryTotal=c.length;let m=null;c.forEach((p,h)=>{e.currentQueryIndex=h;let g=e.createSubContext(i.options,p);r&&g.delayNextStep(r),p===e.element&&(m=g.currentTimeline),Cs(this,i.animation,g),g.currentTimeline.applyStylesToKeyframe();let M=g.currentTimeline.currentTime;a=Math.max(a,M)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(a),m&&(e.currentTimeline.mergeTimelineCollectedStyles(m),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=i}visitStagger(i,e){let n=e.parentContext,o=e.currentTimeline,r=i.timings,a=Math.abs(r.duration),c=a*(e.currentQueryTotal-1),m=a*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":m=c-m;break;case"full":m=n.currentStaggerTime;break}let h=e.currentTimeline;m&&h.delayNextStep(m);let g=h.currentTime;Cs(this,i.animation,e),e.previousNode=i,n.currentStaggerTime=o.currentTime-g+(o.startTime-n.currentTimeline.startTime)}},J1={},LI=class t{_driver;element;subInstructions;_enterClassName;_leaveClassName;errors;timelines;parentContext=null;currentTimeline;currentAnimateTimings=null;previousNode=J1;subContextCount=0;options={};currentQueryIndex=0;currentQueryTotal=0;currentStaggerTime=0;constructor(i,e,n,o,r,a,c,m){this._driver=i,this.element=e,this.subInstructions=n,this._enterClassName=o,this._leaveClassName=r,this.errors=a,this.timelines=c,this.currentTimeline=m||new ey(this._driver,e,0),c.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(i,e){if(!i)return;let n=i,o=this.options;n.duration!=null&&(o.duration=Uc(n.duration)),n.delay!=null&&(o.delay=Uc(n.delay));let r=n.params;if(r){let a=o.params;a||(a=this.options.params={}),Object.keys(r).forEach(c=>{(!e||!a.hasOwnProperty(c))&&(a[c]=Af(r[c],a,this.errors))})}}_copyOptions(){let i={};if(this.options){let e=this.options.params;if(e){let n=i.params={};Object.keys(e).forEach(o=>{n[o]=e[o]})}}return i}createSubContext(i=null,e,n){let o=e||this.element,r=new t(this._driver,o,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(o,n||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(i),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(i){return this.previousNode=J1,this.currentTimeline=this.currentTimeline.fork(this.element,i),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(i,e,n){let o={duration:e??i.duration,delay:this.currentTimeline.currentTime+(n??0)+i.delay,easing:""},r=new BI(this._driver,i.element,i.keyframes,i.preStyleProps,i.postStyleProps,o,i.stretchStartingKeyframe);return this.timelines.push(r),o}incrementTime(i){this.currentTimeline.forwardTime(this.currentTimeline.duration+i)}delayNextStep(i){i>0&&this.currentTimeline.delayNextStep(i)}invokeQuery(i,e,n,o,r,a){let c=[];if(o&&c.push(this.element),i.length>0){i=i.replace(_ie,"."+this._enterClassName),i=i.replace(bie,"."+this._leaveClassName);let m=n!=1,p=this._driver.query(this.element,i,m);n!==0&&(p=n<0?p.slice(p.length+n,p.length):p.slice(0,n)),c.push(...p)}return!r&&c.length==0&&a.push(Q8(e)),c}},ey=class t{_driver;element;startTime;_elementTimelineStylesLookup;duration=0;easing=null;_previousKeyframe=new Map;_currentKeyframe=new Map;_keyframes=new Map;_styleSummary=new Map;_localTimelineStyles=new Map;_globalTimelineStyles;_pendingStyles=new Map;_backFill=new Map;_currentEmptyStepKeyframe=null;constructor(i,e,n,o){this._driver=i,this.element=e,this.startTime=n,this._elementTimelineStylesLookup=o,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(i){let e=this._keyframes.size===1&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+i),e&&this.snapshotCurrentStyles()):this.startTime+=i}fork(i,e){return this.applyStylesToKeyframe(),new t(this._driver,i,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=fie,this._loadKeyframe()}forwardTime(i){this.applyStylesToKeyframe(),this.duration=i,this._loadKeyframe()}_updateStyle(i,e){this._localTimelineStyles.set(i,e),this._globalTimelineStyles.set(i,e),this._styleSummary.set(i,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(i){i&&this._previousKeyframe.set("easing",i);for(let[e,n]of this._globalTimelineStyles)this._backFill.set(e,n||bl),this._currentKeyframe.set(e,bl);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(i,e,n,o){e&&this._previousKeyframe.set("easing",e);let r=o&&o.params||{},a=Cie(i,this._globalTimelineStyles);for(let[c,m]of a){let p=Af(m,r,n);this._pendingStyles.set(c,p),this._localTimelineStyles.has(c)||this._backFill.set(c,this._globalTimelineStyles.get(c)??bl),this._updateStyle(c,p)}}applyStylesToKeyframe(){this._pendingStyles.size!=0&&(this._pendingStyles.forEach((i,e)=>{this._currentKeyframe.set(e,i)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((i,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,i)}))}snapshotCurrentStyles(){for(let[i,e]of this._localTimelineStyles)this._pendingStyles.set(i,e),this._updateStyle(i,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){let i=[];for(let e in this._currentKeyframe)i.push(e);return i}mergeTimelineCollectedStyles(i){i._styleSummary.forEach((e,n)=>{let o=this._styleSummary.get(n);(!o||e.time>o.time)&&this._updateStyle(n,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();let i=new Set,e=new Set,n=this._keyframes.size===1&&this.duration===0,o=[];this._keyframes.forEach((c,m)=>{let p=new Map([...this._backFill,...c]);p.forEach((h,g)=>{h===Pf?i.add(g):h===bl&&e.add(g)}),n||p.set("offset",m/this.duration),o.push(p)});let r=[...i.values()],a=[...e.values()];if(n){let c=o[0],m=new Map(c);c.set("offset",0),m.set("offset",1),o=[c,m]}return WI(this.element,o,r,a,this.duration,this.startTime,this.easing,!1)}},BI=class extends ey{keyframes;preStyleProps;postStyleProps;_stretchStartingKeyframe;timings;constructor(i,e,n,o,r,a,c=!1){super(i,e,a.delay),this.keyframes=n,this.preStyleProps=o,this.postStyleProps=r,this._stretchStartingKeyframe=c,this.timings={duration:a.duration,delay:a.delay,easing:a.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let i=this.keyframes,{delay:e,duration:n,easing:o}=this.timings;if(this._stretchStartingKeyframe&&e){let r=[],a=n+e,c=e/a,m=new Map(i[0]);m.set("offset",0),r.push(m);let p=new Map(i[0]);p.set("offset",gB(c)),r.push(p);let h=i.length-1;for(let g=1;g<=h;g++){let M=new Map(i[g]),C=M.get("offset"),_=e+C*n;M.set("offset",gB(_/a)),r.push(M)}n=a,e=0,o="",i=r}return WI(this.element,i,this.preStyleProps,this.postStyleProps,n,e,o,!0)}};function gB(t,i=3){let e=Math.pow(10,i-1);return Math.round(t*e)/e}function Cie(t,i){let e=new Map,n;return t.forEach(o=>{if(o==="*"){n??=i.keys();for(let r of n)e.set(r,bl)}else for(let[r,a]of o)e.set(r,a)}),e}function _B(t,i,e,n,o,r,a,c,m,p,h,g,M){return{type:0,element:t,triggerName:i,isRemovalTransition:o,fromState:e,fromStyles:r,toState:n,toStyles:a,timelines:c,queriedElements:m,preStyleProps:p,postStyleProps:h,totalTime:g,errors:M}}var PI={},ty=class{_triggerName;ast;_stateStyles;constructor(i,e,n){this._triggerName=i,this.ast=e,this._stateStyles=n}match(i,e,n,o){return xie(this.ast.matchers,i,e,n,o)}buildStyles(i,e,n){let o=this._stateStyles.get("*");return i!==void 0&&(o=this._stateStyles.get(i?.toString())||o),o?o.buildStyles(e,n):new Map}build(i,e,n,o,r,a,c,m,p,h){let g=[],M=this.ast.options&&this.ast.options.params||PI,C=c&&c.params||PI,_=this.buildStyles(n,C,g),w=m&&m.params||PI,S=this.buildStyles(o,w,g),y=new Set,k=new Map,I=new Map,E=o==="void",N={params:TB(w,M),delay:this.ast.options?.delay},T=h?[]:kB(i,e,this.ast.animation,r,a,_,S,N,p,g),R=0;return T.forEach(W=>{R=Math.max(W.duration+W.delay,R)}),g.length?_B(e,this._triggerName,n,o,E,_,S,[],[],k,I,R,g):(T.forEach(W=>{let pe=W.element,_e=bs(k,pe,new Set);W.preStyleProps.forEach(ue=>_e.add(ue));let G=bs(I,pe,new Set);W.postStyleProps.forEach(ue=>G.add(ue)),pe!==e&&y.add(pe)}),_B(e,this._triggerName,n,o,E,_,S,T,[...y.values()],k,I,R))}};function xie(t,i,e,n,o){return t.some(r=>r(i,e,n,o))}function TB(t,i){let e=H({},i);return Object.entries(t).forEach(([n,o])=>{o!=null&&(e[n]=o)}),e}var VI=class{styles;defaultParams;normalizer;constructor(i,e,n){this.styles=i,this.defaultParams=e,this.normalizer=n}buildStyles(i,e){let n=new Map,o=TB(i,this.defaultParams);return this.styles.styles.forEach(r=>{typeof r!="string"&&r.forEach((a,c)=>{a&&(a=Af(a,o,e));let m=this.normalizer.normalizePropertyName(c,e);a=this.normalizer.normalizeStyleValue(c,m,a,e),n.set(c,a)})}),n}};function yie(t,i,e){return new zI(t,i,e)}var zI=class{name;ast;_normalizer;transitionFactories=[];fallbackTransition;states=new Map;constructor(i,e,n){this.name=i,this.ast=e,this._normalizer=n,e.states.forEach(o=>{let r=o.options&&o.options.params||{};this.states.set(o.name,new VI(o.style,r,n))}),vB(this.states,"true","1"),vB(this.states,"false","0"),e.transitions.forEach(o=>{this.transitionFactories.push(new ty(i,o,this.states))}),this.fallbackTransition=Sie(i,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(i,e,n,o){return this.transitionFactories.find(a=>a.match(i,e,n,o))||null}matchStyles(i,e,n){return this.fallbackTransition.buildStyles(i,e,n)}};function Sie(t,i,e){let n=[(a,c)=>!0],o={type:Hn.Sequence,steps:[],options:null},r={type:Hn.Transition,animation:o,matchers:n,options:null,queryCount:0,depCount:0};return new ty(t,r,i)}function vB(t,i,e){t.has(i)?t.has(e)||t.set(e,t.get(i)):t.has(e)&&t.set(i,t.get(e))}var wie=new Ev,jI=class{bodyNode;_driver;_normalizer;_animations=new Map;_playersById=new Map;players=[];constructor(i,e,n){this.bodyNode=i,this._driver=e,this._normalizer=n}register(i,e){let n=[],o=[],r=MB(this._driver,e,n,o);if(n.length)throw J8(n);this._animations.set(i,r)}_buildPlayer(i,e,n){let o=i.element,r=xI(this._normalizer,i.keyframes,e,n);return this._driver.animate(o,r,i.duration,i.delay,i.easing,[],!0)}create(i,e,n={}){let o=[],r=this._animations.get(i),a,c=new Map;if(r?(a=kB(this._driver,e,r,kI,H1,new Map,new Map,n,wie,o),a.forEach(h=>{let g=bs(c,h.element,new Map);h.postStyleProps.forEach(M=>g.set(M,null))})):(o.push(eB()),a=[]),o.length)throw tB(o);c.forEach((h,g)=>{h.forEach((M,C)=>{h.set(C,this._driver.computeStyle(g,C,bl))})});let m=a.map(h=>{let g=c.get(h.element);return this._buildPlayer(h,new Map,g)}),p=Fd(m);return this._playersById.set(i,p),p.onDestroy(()=>this.destroy(i)),this.players.push(p),p}destroy(i){let e=this._getPlayer(i);e.destroy(),this._playersById.delete(i);let n=this.players.indexOf(e);n>=0&&this.players.splice(n,1)}_getPlayer(i){let e=this._playersById.get(i);if(!e)throw nB(i);return e}listen(i,e,n,o){let r=j1(e,"","","");return z1(this._getPlayer(i),n,r,o),()=>{}}command(i,e,n,o){if(n=="register"){this.register(i,o[0]);return}if(n=="create"){let a=o[0]||{};this.create(i,e,a);return}let r=this._getPlayer(i);switch(n){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(o[0]));break;case"destroy":this.destroy(i);break}}},bB="ng-animate-queued",Mie=".ng-animate-queued",II="ng-animate-disabled",kie=".ng-animate-disabled",Tie="ng-star-inserted",Eie=".ng-star-inserted",Die=[],EB={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},Pie={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},sc="__ng_removed",Dv=class{namespaceId;value;options;get params(){return this.options.params}constructor(i,e=""){this.namespaceId=e;let n=i&&i.hasOwnProperty("value"),o=n?i.value:i;if(this.value=Aie(o),n){let r=i,{value:a}=r,c=d5(r,["value"]);this.options=c}else this.options={};this.options.params||(this.options.params={})}absorbOptions(i){let e=i.params;if(e){let n=this.options.params;Object.keys(e).forEach(o=>{n[o]==null&&(n[o]=e[o])})}}},Tv="void",AI=new Dv(Tv),$I=class{id;hostElement;_engine;players=[];_triggers=new Map;_queue=[];_elementListeners=new Map;_hostClassName;constructor(i,e,n){this.id=i,this.hostElement=e,this._engine=n,this._hostClassName="ng-tns-"+i,Cl(e,this._hostClassName)}listen(i,e,n,o){if(!this._triggers.has(e))throw iB(n,e);if(n==null||n.length==0)throw oB(e);if(!Oie(n))throw rB(n,e);let r=bs(this._elementListeners,i,[]),a={name:e,phase:n,callback:o};r.push(a);let c=bs(this._engine.statesByElement,i,new Map);return c.has(e)||(Cl(i,wv),Cl(i,wv+"-"+e),c.set(e,AI)),()=>{this._engine.afterFlush(()=>{let m=r.indexOf(a);m>=0&&r.splice(m,1),this._triggers.has(e)||c.delete(e)})}}register(i,e){return this._triggers.has(i)?!1:(this._triggers.set(i,e),!0)}_getTrigger(i){let e=this._triggers.get(i);if(!e)throw aB(i);return e}trigger(i,e,n,o=!0){let r=this._getTrigger(e),a=new Pv(this.id,e,i),c=this._engine.statesByElement.get(i);c||(Cl(i,wv),Cl(i,wv+"-"+e),this._engine.statesByElement.set(i,c=new Map));let m=c.get(e),p=new Dv(n,this.id);if(!(n&&n.hasOwnProperty("value"))&&m&&p.absorbOptions(m.options),c.set(e,p),m||(m=AI),!(p.value===Tv)&&m.value===p.value){if(!Fie(m.params,p.params)){let w=[],S=r.matchStyles(m.value,m.params,w),y=r.matchStyles(p.value,p.params,w);w.length?this._engine.reportError(w):this._engine.afterFlush(()=>{Xm(i,S),ac(i,y)})}return}let M=bs(this._engine.playersByElement,i,[]);M.forEach(w=>{w.namespaceId==this.id&&w.triggerName==e&&w.queued&&w.destroy()});let C=r.matchTransition(m.value,p.value,i,p.params),_=!1;if(!C){if(!o)return;C=r.fallbackTransition,_=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:i,triggerName:e,transition:C,fromState:m,toState:p,player:a,isFallbackTransition:_}),_||(Cl(i,bB),a.onStart(()=>{Of(i,bB)})),a.onDone(()=>{let w=this.players.indexOf(a);w>=0&&this.players.splice(w,1);let S=this._engine.playersByElement.get(i);if(S){let y=S.indexOf(a);y>=0&&S.splice(y,1)}}),this.players.push(a),M.push(a),a}deregister(i){this._triggers.delete(i),this._engine.statesByElement.forEach(e=>e.delete(i)),this._elementListeners.forEach((e,n)=>{this._elementListeners.set(n,e.filter(o=>o.name!=i))})}clearElementCache(i){this._engine.statesByElement.delete(i),this._elementListeners.delete(i);let e=this._engine.playersByElement.get(i);e&&(e.forEach(n=>n.destroy()),this._engine.playersByElement.delete(i))}_signalRemovalForInnerTriggers(i,e){let n=this._engine.driver.query(i,Mv,!0);n.forEach(o=>{if(o[sc])return;let r=this._engine.fetchNamespacesByElement(o);r.size?r.forEach(a=>a.triggerLeaveAnimation(o,e,!1,!0)):this.clearElementCache(o)}),this._engine.afterFlushAnimationsDone(()=>n.forEach(o=>this.clearElementCache(o)))}triggerLeaveAnimation(i,e,n,o){let r=this._engine.statesByElement.get(i),a=new Map;if(r){let c=[];if(r.forEach((m,p)=>{if(a.set(p,m.value),this._triggers.has(p)){let h=this.trigger(i,p,Tv,o);h&&c.push(h)}}),c.length)return this._engine.markElementAsRemoved(this.id,i,!0,e,a),n&&Fd(c).onDone(()=>this._engine.processLeaveNode(i)),!0}return!1}prepareLeaveAnimationListeners(i){let e=this._elementListeners.get(i),n=this._engine.statesByElement.get(i);if(e&&n){let o=new Set;e.forEach(r=>{let a=r.name;if(o.has(a))return;o.add(a);let m=this._triggers.get(a).fallbackTransition,p=n.get(a)||AI,h=new Dv(Tv),g=new Pv(this.id,a,i);this._engine.totalQueuedPlayers++,this._queue.push({element:i,triggerName:a,transition:m,fromState:p,toState:h,player:g,isFallbackTransition:!0})})}}removeNode(i,e){let n=this._engine;if(i.childElementCount&&this._signalRemovalForInnerTriggers(i,e),this.triggerLeaveAnimation(i,e,!0))return;let o=!1;if(n.totalAnimations){let r=n.players.length?n.playersByQueriedElement.get(i):[];if(r&&r.length)o=!0;else{let a=i;for(;a=a.parentNode;)if(n.statesByElement.get(a)){o=!0;break}}}if(this.prepareLeaveAnimationListeners(i),o)n.markElementAsRemoved(this.id,i,!1,e);else{let r=i[sc];(!r||r===EB)&&(n.afterFlush(()=>this.clearElementCache(i)),n.destroyInnerAnimations(i),n._onRemovalComplete(i,e))}}insertNode(i,e){Cl(i,this._hostClassName)}drainQueuedTransitions(i){let e=[];return this._queue.forEach(n=>{let o=n.player;if(o.destroyed)return;let r=n.element,a=this._elementListeners.get(r);a&&a.forEach(c=>{if(c.name==n.triggerName){let m=j1(r,n.triggerName,n.fromState.value,n.toState.value);m._data=i,z1(n.player,c.phase,m,c.callback)}}),o.markedForDestroy?this._engine.afterFlush(()=>{o.destroy()}):e.push(n)}),this._queue=[],e.sort((n,o)=>{let r=n.transition.ast.depCount,a=o.transition.ast.depCount;return r==0||a==0?r-a:this._engine.driver.containsElement(n.element,o.element)?1:-1})}destroy(i){this.players.forEach(e=>e.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,i)}},HI=class{bodyNode;driver;_normalizer;players=[];newHostElements=new Map;playersByElement=new Map;playersByQueriedElement=new Map;statesByElement=new Map;disabledNodes=new Set;totalAnimations=0;totalQueuedPlayers=0;_namespaceLookup={};_namespaceList=[];_flushFns=[];_whenQuietFns=[];namespacesByHostElement=new Map;collectedEnterElements=[];collectedLeaveElements=[];onRemovalComplete=(i,e)=>{};_onRemovalComplete(i,e){this.onRemovalComplete(i,e)}constructor(i,e,n){this.bodyNode=i,this.driver=e,this._normalizer=n}get queuedPlayers(){let i=[];return this._namespaceList.forEach(e=>{e.players.forEach(n=>{n.queued&&i.push(n)})}),i}createNamespace(i,e){let n=new $I(i,e,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,e)?this._balanceNamespaceList(n,e):(this.newHostElements.set(e,n),this.collectEnterElement(e)),this._namespaceLookup[i]=n}_balanceNamespaceList(i,e){let n=this._namespaceList,o=this.namespacesByHostElement;if(n.length-1>=0){let a=!1,c=this.driver.getParentElement(e);for(;c;){let m=o.get(c);if(m){let p=n.indexOf(m);n.splice(p+1,0,i),a=!0;break}c=this.driver.getParentElement(c)}a||n.unshift(i)}else n.push(i);return o.set(e,i),i}register(i,e){let n=this._namespaceLookup[i];return n||(n=this.createNamespace(i,e)),n}registerTrigger(i,e,n){let o=this._namespaceLookup[i];o&&o.register(e,n)&&this.totalAnimations++}destroy(i,e){i&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{let n=this._fetchNamespace(i);this.namespacesByHostElement.delete(n.hostElement);let o=this._namespaceList.indexOf(n);o>=0&&this._namespaceList.splice(o,1),n.destroy(e),delete this._namespaceLookup[i]}))}_fetchNamespace(i){return this._namespaceLookup[i]}fetchNamespacesByElement(i){let e=new Set,n=this.statesByElement.get(i);if(n){for(let o of n.values())if(o.namespaceId){let r=this._fetchNamespace(o.namespaceId);r&&e.add(r)}}return e}trigger(i,e,n,o){if(Q1(e)){let r=this._fetchNamespace(i);if(r)return r.trigger(e,n,o),!0}return!1}insertNode(i,e,n,o){if(!Q1(e))return;let r=e[sc];if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;let a=this.collectedLeaveElements.indexOf(e);a>=0&&this.collectedLeaveElements.splice(a,1)}if(i){let a=this._fetchNamespace(i);a&&a.insertNode(e,n)}o&&this.collectEnterElement(e)}collectEnterElement(i){this.collectedEnterElements.push(i)}markElementAsDisabled(i,e){e?this.disabledNodes.has(i)||(this.disabledNodes.add(i),Cl(i,II)):this.disabledNodes.has(i)&&(this.disabledNodes.delete(i),Of(i,II))}removeNode(i,e,n){if(Q1(e)){let o=i?this._fetchNamespace(i):null;o?o.removeNode(e,n):this.markElementAsRemoved(i,e,!1,n);let r=this.namespacesByHostElement.get(e);r&&r.id!==i&&r.removeNode(e,n)}else this._onRemovalComplete(e,n)}markElementAsRemoved(i,e,n,o,r){this.collectedLeaveElements.push(e),e[sc]={namespaceId:i,setForRemoval:o,hasAnimation:n,removedBeforeQueried:!1,previousTriggersValues:r}}listen(i,e,n,o,r){return Q1(e)?this._fetchNamespace(i).listen(e,n,o,r):()=>{}}_buildInstruction(i,e,n,o,r){return i.transition.build(this.driver,i.element,i.fromState.value,i.toState.value,n,o,i.fromState.options,i.toState.options,e,r)}destroyInnerAnimations(i){let e=this.driver.query(i,Mv,!0);e.forEach(n=>this.destroyActiveAnimationsForElement(n)),this.playersByQueriedElement.size!=0&&(e=this.driver.query(i,U1,!0),e.forEach(n=>this.finishActiveQueriedAnimationOnElement(n)))}destroyActiveAnimationsForElement(i){let e=this.playersByElement.get(i);e&&e.forEach(n=>{n.queued?n.markedForDestroy=!0:n.destroy()})}finishActiveQueriedAnimationOnElement(i){let e=this.playersByQueriedElement.get(i);e&&e.forEach(n=>n.finish())}whenRenderingDone(){return new Promise(i=>{if(this.players.length)return Fd(this.players).onDone(()=>i());i()})}processLeaveNode(i){let e=i[sc];if(e&&e.setForRemoval){if(i[sc]=EB,e.namespaceId){this.destroyInnerAnimations(i);let n=this._fetchNamespace(e.namespaceId);n&&n.clearElementCache(i)}this._onRemovalComplete(i,e.setForRemoval)}i.classList?.contains(II)&&this.markElementAsDisabled(i,!1),this.driver.query(i,kie,!0).forEach(n=>{this.markElementAsDisabled(n,!1)})}flush(i=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((n,o)=>this._balanceNamespaceList(n,o)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let n=0;n<this.collectedEnterElements.length;n++){let o=this.collectedEnterElements[n];Cl(o,Tie)}if(this._namespaceList.length&&(this.totalQueuedPlayers||this.collectedLeaveElements.length)){let n=[];try{e=this._flushAnimations(n,i)}finally{for(let o=0;o<n.length;o++)n[o]()}}else for(let n=0;n<this.collectedLeaveElements.length;n++){let o=this.collectedLeaveElements[n];this.processLeaveNode(o)}if(this.totalQueuedPlayers=0,this.collectedEnterElements.length=0,this.collectedLeaveElements.length=0,this._flushFns.forEach(n=>n()),this._flushFns=[],this._whenQuietFns.length){let n=this._whenQuietFns;this._whenQuietFns=[],e.length?Fd(e).onDone(()=>{n.forEach(o=>o())}):n.forEach(o=>o())}}reportError(i){throw sB(i)}_flushAnimations(i,e){let n=new Ev,o=[],r=new Map,a=[],c=new Map,m=new Map,p=new Map,h=new Set;this.disabledNodes.forEach(de=>{h.add(de);let V=this.driver.query(de,Mie,!0);for(let Y=0;Y<V.length;Y++)h.add(V[Y])});let g=this.bodyNode,M=Array.from(this.statesByElement.keys()),C=yB(M,this.collectedEnterElements),_=new Map,w=0;C.forEach((de,V)=>{let Y=kI+w++;_.set(V,Y),de.forEach(ne=>Cl(ne,Y))});let S=[],y=new Set,k=new Set;for(let de=0;de<this.collectedLeaveElements.length;de++){let V=this.collectedLeaveElements[de],Y=V[sc];Y&&Y.setForRemoval&&(S.push(V),y.add(V),Y.hasAnimation?this.driver.query(V,Eie,!0).forEach(ne=>y.add(ne)):k.add(V))}let I=new Map,E=yB(M,Array.from(y));E.forEach((de,V)=>{let Y=H1+w++;I.set(V,Y),de.forEach(ne=>Cl(ne,Y))}),i.push(()=>{C.forEach((de,V)=>{let Y=_.get(V);de.forEach(ne=>Of(ne,Y))}),E.forEach((de,V)=>{let Y=I.get(V);de.forEach(ne=>Of(ne,Y))}),S.forEach(de=>{this.processLeaveNode(de)})});let N=[],T=[];for(let de=this._namespaceList.length-1;de>=0;de--)this._namespaceList[de].drainQueuedTransitions(e).forEach(Y=>{let ne=Y.player,ie=Y.element;if(N.push(ne),this.collectedEnterElements.length){let Oe=ie[sc];if(Oe&&Oe.setForMove){if(Oe.previousTriggersValues&&Oe.previousTriggersValues.has(Y.triggerName)){let Ke=Oe.previousTriggersValues.get(Y.triggerName),Ct=this.statesByElement.get(Y.element);if(Ct&&Ct.has(Y.triggerName)){let Rt=Ct.get(Y.triggerName);Rt.value=Ke,Ct.set(Y.triggerName,Rt)}}ne.destroy();return}}let De=!g||!this.driver.containsElement(g,ie),$e=I.get(ie),it=_.get(ie),et=this._buildInstruction(Y,n,it,$e,De);if(et.errors&&et.errors.length){T.push(et);return}if(De){ne.onStart(()=>Xm(ie,et.fromStyles)),ne.onDestroy(()=>ac(ie,et.toStyles)),o.push(ne);return}if(Y.isFallbackTransition){ne.onStart(()=>Xm(ie,et.fromStyles)),ne.onDestroy(()=>ac(ie,et.toStyles)),o.push(ne);return}let Se=[];et.timelines.forEach(Oe=>{Oe.stretchStartingKeyframe=!0,this.disabledNodes.has(Oe.element)||Se.push(Oe)}),et.timelines=Se,n.append(ie,et.timelines);let q={instruction:et,player:ne,element:ie};a.push(q),et.queriedElements.forEach(Oe=>bs(c,Oe,[]).push(ne)),et.preStyleProps.forEach((Oe,Ke)=>{if(Oe.size){let Ct=m.get(Ke);Ct||m.set(Ke,Ct=new Set),Oe.forEach((Rt,ni)=>Ct.add(ni))}}),et.postStyleProps.forEach((Oe,Ke)=>{let Ct=p.get(Ke);Ct||p.set(Ke,Ct=new Set),Oe.forEach((Rt,ni)=>Ct.add(ni))})});if(T.length){let de=[];T.forEach(V=>{de.push(lB(V.triggerName,V.errors))}),N.forEach(V=>V.destroy()),this.reportError(de)}let R=new Map,W=new Map;a.forEach(de=>{let V=de.element;n.has(V)&&(W.set(V,V),this._beforeAnimationBuild(de.player.namespaceId,de.instruction,R))}),o.forEach(de=>{let V=de.element;this._getPreviousPlayers(V,!1,de.namespaceId,de.triggerName,null).forEach(ne=>{bs(R,V,[]).push(ne),ne.destroy()})});let pe=S.filter(de=>SB(de,m,p)),_e=new Map;xB(_e,this.driver,k,p,bl).forEach(de=>{SB(de,m,p)&&pe.push(de)});let ue=new Map;C.forEach((de,V)=>{xB(ue,this.driver,new Set(de),m,Pf)}),pe.forEach(de=>{let V=_e.get(de),Y=ue.get(de);_e.set(de,new Map([...V?.entries()??[],...Y?.entries()??[]]))});let ye=[],ce=[],Ie={};a.forEach(de=>{let{element:V,player:Y,instruction:ne}=de;if(n.has(V)){if(h.has(V)){Y.onDestroy(()=>ac(V,ne.toStyles)),Y.disabled=!0,Y.overrideTotalTime(ne.totalTime),o.push(Y);return}let ie=Ie;if(W.size>1){let $e=V,it=[];for(;$e=$e.parentNode;){let et=W.get($e);if(et){ie=et;break}it.push($e)}it.forEach(et=>W.set(et,ie))}let De=this._buildAnimation(Y.namespaceId,ne,R,r,ue,_e);if(Y.setRealPlayer(De),ie===Ie)ye.push(Y);else{let $e=this.playersByElement.get(ie);$e&&$e.length&&(Y.parentPlayer=Fd($e)),o.push(Y)}}else Xm(V,ne.fromStyles),Y.onDestroy(()=>ac(V,ne.toStyles)),ce.push(Y),h.has(V)&&o.push(Y)}),ce.forEach(de=>{let V=r.get(de.element);if(V&&V.length){let Y=Fd(V);de.setRealPlayer(Y)}}),o.forEach(de=>{de.parentPlayer?de.syncPlayerEvents(de.parentPlayer):de.destroy()});for(let de=0;de<S.length;de++){let V=S[de],Y=V[sc];if(Of(V,H1),Y&&Y.hasAnimation)continue;let ne=[];if(c.size){let De=c.get(V);De&&De.length&&ne.push(...De);let $e=this.driver.query(V,U1,!0);for(let it=0;it<$e.length;it++){let et=c.get($e[it]);et&&et.length&&ne.push(...et)}}let ie=ne.filter(De=>!De.destroyed);ie.length?Nie(this,V,ie):this.processLeaveNode(V)}return S.length=0,ye.forEach(de=>{this.players.push(de),de.onDone(()=>{de.destroy();let V=this.players.indexOf(de);this.players.splice(V,1)}),de.play()}),ye}afterFlush(i){this._flushFns.push(i)}afterFlushAnimationsDone(i){this._whenQuietFns.push(i)}_getPreviousPlayers(i,e,n,o,r){let a=[];if(e){let c=this.playersByQueriedElement.get(i);c&&(a=c)}else{let c=this.playersByElement.get(i);if(c){let m=!r||r==Tv;c.forEach(p=>{p.queued||!m&&p.triggerName!=o||a.push(p)})}}return(n||o)&&(a=a.filter(c=>!(n&&n!=c.namespaceId||o&&o!=c.triggerName))),a}_beforeAnimationBuild(i,e,n){let o=e.triggerName,r=e.element,a=e.isRemovalTransition?void 0:i,c=e.isRemovalTransition?void 0:o;for(let m of e.timelines){let p=m.element,h=p!==r,g=bs(n,p,[]);this._getPreviousPlayers(p,h,a,c,e.toState).forEach(C=>{let _=C.getRealPlayer();_.beforeDestroy&&_.beforeDestroy(),C.destroy(),g.push(C)})}Xm(r,e.fromStyles)}_buildAnimation(i,e,n,o,r,a){let c=e.triggerName,m=e.element,p=[],h=new Set,g=new Set,M=e.timelines.map(_=>{let w=_.element;h.add(w);let S=w[sc];if(S&&S.removedBeforeQueried)return new Hc(_.duration,_.delay);let y=w!==m,k=Rie((n.get(w)||Die).map(R=>R.getRealPlayer())).filter(R=>{let W=R;return W.element?W.element===w:!1}),I=r.get(w),E=a.get(w),N=xI(this._normalizer,_.keyframes,I,E),T=this._buildPlayer(_,N,k);if(_.subTimeline&&o&&g.add(w),y){let R=new Pv(i,c,w);R.setRealPlayer(T),p.push(R)}return T});p.forEach(_=>{bs(this.playersByQueriedElement,_.element,[]).push(_),_.onDone(()=>Iie(this.playersByQueriedElement,_.element,_))}),h.forEach(_=>Cl(_,TI));let C=Fd(M);return C.onDestroy(()=>{h.forEach(_=>Of(_,TI)),ac(m,e.toStyles)}),g.forEach(_=>{bs(o,_,[]).push(C)}),C}_buildPlayer(i,e,n){return e.length>0?this.driver.animate(i.element,e,i.duration,i.delay,i.easing,n):new Hc(i.duration,i.delay)}},Pv=class{namespaceId;triggerName;element;_player=new Hc;_containsRealPlayer=!1;_queuedCallbacks=new Map;destroyed=!1;parentPlayer=null;markedForDestroy=!1;disabled=!1;queued=!0;totalTime=0;constructor(i,e,n){this.namespaceId=i,this.triggerName=e,this.element=n}setRealPlayer(i){this._containsRealPlayer||(this._player=i,this._queuedCallbacks.forEach((e,n)=>{e.forEach(o=>z1(i,n,void 0,o))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(i.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(i){this.totalTime=i}syncPlayerEvents(i){let e=this._player;e.triggerCallback&&i.onStart(()=>e.triggerCallback("start")),i.onDone(()=>this.finish()),i.onDestroy(()=>this.destroy())}_queueEvent(i,e){bs(this._queuedCallbacks,i,[]).push(e)}onDone(i){this.queued&&this._queueEvent("done",i),this._player.onDone(i)}onStart(i){this.queued&&this._queueEvent("start",i),this._player.onStart(i)}onDestroy(i){this.queued&&this._queueEvent("destroy",i),this._player.onDestroy(i)}init(){this._player.init()}hasStarted(){return this.queued?!1:this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(i){this.queued||this._player.setPosition(i)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(i){let e=this._player;e.triggerCallback&&e.triggerCallback(i)}};function Iie(t,i,e){let n=t.get(i);if(n){if(n.length){let o=n.indexOf(e);n.splice(o,1)}n.length==0&&t.delete(i)}return n}function Aie(t){return t??null}function Q1(t){return t&&t.nodeType===1}function Oie(t){return t=="start"||t=="done"}function CB(t,i){let e=t.style.display;return t.style.display=i??"none",e}function xB(t,i,e,n,o){let r=[];e.forEach(m=>r.push(CB(m)));let a=[];n.forEach((m,p)=>{let h=new Map;m.forEach(g=>{let M=i.computeStyle(p,g,o);h.set(g,M),(!M||M.length==0)&&(p[sc]=Pie,a.push(p))}),t.set(p,h)});let c=0;return e.forEach(m=>CB(m,r[c++])),a}function yB(t,i){let e=new Map;if(t.forEach(c=>e.set(c,[])),i.length==0)return e;let n=1,o=new Set(i),r=new Map;function a(c){if(!c)return n;let m=r.get(c);if(m)return m;let p=c.parentNode;return e.has(p)?m=p:o.has(p)?m=n:m=a(p),r.set(c,m),m}return i.forEach(c=>{let m=a(c);m!==n&&e.get(m).push(c)}),e}function Cl(t,i){t.classList?.add(i)}function Of(t,i){t.classList?.remove(i)}function Nie(t,i,e){Fd(e).onDone(()=>t.processLeaveNode(i))}function Rie(t){let i=[];return DB(t,i),i}function DB(t,i){for(let e=0;e<t.length;e++){let n=t[e];n instanceof Lu?DB(n.players,i):i.push(n)}}function Fie(t,i){let e=Object.keys(t),n=Object.keys(i);if(e.length!=n.length)return!1;for(let o=0;o<e.length;o++){let r=e[o];if(!i.hasOwnProperty(r)||t[r]!==i[r])return!1}return!0}function SB(t,i,e){let n=e.get(t);if(!n)return!1;let o=i.get(t);return o?n.forEach(r=>o.add(r)):i.set(t,n),e.delete(t),!0}var Nf=class{_driver;_normalizer;_transitionEngine;_timelineEngine;_triggerCache={};onRemovalComplete=(i,e)=>{};constructor(i,e,n){this._driver=e,this._normalizer=n,this._transitionEngine=new HI(i.body,e,n),this._timelineEngine=new jI(i.body,e,n),this._transitionEngine.onRemovalComplete=(o,r)=>this.onRemovalComplete(o,r)}registerTrigger(i,e,n,o,r){let a=i+"-"+o,c=this._triggerCache[a];if(!c){let m=[],p=[],h=MB(this._driver,r,m,p);if(m.length)throw Z8(o,m);c=yie(o,h,this._normalizer),this._triggerCache[a]=c}this._transitionEngine.registerTrigger(e,o,c)}register(i,e){this._transitionEngine.register(i,e)}destroy(i,e){this._transitionEngine.destroy(i,e)}onInsert(i,e,n,o){this._transitionEngine.insertNode(i,e,n,o)}onRemove(i,e,n){this._transitionEngine.removeNode(i,e,n)}disableAnimations(i,e){this._transitionEngine.markElementAsDisabled(i,e)}process(i,e,n,o){if(n.charAt(0)=="@"){let[r,a]=yI(n),c=o;this._timelineEngine.command(r,e,a,c)}else this._transitionEngine.trigger(i,e,n,o)}listen(i,e,n,o,r){if(n.charAt(0)=="@"){let[a,c]=yI(n);return this._timelineEngine.listen(a,e,c,r)}return this._transitionEngine.listen(i,e,n,o,r)}flush(i=-1){this._transitionEngine.flush(i)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(i){this._transitionEngine.afterFlushAnimationsDone(i)}};function Lie(t,i){let e=null,n=null;return Array.isArray(i)&&i.length?(e=OI(i[0]),i.length>1&&(n=OI(i[i.length-1]))):i instanceof Map&&(e=OI(i)),e||n?new Bie(t,e,n):null}var Bie=(()=>{class t{_element;_startStyles;_endStyles;static initialStylesByElement=new WeakMap;_state=0;_initialStyles;constructor(e,n,o){this._element=e,this._startStyles=n,this._endStyles=o;let r=t.initialStylesByElement.get(e);r||t.initialStylesByElement.set(e,r=new Map),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&ac(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(ac(this._element,this._initialStyles),this._endStyles&&(ac(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(t.initialStylesByElement.delete(this._element),this._startStyles&&(Xm(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Xm(this._element,this._endStyles),this._endStyles=null),ac(this._element,this._initialStyles),this._state=3)}}return t})();function OI(t){let i=null;return t.forEach((e,n)=>{Vie(n)&&(i=i||new Map,i.set(n,e))}),i}function Vie(t){return t==="display"||t==="position"}var ny=class{element;keyframes;options;_specialStyles;_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_duration;_delay;_initialized=!1;_finished=!1;_started=!1;_destroyed=!1;_finalKeyframe;_originalOnDoneFns=[];_originalOnStartFns=[];domPlayer=null;time=0;parentPlayer=null;currentSnapshot=new Map;constructor(i,e,n,o){this.element=i,this.keyframes=e,this.options=n,this._specialStyles=o,this._duration=n.duration,this._delay=n.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(i=>i()),this._onDoneFns=[])}init(){this._buildPlayer()&&this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return this.domPlayer;this._initialized=!0;let i=this.keyframes,e=this._triggerWebAnimation(this.element,i,this.options);if(!e)return this._onFinish(),null;this.domPlayer=e,this._finalKeyframe=i.length?i[i.length-1]:new Map;let n=()=>this._onFinish();return e.addEventListener("finish",n),this.onDestroy(()=>{e.removeEventListener("finish",n)}),e}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer?.pause()}_convertKeyframesToObject(i){let e=[];return i.forEach(n=>{e.push(Object.fromEntries(n))}),e}_triggerWebAnimation(i,e,n){let o=this._convertKeyframesToObject(e);try{return i.animate(o,n)}catch{return null}}onStart(i){this._originalOnStartFns.push(i),this._onStartFns.push(i)}onDone(i){this._originalOnDoneFns.push(i),this._onDoneFns.push(i)}onDestroy(i){this._onDestroyFns.push(i)}play(){let i=this._buildPlayer();i&&(this.hasStarted()||(this._onStartFns.forEach(e=>e()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),i.play())}pause(){this.init(),this.domPlayer?.pause()}finish(){this.init(),this.domPlayer&&(this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish())}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer?.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(i=>i()),this._onDestroyFns=[])}setPosition(i){this.domPlayer||this.init(),this.domPlayer&&(this.domPlayer.currentTime=i*this.time)}getPosition(){return this.domPlayer?+(this.domPlayer.currentTime??0)/this.time:this._initialized?1:0}get totalTime(){return this._delay+this._duration}beforeDestroy(){let i=new Map;this.hasStarted()&&this._finalKeyframe.forEach((n,o)=>{o!=="offset"&&i.set(o,this._finished?n:W1(this.element,o))}),this.currentSnapshot=i}triggerCallback(i){let e=i==="start"?this._onStartFns:this._onDoneFns;e.forEach(n=>n()),e.length=0}},iy=class{validateStyleProperty(i){return!0}validateAnimatableStyleProperty(i){return!0}containsElement(i,e){return SI(i,e)}getParentElement(i){return $1(i)}query(i,e,n){return wI(i,e,n)}computeStyle(i,e,n){return W1(i,e)}animate(i,e,n,o,r,a=[]){let c=o==0?"both":"forwards",m={duration:n,delay:o,fill:c};r&&(m.easing=r);let p=new Map,h=a.filter(C=>C instanceof ny);pB(n,o)&&h.forEach(C=>{C.currentSnapshot.forEach((_,w)=>p.set(w,_))});let g=dB(e).map(C=>new Map(C));g=uB(i,g,p);let M=Lie(i,g);return new ny(i,g,m,M)}};var Y1="@",PB="@.disabled",oy=class{namespaceId;delegate;engine;_onDestroy;\u0275type=0;constructor(i,e,n,o){this.namespaceId=i,this.delegate=e,this.engine=n,this._onDestroy=o}get data(){return this.delegate.data}destroyNode(i){this.delegate.destroyNode?.(i)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(i,e){return this.delegate.createElement(i,e)}createComment(i){return this.delegate.createComment(i)}createText(i){return this.delegate.createText(i)}appendChild(i,e){this.delegate.appendChild(i,e),this.engine.onInsert(this.namespaceId,e,i,!1)}insertBefore(i,e,n,o=!0){this.delegate.insertBefore(i,e,n),this.engine.onInsert(this.namespaceId,e,i,o)}removeChild(i,e,n,o){if(o){this.delegate.removeChild(i,e,n,o);return}this.parentNode(e)&&this.engine.onRemove(this.namespaceId,e,this.delegate)}selectRootElement(i,e){return this.delegate.selectRootElement(i,e)}parentNode(i){return this.delegate.parentNode(i)}nextSibling(i){return this.delegate.nextSibling(i)}setAttribute(i,e,n,o){this.delegate.setAttribute(i,e,n,o)}removeAttribute(i,e,n){this.delegate.removeAttribute(i,e,n)}addClass(i,e){this.delegate.addClass(i,e)}removeClass(i,e){this.delegate.removeClass(i,e)}setStyle(i,e,n,o){this.delegate.setStyle(i,e,n,o)}removeStyle(i,e,n){this.delegate.removeStyle(i,e,n)}setProperty(i,e,n){e.charAt(0)==Y1&&e==PB?this.disableAnimations(i,!!n):this.delegate.setProperty(i,e,n)}setValue(i,e){this.delegate.setValue(i,e)}listen(i,e,n,o){return this.delegate.listen(i,e,n,o)}disableAnimations(i,e){this.engine.disableAnimations(i,e)}},UI=class extends oy{factory;constructor(i,e,n,o,r){super(e,n,o,r),this.factory=i,this.namespaceId=e}setProperty(i,e,n){e.charAt(0)==Y1?e.charAt(1)=="."&&e==PB?(n=n===void 0?!0:!!n,this.disableAnimations(i,n)):this.engine.process(this.namespaceId,i,e.slice(1),n):this.delegate.setProperty(i,e,n)}listen(i,e,n,o){if(e.charAt(0)==Y1){let r=zie(i),a=e.slice(1),c="";return a.charAt(0)!=Y1&&([a,c]=jie(a)),this.engine.listen(this.namespaceId,r,a,c,m=>{let p=m._data||-1;this.factory.scheduleListenerCallback(p,n,m)})}return this.delegate.listen(i,e,n,o)}};function zie(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}function jie(t){let i=t.indexOf("."),e=t.substring(0,i),n=t.slice(i+1);return[e,n]}var ry=class{delegate;engine;_zone;_currentId=0;_microtaskId=1;_animationCallbacksBuffer=[];_rendererCache=new Map;_cdRecurDepth=0;constructor(i,e,n){this.delegate=i,this.engine=e,this._zone=n,e.onRemovalComplete=(o,r)=>{r?.removeChild(null,o)}}createRenderer(i,e){let o=this.delegate.createRenderer(i,e);if(!i||!e?.data?.animation){let p=this._rendererCache,h=p.get(o);if(!h){let g=()=>p.delete(o);h=new oy("",o,this.engine,g),p.set(o,h)}return h}let r=e.id,a=e.id+"-"+this._currentId;this._currentId++,this.engine.register(a,i);let c=p=>{Array.isArray(p)?p.forEach(c):this.engine.registerTrigger(r,a,i,p.name,p)};return e.data.animation.forEach(c),new UI(this,a,o,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(i,e,n){if(i>=0&&i<this._microtaskId){this._zone.run(()=>e(n));return}let o=this._animationCallbacksBuffer;o.length==0&&queueMicrotask(()=>{this._zone.run(()=>{o.forEach(r=>{let[a,c]=r;a(c)}),this._animationCallbacksBuffer=[]})}),o.push([e,n])}end(){this._cdRecurDepth--,this._cdRecurDepth==0&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}componentReplaced(i){this.engine.flush(),this.delegate.componentReplaced?.(i)}};var Hie=(()=>{class t extends Nf{constructor(e,n,o){super(e,n,o)}ngOnDestroy(){this.flush()}static \u0275fac=function(n){return new(n||t)(ge(Pi),ge(ju),ge($u))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function Uie(){return new K1}function Gie(){return new ry(f(G5),f(Nf),f(bi))}var AB=[{provide:$u,useFactory:Uie},{provide:Nf,useClass:Hie},{provide:yd,useFactory:Gie}],Wie=[{provide:ju,useClass:GI},{provide:vE,useValue:"NoopAnimations"},...AB],IB=[{provide:ju,useFactory:()=>new iy},{provide:vE,useFactory:()=>"BrowserAnimations"},...AB],OB=(()=>{class t{static withConfig(e){return{ngModule:t,providers:e.disableAnimations?Wie:IB}}static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({providers:IB,imports:[PC]})}return t})();function qie(t,i){return typeof t>"u"?typeof i>"u"?t:i:t}function YI(t,i){return t=qie(t,i),typeof t=="function"?function(){for(var n=arguments,o=arguments.length,r=Array(o),a=0;a<o;a++)r[a]=n[a];return!!t.apply(this,r)}:t?function(){return!0}:function(){return!1}}var qI=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol?"symbol":typeof t},RB=function(t){return t!=null&&(typeof t>"u"?"undefined":qI(t))==="object"&&t.nodeType===1&&qI(t.style)==="object"&&qI(t.ownerDocument)==="object"};function FB(t,i){if(i=JI(i,!0),!RB(i))return-1;for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}function KI(t,i){return FB(t,i)!==-1}function Xie(t,i){for(var e=0;e<i.length;e++)KI(t,i[e])||t.push(i[e]);return i}function Qie(t){for(var i=arguments,e=[],n=arguments.length-1;n-- >0;)e[n]=i[n+1];return e=e.map(JI),Xie(t,e)}function Yie(t){for(var i=arguments,e=[],n=arguments.length-1;n-- >0;)e[n]=i[n+1];return e.map(JI).reduce(function(o,r){var a=FB(t,r);return a!==-1?o.concat(t.splice(a,1)):o},[])}function JI(t,i){if(typeof t=="string")try{return document.querySelector(t)}catch(e){throw e}if(!RB(t)&&!i)throw new TypeError(t+" is not a DOM element.");return t}function Kie(t,i){i=i||{};var e=YI(i.allowUpdate,!0);return function(o){if(o=o||window.event,t.target=o.target||o.srcElement||o.originalTarget,t.element=this,t.type=o.type,!!e(o)){if(o.targetTouches)t.x=o.targetTouches[0].clientX,t.y=o.targetTouches[0].clientY,t.pageX=o.targetTouches[0].pageX,t.pageY=o.targetTouches[0].pageY,t.screenX=o.targetTouches[0].screenX,t.screenY=o.targetTouches[0].screenY;else{if(o.pageX===null&&o.clientX!==null){var r=o.target&&o.target.ownerDocument||document,a=r.documentElement,c=r.body;t.pageX=o.clientX+(a&&a.scrollLeft||c&&c.scrollLeft||0)-(a&&a.clientLeft||c&&c.clientLeft||0),t.pageY=o.clientY+(a&&a.scrollTop||c&&c.scrollTop||0)-(a&&a.clientTop||c&&c.clientTop||0)}else t.pageX=o.pageX,t.pageY=o.pageY;t.x=o.clientX,t.y=o.clientY,t.screenX=o.screenX,t.screenY=o.screenY}t.clientX=t.x,t.clientY=t.y}}}function Zie(){var t={top:{value:0,enumerable:!0},left:{value:0,enumerable:!0},right:{value:window.innerWidth,enumerable:!0},bottom:{value:window.innerHeight,enumerable:!0},width:{value:window.innerWidth,enumerable:!0},height:{value:window.innerHeight,enumerable:!0},x:{value:0,enumerable:!0},y:{value:0,enumerable:!0}};if(Object.create)return Object.create({},t);var i={};return Object.defineProperties(i,t),i}function LB(t){if(t===window)return Zie();try{var i=t.getBoundingClientRect();return i.x===void 0&&(i.x=i.left,i.y=i.top),i}catch{throw new TypeError("Can't call getBoundingClientRect on "+t)}}function Jie(t,i){var e=LB(i);return t.y>e.top&&t.y<e.bottom&&t.x>e.left&&t.x<e.right}var ZI=void 0;typeof Object.create!="function"?ZI=(function(t){var i=function(){};return function(e,n){if(e!==Object(e)&&e!==null)throw TypeError("Argument must be an object, or null");i.prototype=e||{};var o=new i;return i.prototype=null,n!==t&&Object.defineProperties(o,n),e===null&&(o.__proto__=null),o}})():ZI=Object.create;var eoe=ZI,Hu=["altKey","button","buttons","clientX","clientY","ctrlKey","metaKey","movementX","movementY","offsetX","offsetY","pageX","pageY","region","relatedTarget","screenX","screenY","shiftKey","which","x","y"];function toe(t){var i={screenX:0,screenY:0,clientX:0,clientY:0,ctrlKey:!1,shiftKey:!1,altKey:!1,metaKey:!1,button:0,buttons:1,relatedTarget:null,region:null};t!==void 0&&t.addEventListener("mousemove",e);function e(r){for(var a=0;a<Hu.length;a++)i[Hu[a]]=r[Hu[a]]}var n=(function(){if(MouseEvent)return function(a,c,m){var p=new MouseEvent("mousemove",XI(i,c));return QI(p,m),a.dispatchEvent(p)};if(typeof document.createEvent=="function")return function(a,c,m){var p=XI(i,c),h=document.createEvent("MouseEvents");return h.initMouseEvent("mousemove",!0,!0,window,0,p.screenX,p.screenY,p.clientX,p.clientY,p.ctrlKey,p.altKey,p.shiftKey,p.metaKey,p.button,p.relatedTarget),QI(h,m),a.dispatchEvent(h)};if(typeof document.createEventObject=="function")return function(a,c,m){var p=document.createEventObject(),h=XI(i,c);for(var g in h)p[g]=h[g];return QI(p,m),a.dispatchEvent(p)}})();function o(){t&&t.removeEventListener("mousemove",e,!1),i=null}return{destroy:o,dispatch:n}}function XI(t,i){i=i||{};for(var e=eoe(t),n=0;n<Hu.length;n++)i[Hu[n]]!==void 0&&(e[Hu[n]]=i[Hu[n]]);return e}function QI(t,i){console.log("data ",i),t.data=i||{},t.dispatched="mousemove"}var Av=["webkit","moz","ms","o"],Iv=(function(){if(typeof window>"u")return function(){};for(var t=0,i=Av.length;t<i&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[Av[t]+"RequestAnimationFrame"];if(!window.requestAnimationFrame){var e=0;window.requestAnimationFrame=function(n){var o=new Date().getTime(),r=Math.max(0,16-o-e),a=window.setTimeout(function(){return n(o+r)},r);return e=o+r,a}}return window.requestAnimationFrame.bind(window)})(),Rf=(function(){if(typeof window>"u")return function(){};for(var t=0,i=Av.length;t<i&&!window.cancelAnimationFrame;++t)window.cancelAnimationFrame=window[Av[t]+"CancelAnimationFrame"]||window[Av[t]+"CancelRequestAnimationFrame"];return window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){window.clearTimeout(e)}),window.cancelAnimationFrame.bind(window)})();function noe(t,i){i===void 0&&(i={});var e=this,n=4,o=!1;if(typeof i.margin!="object"){var r=i.margin||-1;this.margin={left:r,right:r,top:r,bottom:r}}else this.margin=i.margin;this.scrollWhenOutside=i.scrollWhenOutside||!1;var a={},c=Kie(a),m=toe(),p=!1;window.addEventListener("mousemove",c,!1),window.addEventListener("touchmove",c,!1),isNaN(i.maxSpeed)||(n=i.maxSpeed),typeof n!="object"&&(n={left:n,right:n,top:n,bottom:n}),this.autoScroll=YI(i.autoScroll),this.syncMove=YI(i.syncMove,!1),this.destroy=function(G){window.removeEventListener("mousemove",c,!1),window.removeEventListener("touchmove",c,!1),window.removeEventListener("mousedown",w,!1),window.removeEventListener("touchstart",w,!1),window.removeEventListener("mouseup",S,!1),window.removeEventListener("touchend",S,!1),window.removeEventListener("pointerup",S,!1),window.removeEventListener("mouseleave",k,!1),window.removeEventListener("mousemove",N,!1),window.removeEventListener("touchmove",N,!1),window.removeEventListener("scroll",_,!0),t=[],G&&y()},this.add=function(){for(var G=[],ue=arguments.length;ue--;)G[ue]=arguments[ue];return Qie.apply(void 0,[t].concat(G)),this},this.remove=function(){for(var G=[],ue=arguments.length;ue--;)G[ue]=arguments[ue];return Yie.apply(void 0,[t].concat(G))};var h=null,g;Object.prototype.toString.call(t)!=="[object Array]"&&(t=[t]),(function(G){t=[],G.forEach(function(ue){ue===window?h=window:e.add(ue)})})(t),Object.defineProperties(this,{down:{get:function(){return p}},maxSpeed:{get:function(){return n}},point:{get:function(){return a}},scrolling:{get:function(){return o}}});var M=null,C;window.addEventListener("mousedown",w,!1),window.addEventListener("touchstart",w,!1),window.addEventListener("mouseup",S,!1),window.addEventListener("touchend",S,!1),window.addEventListener("pointerup",S,!1),window.addEventListener("mousemove",N,!1),window.addEventListener("touchmove",N,!1),window.addEventListener("mouseleave",k,!1),window.addEventListener("scroll",_,!0);function _(G){for(var ue=0;ue<t.length;ue++)if(t[ue]===G.target){o=!0;break}o&&Iv(function(){return o=!1})}function w(){p=!0}function S(){p=!1,y()}function y(){Rf(C),Rf(g)}function k(){p=!1}function I(G){if(!G)return null;if(M===G||KI(t,G))return G;for(;G=G.parentNode;)if(KI(t,G))return G;return null}function E(){for(var G=null,ue=0;ue<t.length;ue++)NB(a,t[ue])&&(G=t[ue]);return G}function N(G){if(e.autoScroll()&&!G.dispatched){var ue=G.target,ye=document.body;M&&!NB(a,M)&&(e.scrollWhenOutside||(M=null)),ue&&ue.parentNode===ye?ue=E():(ue=I(ue),ue||(ue=E())),ue&&ue!==M&&(M=ue),h&&(Rf(g),g=Iv(T)),M&&(Rf(C),C=Iv(R))}}function T(){W(h),Rf(g),g=Iv(T)}function R(){M&&(W(M),Rf(C),C=Iv(R))}function W(G){var ue=LB(G),ye,ce;a.x<ue.left+e.margin.left?ye=Math.floor(Math.max(-1,(a.x-ue.left)/e.margin.left-1)*e.maxSpeed.left):a.x>ue.right-e.margin.right?ye=Math.ceil(Math.min(1,(a.x-ue.right)/e.margin.right+1)*e.maxSpeed.right):ye=0,a.y<ue.top+e.margin.top?ce=Math.floor(Math.max(-1,(a.y-ue.top)/e.margin.top-1)*e.maxSpeed.top):a.y>ue.bottom-e.margin.bottom?ce=Math.ceil(Math.min(1,(a.y-ue.bottom)/e.margin.bottom+1)*e.maxSpeed.bottom):ce=0,e.syncMove()&&m.dispatch(G,{pageX:a.pageX+ye,pageY:a.pageY+ce,clientX:a.x+ye,clientY:a.y+ce}),setTimeout(function(){ce&&pe(G,ce),ye&&_e(G,ye)})}function pe(G,ue){G===window?window.scrollTo(G.pageXOffset,G.pageYOffset+ue):G.scrollTop+=ue}function _e(G,ue){G===window?window.scrollTo(G.pageXOffset+ue,G.pageYOffset):G.scrollLeft+=ue}}function ioe(t,i){return new noe(t,i)}function NB(t,i,e){return e?t.y>e.top&&t.y<e.bottom&&t.x>e.left&&t.x<e.right:Jie(t,i)}var BB=ioe;var ooe=(()=>{class t{constructor(){this.currentDrag=new Le}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),roe=(()=>{class t{constructor(){this.elementRef=f(Lt)}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275dir=ft({type:t,selectors:[["","mwlDraggableScrollContainer",""]]})}}return t})();function aoe(t,i,e){e&&e.split(" ").forEach(n=>t.addClass(i.nativeElement,n))}function soe(t,i,e){e&&e.split(" ").forEach(n=>t.removeClass(i.nativeElement,n))}var VB=(()=>{class t{constructor(){this.dragAxis={x:!0,y:!0},this.dragSnapGrid={},this.ghostDragEnabled=!0,this.showOriginalElementWhileDragging=!1,this.dragCursor="",this.autoScroll={margin:20},this.dragPointerDown=new ve,this.dragStart=new ve,this.ghostElementCreated=new ve,this.dragging=new ve,this.dragEnd=new ve,this.pointerDown$=new Le,this.pointerMove$=new Le,this.pointerUp$=new Le,this.eventListenerSubscriptions={},this.destroy$=new Le,this.timeLongPress={timerBegin:0,timerEnd:0},this.element=f(Lt),this.renderer=f(ii),this.draggableHelper=f(ooe),this.zone=f(bi),this.vcr=f(co),this.scrollContainer=f(roe,{optional:!0}),this.document=f(Pi)}ngOnInit(){this.checkEventListeners();let e=this.pointerDown$.pipe(Pn(()=>this.canDrag()),Er(n=>{n.event.stopPropagation&&!this.scrollContainer&&n.event.stopPropagation();let o=this.renderer.createElement("style");this.renderer.setAttribute(o,"type","text/css"),this.renderer.appendChild(o,this.renderer.createText(`
|
||
body * {
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
-webkit-user-select: none;
|
||
user-select: none;
|
||
}
|
||
`)),requestAnimationFrame(()=>{this.document.head.appendChild(o)});let r=this.getScrollPosition(),a=new _r(C=>{let _=this.scrollContainer?this.scrollContainer.elementRef.nativeElement:"window";return this.renderer.listen(_,"scroll",w=>C.next(w))}).pipe(li(r),yt(()=>this.getScrollPosition())),c=new Le,m=new bd;this.dragPointerDown.observers.length>0&&this.zone.run(()=>{this.dragPointerDown.next({x:0,y:0})});let p=Dn(this.pointerUp$,this.pointerDown$,m,this.destroy$).pipe(As()),h=rr([this.pointerMove$,a]).pipe(yt(([C,_])=>({currentDrag$:c,transformX:C.clientX-n.clientX,transformY:C.clientY-n.clientY,clientX:C.clientX,clientY:C.clientY,scrollLeft:_.left,scrollTop:_.top,target:C.event.target})),yt(C=>(this.dragSnapGrid.x&&(C.transformX=Math.round(C.transformX/this.dragSnapGrid.x)*this.dragSnapGrid.x),this.dragSnapGrid.y&&(C.transformY=Math.round(C.transformY/this.dragSnapGrid.y)*this.dragSnapGrid.y),C)),yt(C=>(this.dragAxis.x||(C.transformX=0),this.dragAxis.y||(C.transformY=0),C)),yt(C=>{let _=C.scrollLeft-r.left,w=C.scrollTop-r.top;return tt(H({},C),{x:C.transformX+_,y:C.transformY+w})}),Pn(({x:C,y:_,transformX:w,transformY:S})=>!this.validateDrag||this.validateDrag({x:C,y:_,transform:{x:w,y:S}})),rt(p),As()),g=h.pipe(wi(1),As()),M=h.pipe(z_(1),As());return g.subscribe(({clientX:C,clientY:_,x:w,y:S})=>{if(this.dragStart.observers.length>0&&this.zone.run(()=>{this.dragStart.next({cancelDrag$:m})}),this.scroller=BB([this.scrollContainer?this.scrollContainer.elementRef.nativeElement:this.document.defaultView],tt(H({},this.autoScroll),{autoScroll(){return!0}})),aoe(this.renderer,this.element,this.dragActiveClass),this.ghostDragEnabled){let y=this.element.nativeElement.getBoundingClientRect(),k=this.element.nativeElement.cloneNode(!0);if(this.showOriginalElementWhileDragging||this.renderer.setStyle(this.element.nativeElement,"visibility","hidden"),this.ghostElementAppendTo?this.ghostElementAppendTo.appendChild(k):this.element.nativeElement.parentNode.insertBefore(k,this.element.nativeElement.nextSibling),this.ghostElement=k,this.document.body.style.cursor=this.dragCursor,this.setElementStyles(k,{position:"fixed",top:`${y.top}px`,left:`${y.left}px`,width:`${y.width}px`,height:`${y.height}px`,cursor:this.dragCursor,margin:"0",willChange:"transform",pointerEvents:"none"}),this.ghostElementTemplate){let I=this.vcr.createEmbeddedView(this.ghostElementTemplate);k.innerHTML="",I.rootNodes.filter(E=>E instanceof Node).forEach(E=>{k.appendChild(E)}),M.subscribe(()=>{this.vcr.remove(this.vcr.indexOf(I))})}this.ghostElementCreated.observers.length>0&&this.zone.run(()=>{this.ghostElementCreated.emit({clientX:C-w,clientY:_-S,element:k})}),M.subscribe(()=>{k.parentElement.removeChild(k),this.ghostElement=null,this.renderer.setStyle(this.element.nativeElement,"visibility","")})}this.draggableHelper.currentDrag.next(c)}),M.pipe(Er(C=>{let _=m.pipe(h5(),wi(1),yt(w=>tt(H({},C),{dragCancelled:w>0})));return m.complete(),_})).subscribe(({x:C,y:_,dragCancelled:w})=>{this.scroller.destroy(),this.dragEnd.observers.length>0&&this.zone.run(()=>{this.dragEnd.next({x:C,y:_,dragCancelled:w})}),soe(this.renderer,this.element,this.dragActiveClass),c.complete()}),Dn(p,M).pipe(wi(1)).subscribe(()=>{requestAnimationFrame(()=>{this.document.head.removeChild(o)})}),h}),As());Dn(e.pipe(wi(1),yt(n=>[,n])),e.pipe(CC())).pipe(Pn(([n,o])=>n?n.x!==o.x||n.y!==o.y:!0),yt(([n,o])=>o)).subscribe(({x:n,y:o,currentDrag$:r,clientX:a,clientY:c,transformX:m,transformY:p,target:h})=>{this.dragging.observers.length>0&&this.zone.run(()=>{this.dragging.next({x:n,y:o})}),requestAnimationFrame(()=>{if(this.ghostElement){let g=`translate3d(${m}px, ${p}px, 0px)`;this.setElementStyles(this.ghostElement,{transform:g,"-webkit-transform":g,"-ms-transform":g,"-moz-transform":g,"-o-transform":g})}}),r.next({clientX:a,clientY:c,dropData:this.dropData,target:h})})}ngOnChanges(e){e.dragAxis&&this.checkEventListeners()}ngOnDestroy(){this.unsubscribeEventListeners(),this.pointerDown$.complete(),this.pointerMove$.complete(),this.pointerUp$.complete(),this.destroy$.next()}checkEventListeners(){let e=this.canDrag(),n=Object.keys(this.eventListenerSubscriptions).length>0;e&&!n?this.zone.runOutsideAngular(()=>{this.eventListenerSubscriptions.mousedown=this.renderer.listen(this.element.nativeElement,"mousedown",o=>{this.onMouseDown(o)}),this.eventListenerSubscriptions.mouseup=this.renderer.listen("document","mouseup",o=>{this.onMouseUp(o)}),this.eventListenerSubscriptions.touchstart=this.renderer.listen(this.element.nativeElement,"touchstart",o=>{this.onTouchStart(o)}),this.eventListenerSubscriptions.touchend=this.renderer.listen("document","touchend",o=>{this.onTouchEnd(o)}),this.eventListenerSubscriptions.touchcancel=this.renderer.listen("document","touchcancel",o=>{this.onTouchEnd(o)}),this.eventListenerSubscriptions.mouseenter=this.renderer.listen(this.element.nativeElement,"mouseenter",()=>{this.onMouseEnter()}),this.eventListenerSubscriptions.mouseleave=this.renderer.listen(this.element.nativeElement,"mouseleave",()=>{this.onMouseLeave()})}):!e&&n&&this.unsubscribeEventListeners()}onMouseDown(e){e.button===0&&(this.eventListenerSubscriptions.mousemove||(this.eventListenerSubscriptions.mousemove=this.renderer.listen("document","mousemove",n=>{this.pointerMove$.next({event:n,clientX:n.clientX,clientY:n.clientY})})),this.pointerDown$.next({event:e,clientX:e.clientX,clientY:e.clientY}))}onMouseUp(e){e.button===0&&(this.eventListenerSubscriptions.mousemove&&(this.eventListenerSubscriptions.mousemove(),delete this.eventListenerSubscriptions.mousemove),this.pointerUp$.next({event:e,clientX:e.clientX,clientY:e.clientY}))}onTouchStart(e){let n,o,r;if(this.touchStartLongPress&&(this.timeLongPress.timerBegin=Date.now(),o=!1,r=this.hasScrollbar(),n=this.getScrollPosition()),!this.eventListenerSubscriptions.touchmove){let a=ua(this.document,"contextmenu").subscribe(m=>{m.preventDefault()}),c=ua(this.document,"touchmove",{passive:!1}).subscribe(m=>{this.touchStartLongPress&&!o&&r&&(o=this.shouldBeginDrag(e,m,n)),(!this.touchStartLongPress||!r||o)&&(m.preventDefault(),this.pointerMove$.next({event:m,clientX:m.targetTouches[0].clientX,clientY:m.targetTouches[0].clientY}))});this.eventListenerSubscriptions.touchmove=()=>{a.unsubscribe(),c.unsubscribe()}}this.pointerDown$.next({event:e,clientX:e.touches[0].clientX,clientY:e.touches[0].clientY})}onTouchEnd(e){this.eventListenerSubscriptions.touchmove&&(this.eventListenerSubscriptions.touchmove(),delete this.eventListenerSubscriptions.touchmove,this.touchStartLongPress&&this.enableScroll()),this.pointerUp$.next({event:e,clientX:e.changedTouches[0].clientX,clientY:e.changedTouches[0].clientY})}onMouseEnter(){this.setCursor(this.dragCursor)}onMouseLeave(){this.setCursor("")}canDrag(){return this.dragAxis.x||this.dragAxis.y}setCursor(e){this.eventListenerSubscriptions.mousemove||this.renderer.setStyle(this.element.nativeElement,"cursor",e)}unsubscribeEventListeners(){Object.keys(this.eventListenerSubscriptions).forEach(e=>{this.eventListenerSubscriptions[e](),delete this.eventListenerSubscriptions[e]})}setElementStyles(e,n){Object.keys(n).forEach(o=>{this.renderer.setStyle(e,o,n[o])})}getScrollElement(){return this.scrollContainer?this.scrollContainer.elementRef.nativeElement:this.document.body}getScrollPosition(){return this.scrollContainer?{top:this.scrollContainer.elementRef.nativeElement.scrollTop,left:this.scrollContainer.elementRef.nativeElement.scrollLeft}:{top:window.pageYOffset||this.document.documentElement.scrollTop,left:window.pageXOffset||this.document.documentElement.scrollLeft}}shouldBeginDrag(e,n,o){let r=this.getScrollPosition(),a={top:Math.abs(r.top-o.top),left:Math.abs(r.left-o.left)},c=Math.abs(n.targetTouches[0].clientX-e.touches[0].clientX)-a.left,m=Math.abs(n.targetTouches[0].clientY-e.touches[0].clientY)-a.top,p=c+m,h=this.touchStartLongPress;return(p>h.delta||a.top>0||a.left>0)&&(this.timeLongPress.timerBegin=Date.now()),this.timeLongPress.timerEnd=Date.now(),this.timeLongPress.timerEnd-this.timeLongPress.timerBegin>=h.delay?(this.disableScroll(),!0):!1}enableScroll(){this.scrollContainer&&this.renderer.setStyle(this.scrollContainer.elementRef.nativeElement,"overflow",""),this.renderer.setStyle(this.document.body,"overflow","")}disableScroll(){this.scrollContainer&&this.renderer.setStyle(this.scrollContainer.elementRef.nativeElement,"overflow","hidden"),this.renderer.setStyle(this.document.body,"overflow","hidden")}hasScrollbar(){let e=this.getScrollElement(),n=e.scrollWidth>e.clientWidth,o=e.scrollHeight>e.clientHeight;return n||o}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275dir=ft({type:t,selectors:[["","mwlDraggable",""]],inputs:{dropData:"dropData",dragAxis:"dragAxis",dragSnapGrid:"dragSnapGrid",ghostDragEnabled:"ghostDragEnabled",showOriginalElementWhileDragging:"showOriginalElementWhileDragging",validateDrag:"validateDrag",dragCursor:"dragCursor",dragActiveClass:"dragActiveClass",ghostElementAppendTo:"ghostElementAppendTo",ghostElementTemplate:"ghostElementTemplate",touchStartLongPress:"touchStartLongPress",autoScroll:"autoScroll"},outputs:{dragPointerDown:"dragPointerDown",dragStart:"dragStart",ghostElementCreated:"ghostElementCreated",dragging:"dragging",dragEnd:"dragEnd"},features:[un]})}}return t})();var ay=(()=>{class t{static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275mod=Bt({type:t})}static{this.\u0275inj=Ft({})}}return t})();var Ov=class{constructor(i){this.rawFile=i;let e=i instanceof HTMLInputElement?i.value:i;this[`_createFrom${typeof e=="string"?"FakePath":"Object"}`](e)}_createFromFakePath(i){this.lastModifiedDate=void 0,this.size=void 0,this.type=`like/${i.slice(i.lastIndexOf(".")+1).toLowerCase()}`,this.name=i.slice(i.lastIndexOf("/")+i.lastIndexOf("\\")+2)}_createFromObject(i){this.size=i.size,this.type=i.type,this.name=i.name}},e3=class{constructor(i,e,n){this.url="/",this.headers=[],this.withCredentials=!0,this.formData=[],this.isReady=!1,this.isUploading=!1,this.isUploaded=!1,this.isSuccess=!1,this.isCancel=!1,this.isError=!1,this.progress=0,this.uploader=i,this.some=e,this.options=n,this.file=new Ov(e),this._file=e,i.options&&(this.method=i.options.method||"POST",this.alias=i.options.itemAlias||"file"),this.url=i.options.url}upload(){try{this.uploader.uploadItem(this)}catch{this.uploader._onCompleteItem(this,"",0,{}),this.uploader._onErrorItem(this,"",0,{})}}cancel(){this.uploader.cancelItem(this)}remove(){this.uploader.removeFromQueue(this)}onBeforeUpload(){}onBuildForm(i){return{form:i}}onProgress(i){return{progress:i}}onSuccess(i,e,n){return{response:i,status:e,headers:n}}onError(i,e,n){return{response:i,status:e,headers:n}}onCancel(i,e,n){return{response:i,status:e,headers:n}}onComplete(i,e,n){return{response:i,status:e,headers:n}}_onBeforeUpload(){this.isReady=!0,this.isUploading=!0,this.isUploaded=!1,this.isSuccess=!1,this.isCancel=!1,this.isError=!1,this.progress=0,this.onBeforeUpload()}_onBuildForm(i){this.onBuildForm(i)}_onProgress(i){this.progress=i,this.onProgress(i)}_onSuccess(i,e,n){this.isReady=!1,this.isUploading=!1,this.isUploaded=!0,this.isSuccess=!0,this.isCancel=!1,this.isError=!1,this.progress=100,this.index=void 0,this.onSuccess(i,e,n)}_onError(i,e,n){this.isReady=!1,this.isUploading=!1,this.isUploaded=!0,this.isSuccess=!1,this.isCancel=!1,this.isError=!0,this.progress=0,this.index=void 0,this.onError(i,e,n)}_onCancel(i,e,n){this.isReady=!1,this.isUploading=!1,this.isUploaded=!1,this.isSuccess=!1,this.isCancel=!0,this.isError=!1,this.progress=0,this.index=void 0,this.onCancel(i,e,n)}_onComplete(i,e,n){this.onComplete(i,e,n),this.uploader.options.removeAfterUpload&&this.remove()}_prepareToUploading(){this.index=this.index||++this.uploader._nextIndex,this.isReady=!0}},coe=(()=>{class t{static getMimeClass(e){let n="application";return e?.type&&this.mime_psd.indexOf(e.type)!==-1||e?.type?.match("image.*")?n="image":e?.type?.match("video.*")?n="video":e?.type?.match("audio.*")?n="audio":e?.type==="application/pdf"?n="pdf":e?.type&&this.mime_compress.indexOf(e.type)!==-1?n="compress":e?.type&&this.mime_doc.indexOf(e.type)!==-1?n="doc":e?.type&&this.mime_xsl.indexOf(e.type)!==-1?n="xls":e?.type&&this.mime_ppt.indexOf(e.type)!==-1&&(n="ppt"),n==="application"&&e?.name&&(n=this.fileTypeDetection(e.name)),n}static fileTypeDetection(e){let n={jpg:"image",jpeg:"image",tif:"image",psd:"image",bmp:"image",png:"image",nef:"image",tiff:"image",cr2:"image",dwg:"image",cdr:"image",ai:"image",indd:"image",pin:"image",cdp:"image",skp:"image",stp:"image","3dm":"image",mp3:"audio",wav:"audio",wma:"audio",mod:"audio",m4a:"audio",compress:"compress",zip:"compress",rar:"compress","7z":"compress",lz:"compress",z01:"compress",bz2:"compress",gz:"compress",pdf:"pdf",xls:"xls",xlsx:"xls",ods:"xls",mp4:"video",avi:"video",wmv:"video",mpg:"video",mts:"video",flv:"video","3gp":"video",vob:"video",m4v:"video",mpeg:"video",m2ts:"video",mov:"video",doc:"doc",docx:"doc",eps:"doc",txt:"doc",odt:"doc",rtf:"doc",ppt:"ppt",pptx:"ppt",pps:"ppt",ppsx:"ppt",odp:"ppt"},o=e.split(".");if(o.length<2)return"application";let r=o[o.length-1].toLowerCase();return n[r]===void 0?"application":n[r]}}return t.mime_doc=["application/msword","application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.wordprocessingml.template","application/vnd.ms-word.document.macroEnabled.12","application/vnd.ms-word.template.macroEnabled.12"],t.mime_xsl=["application/vnd.ms-excel","application/vnd.ms-excel","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.openxmlformats-officedocument.spreadsheetml.template","application/vnd.ms-excel.sheet.macroEnabled.12","application/vnd.ms-excel.template.macroEnabled.12","application/vnd.ms-excel.addin.macroEnabled.12","application/vnd.ms-excel.sheet.binary.macroEnabled.12"],t.mime_ppt=["application/vnd.ms-powerpoint","application/vnd.ms-powerpoint","application/vnd.ms-powerpoint","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.presentationml.template","application/vnd.openxmlformats-officedocument.presentationml.slideshow","application/vnd.ms-powerpoint.addin.macroEnabled.12","application/vnd.ms-powerpoint.presentation.macroEnabled.12","application/vnd.ms-powerpoint.presentation.macroEnabled.12","application/vnd.ms-powerpoint.slideshow.macroEnabled.12"],t.mime_psd=["image/photoshop","image/x-photoshop","image/psd","application/photoshop","application/psd","zz-application/zz-winassoc-psd"],t.mime_compress=["application/x-gtar","application/x-gcompress","application/compress","application/x-tar","application/x-rar-compressed","application/octet-stream","application/x-zip-compressed","application/zip-compressed","application/x-7z-compressed","application/gzip","application/x-bzip2"],t})();function doe(t){return File&&t instanceof File}var Ka=class{constructor(i){this.isUploading=!1,this.queue=[],this.progress=0,this._nextIndex=0,this.options={autoUpload:!1,isHTML5:!0,filters:[],removeAfterUpload:!1,disableMultipart:!1,formatDataFunction:e=>e._file,formatDataFunctionIsAsync:!1,url:""},this.setOptions(i),this.response=new ve}setOptions(i){this.options=Object.assign(this.options,i),this.authToken=this.options.authToken,this.authTokenHeader=this.options.authTokenHeader||"Authorization",this.autoUpload=this.options.autoUpload,this.options.filters?.unshift({name:"queueLimit",fn:this._queueLimitFilter}),this.options.maxFileSize&&this.options.filters?.unshift({name:"fileSize",fn:this._fileSizeFilter}),this.options.allowedFileType&&this.options.filters?.unshift({name:"fileType",fn:this._fileTypeFilter}),this.options.allowedMimeType&&this.options.filters?.unshift({name:"mimeType",fn:this._mimeTypeFilter});for(let e=0;e<this.queue.length;e++)this.queue[e].url=this.options.url}addToQueue(i,e,n){let o=e,r=[];for(let p of i)r.push(p);let a=this._getFilters(n),c=this.queue.length,m=[];r.map(p=>{o||(o=this.options);let h=new Ov(p);if(this._isValidFile(h,a,o)){let g=new e3(this,p,o);m.push(g),this.queue.push(g),this._onAfterAddingFile(g)}else if(this._failFilterIndex){let g=a[this._failFilterIndex];this._onWhenAddingFileFailed(h,g,o)}}),this.queue.length!==c&&(this._onAfterAddingAll(m),this.progress=this._getTotalProgress()),this._render(),this.options.autoUpload&&this.uploadAll()}removeFromQueue(i){let e=this.getIndexOfItem(i),n=this.queue[e];n.isUploading&&n.cancel(),this.queue.splice(e,1),this.progress=this._getTotalProgress()}clearQueue(){for(;this.queue.length;)this.queue[0].remove();this.progress=0}uploadItem(i){let e=this.getIndexOfItem(i),n=this.queue[e],o=this.options.isHTML5?"_xhrTransport":"_iframeTransport";n._prepareToUploading(),!this.isUploading&&(this.isUploading=!0,this[o](n))}cancelItem(i){let e=this.getIndexOfItem(i),n=this.queue[e],o=this.options.isHTML5?n._xhr:n._form;n&&n.isUploading&&o.abort()}uploadAll(){let i=this.getNotUploadedItems().filter(e=>!e.isUploading);i.length&&(i.map(e=>e._prepareToUploading()),i[0].upload())}cancelAll(){this.getNotUploadedItems().map(e=>e.cancel())}isFile(i){return doe(i)}isFileLikeObject(i){return i instanceof Ov}getIndexOfItem(i){return typeof i=="number"?i:this.queue.indexOf(i)}getNotUploadedItems(){return this.queue.filter(i=>!i.isUploaded)}getReadyItems(){return this.queue.filter(i=>i.isReady&&!i.isUploading).sort((i,e)=>i.index-e.index)}onAfterAddingAll(i){return{fileItems:i}}onBuildItemForm(i,e){return{fileItem:i,form:e}}onAfterAddingFile(i){return{fileItem:i}}onWhenAddingFileFailed(i,e,n){return{item:i,filter:e,options:n}}onBeforeUploadItem(i){return{fileItem:i}}onProgressItem(i,e){return{fileItem:i,progress:e}}onProgressAll(i){return{progress:i}}onSuccessItem(i,e,n,o){return{item:i,response:e,status:n,headers:o}}onErrorItem(i,e,n,o){return{item:i,response:e,status:n,headers:o}}onCancelItem(i,e,n,o){return{item:i,response:e,status:n,headers:o}}onCompleteItem(i,e,n,o){return{item:i,response:e,status:n,headers:o}}onCompleteAll(){}_mimeTypeFilter(i){return!(i?.type&&this.options.allowedMimeType&&this.options.allowedMimeType?.indexOf(i.type)===-1)}_fileSizeFilter(i){return!(this.options.maxFileSize&&i.size>this.options.maxFileSize)}_fileTypeFilter(i){return!(this.options.allowedFileType&&this.options.allowedFileType.indexOf(coe.getMimeClass(i))===-1)}_onErrorItem(i,e,n,o){i._onError(e,n,o),this.onErrorItem(i,e,n,o)}_onCompleteItem(i,e,n,o){i._onComplete(e,n,o),this.onCompleteItem(i,e,n,o);let r=this.getReadyItems()[0];if(this.isUploading=!1,r){r.upload();return}this.onCompleteAll(),this.progress=this._getTotalProgress(),this._render()}_headersGetter(i){return e=>e?i[e.toLowerCase()]||void 0:i}_xhrTransport(i){let e=this,n=i._xhr=new XMLHttpRequest,o;if(this._onBeforeUploadItem(i),typeof i._file.size!="number")throw new TypeError("The file specified is no longer valid");if(this.options.disableMultipart)this.options.formatDataFunction&&(o=this.options.formatDataFunction(i));else{o=new FormData,this._onBuildItemForm(i,o);let r=()=>o.append(i.alias,i._file,i.file.name);this.options.parametersBeforeFiles||r(),this.options.additionalParameter!==void 0&&Object.keys(this.options.additionalParameter).forEach(a=>{let c=this.options.additionalParameter?.[a];typeof c=="string"&&c.indexOf("{{file_name}}")>=0&&i.file?.name&&(c=c.replace("{{file_name}}",i.file.name)),o.append(a,c)}),r&&this.options.parametersBeforeFiles&&r()}if(n.upload.onprogress=r=>{let a=Math.round(r.lengthComputable?r.loaded*100/r.total:0);this._onProgressItem(i,a)},n.onload=()=>{let r=this._parseHeaders(n.getAllResponseHeaders()),a=this._transformResponse(n.response,r),m=`_on${this._isSuccessCode(n.status)?"Success":"Error"}Item`;this[m](i,a,n.status,r),this._onCompleteItem(i,a,n.status,r)},n.onerror=()=>{let r=this._parseHeaders(n.getAllResponseHeaders()),a=this._transformResponse(n.response,r);this._onErrorItem(i,a,n.status,r),this._onCompleteItem(i,a,n.status,r)},n.onabort=()=>{let r=this._parseHeaders(n.getAllResponseHeaders()),a=this._transformResponse(n.response,r);this._onCancelItem(i,a,n.status,r),this._onCompleteItem(i,a,n.status,r)},i.method&&i.url&&n.open(i.method,i.url,!0),n.withCredentials=i.withCredentials,this.options.headers)for(let r of this.options.headers)n.setRequestHeader(r.name,r.value);if(i.headers.length)for(let r of i.headers)n.setRequestHeader(r.name,r.value);this.authToken&&this.authTokenHeader&&n.setRequestHeader(this.authTokenHeader,this.authToken),n.onreadystatechange=function(){n.readyState==XMLHttpRequest.DONE&&e.response.emit(n.responseText)},this.options.formatDataFunctionIsAsync?o.then(r=>n.send(JSON.stringify(r))):n.send(o),this._render()}_getTotalProgress(i=0){if(this.options.removeAfterUpload)return i;let e=this.getNotUploadedItems().length,n=e?this.queue.length-e:this.queue.length,o=100/this.queue.length,r=i*o/100;return Math.round(n*o+r)}_getFilters(i){if(!i)return this.options?.filters||[];if(Array.isArray(i))return i;if(typeof i=="string"){let e=i.match(/[^\s,]+/g);return this.options?.filters||[].filter(n=>e?.indexOf(n.name)!==-1)}return this.options?.filters||[]}_render(){}_queueLimitFilter(){return this.options.queueLimit===void 0||this.queue.length<this.options.queueLimit}_isValidFile(i,e,n){return this._failFilterIndex=-1,e.length?e.every(o=>(this._failFilterIndex&&this._failFilterIndex++,o.fn.call(this,i,n))):!0}_isSuccessCode(i){return i>=200&&i<300||i===304}_transformResponse(i,e){return i}_parseHeaders(i){let e={},n,o,r;return i&&i.split(`
|
||
`).map(a=>{r=a.indexOf(":"),n=a.slice(0,r).trim().toLowerCase(),o=a.slice(r+1).trim(),n&&(e[n]=e[n]?e[n]+", "+o:o)}),e}_onWhenAddingFileFailed(i,e,n){this.onWhenAddingFileFailed(i,e,n)}_onAfterAddingFile(i){this.onAfterAddingFile(i)}_onAfterAddingAll(i){this.onAfterAddingAll(i)}_onBeforeUploadItem(i){i._onBeforeUpload(),this.onBeforeUploadItem(i)}_onBuildItemForm(i,e){i._onBuildForm(e),this.onBuildItemForm(i,e)}_onProgressItem(i,e){let n=this._getTotalProgress(e);this.progress=n,i._onProgress(e),this.onProgressItem(i,e),this.onProgressAll(n),this._render()}_onSuccessItem(i,e,n,o){i._onSuccess(e,n,o),this.onSuccessItem(i,e,n,o)}_onCancelItem(i,e,n,o){i._onCancel(e,n,o),this.onCancelItem(i,e,n,o)}};var Gc=(()=>{class t{constructor(e){this.onFileSelected=new ve,this.element=e}getOptions(){return this.uploader?.options}getFilters(){return""}isEmptyAfterSelection(){return!!this.element.nativeElement.attributes.multiple}onChange(){let e=this.element.nativeElement.files,n=this.getOptions(),o=this.getFilters();this.uploader?.addToQueue(e,n,o),this.onFileSelected.emit(e),this.isEmptyAfterSelection()&&(this.element.nativeElement.value="")}}return t.\u0275fac=function(e){return new(e||t)(st(Lt))},t.\u0275dir=ft({type:t,selectors:[["","ng2FileSelect",""]],hostBindings:function(e,n){e&1&&v("change",function(){return n.onChange()})},inputs:{uploader:"uploader"},outputs:{onFileSelected:"onFileSelected"},standalone:!1}),t})(),xl=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=Bt({type:t}),t.\u0275inj=Ft({imports:[Z]}),t})();var Un="primary",qv=Symbol("RouteTitle"),r3=class{params;constructor(i){this.params=i||{}}has(i){return Object.prototype.hasOwnProperty.call(this.params,i)}get(i){if(this.has(i)){let e=this.params[i];return Array.isArray(e)?e[0]:e}return null}getAll(i){if(this.has(i)){let e=this.params[i];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}};function Gu(t){return new r3(t)}function t3(t,i,e){for(let n=0;n<t.length;n++){let o=t[n],r=i[n];if(o[0]===":")e[o.substring(1)]=r;else if(o!==r.path)return!1}return!0}function WB(t,i,e){let n=e.path.split("/"),o=n.indexOf("**");if(o===-1){if(n.length>t.length||e.pathMatch==="full"&&(i.hasChildren()||n.length<t.length))return null;let m={},p=t.slice(0,n.length);return t3(n,p,m)?{consumed:p,posParams:m}:null}if(o!==n.lastIndexOf("**"))return null;let r=n.slice(0,o),a=n.slice(o+1);if(r.length+a.length>t.length||e.pathMatch==="full"&&i.hasChildren()&&e.path!=="**")return null;let c={};return!t3(r,t.slice(0,r.length),c)||!t3(a,t.slice(t.length-a.length),c)?null:{consumed:t,posParams:c}}function py(t){return new Promise((i,e)=>{t.pipe(Cd()).subscribe({next:n=>i(n),error:n=>e(n)})})}function poe(t,i){if(t.length!==i.length)return!1;for(let e=0;e<t.length;++e)if(!Wc(t[e],i[e]))return!1;return!0}function Wc(t,i){let e=t?a3(t):void 0,n=i?a3(i):void 0;if(!e||!n||e.length!=n.length)return!1;let o;for(let r=0;r<e.length;r++)if(o=e[r],!qB(t[o],i[o]))return!1;return!0}function a3(t){return[...Object.keys(t),...Object.getOwnPropertySymbols(t)]}function qB(t,i){if(Array.isArray(t)&&Array.isArray(i)){if(t.length!==i.length)return!1;let e=[...t].sort(),n=[...i].sort();return e.every((o,r)=>n[r]===o)}else return t===i}function uoe(t){return t.length>0?t[t.length-1]:null}function Wu(t){return cm(t)?t:E5(t)?or(Promise.resolve(t)):xt(t)}function XB(t){return cm(t)?py(t):Promise.resolve(t)}var hoe={exact:YB,subset:KB},QB={exact:foe,subset:goe,ignored:()=>!0},C3={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},Vv={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};function x3(t,i,e){let n=t instanceof Za?t:i.parseUrl(t);return ri(()=>s3(i.lastSuccessfulNavigation()?.finalUrl??new Za,n,H(H({},Vv),e)))}function s3(t,i,e){return hoe[e.paths](t.root,i.root,e.matrixParams)&&QB[e.queryParams](t.queryParams,i.queryParams)&&!(e.fragment==="exact"&&t.fragment!==i.fragment)}function foe(t,i){return Wc(t,i)}function YB(t,i,e){if(!Uu(t.segments,i.segments)||!cy(t.segments,i.segments,e)||t.numberOfChildren!==i.numberOfChildren)return!1;for(let n in i.children)if(!t.children[n]||!YB(t.children[n],i.children[n],e))return!1;return!0}function goe(t,i){return Object.keys(i).length<=Object.keys(t).length&&Object.keys(i).every(e=>qB(t[e],i[e]))}function KB(t,i,e){return ZB(t,i,i.segments,e)}function ZB(t,i,e,n){if(t.segments.length>e.length){let o=t.segments.slice(0,e.length);return!(!Uu(o,e)||i.hasChildren()||!cy(o,e,n))}else if(t.segments.length===e.length){if(!Uu(t.segments,e)||!cy(t.segments,e,n))return!1;for(let o in i.children)if(!t.children[o]||!KB(t.children[o],i.children[o],n))return!1;return!0}else{let o=e.slice(0,t.segments.length),r=e.slice(t.segments.length);return!Uu(t.segments,o)||!cy(t.segments,o,n)||!t.children[Un]?!1:ZB(t.children[Un],i,r,n)}}function cy(t,i,e){return i.every((n,o)=>QB[e](t[o].parameters,n.parameters))}var Za=class{root;queryParams;fragment;_queryParamMap;constructor(i=new ao([],{}),e={},n=null){this.root=i,this.queryParams=e,this.fragment=n}get queryParamMap(){return this._queryParamMap??=Gu(this.queryParams),this._queryParamMap}toString(){return boe.serialize(this)}},ao=class{segments;children;parent=null;constructor(i,e){this.segments=i,this.children=e,Object.values(e).forEach(n=>n.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return dy(this)}},Qm=class{path;parameters;_parameterMap;constructor(i,e){this.path=i,this.parameters=e}get parameterMap(){return this._parameterMap??=Gu(this.parameters),this._parameterMap}toString(){return e7(this)}};function _oe(t,i){return Uu(t,i)&&t.every((e,n)=>Wc(e.parameters,i[n].parameters))}function Uu(t,i){return t.length!==i.length?!1:t.every((e,n)=>e.path===i[n].path)}function voe(t,i){let e=[];return Object.entries(t.children).forEach(([n,o])=>{n===Un&&(e=e.concat(i(o,n)))}),Object.entries(t.children).forEach(([n,o])=>{n!==Un&&(e=e.concat(i(o,n)))}),e}var Km=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:()=>new Bd,providedIn:"root"})}return t})(),Bd=class{parse(i){let e=new c3(i);return new Za(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(i){let e=`/${Rv(i.root,!0)}`,n=yoe(i.queryParams),o=typeof i.fragment=="string"?`#${Coe(i.fragment)}`:"";return`${e}${n}${o}`}},boe=new Bd;function dy(t){return t.segments.map(i=>e7(i)).join("/")}function Rv(t,i){if(!t.hasChildren())return dy(t);if(i){let e=t.children[Un]?Rv(t.children[Un],!1):"",n=[];return Object.entries(t.children).forEach(([o,r])=>{o!==Un&&n.push(`${o}:${Rv(r,!1)}`)}),n.length>0?`${e}(${n.join("//")})`:e}else{let e=voe(t,(n,o)=>o===Un?[Rv(t.children[Un],!1)]:[`${o}:${Rv(n,!1)}`]);return Object.keys(t.children).length===1&&t.children[Un]!=null?`${dy(t)}/${e[0]}`:`${dy(t)}/(${e.join("//")})`}}function JB(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function sy(t){return JB(t).replace(/%3B/gi,";")}function Coe(t){return encodeURI(t)}function l3(t){return JB(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function my(t){return decodeURIComponent(t)}function zB(t){return my(t.replace(/\+/g,"%20"))}function e7(t){return`${l3(t.path)}${xoe(t.parameters)}`}function xoe(t){return Object.entries(t).map(([i,e])=>`;${l3(i)}=${l3(e)}`).join("")}function yoe(t){let i=Object.entries(t).map(([e,n])=>Array.isArray(n)?n.map(o=>`${sy(e)}=${sy(o)}`).join("&"):`${sy(e)}=${sy(n)}`).filter(e=>e);return i.length?`?${i.join("&")}`:""}var Soe=/^[^\/()?;#]+/;function n3(t){let i=t.match(Soe);return i?i[0]:""}var woe=/^[^\/()?;=#]+/;function Moe(t){let i=t.match(woe);return i?i[0]:""}var koe=/^[^=?&#]+/;function Toe(t){let i=t.match(koe);return i?i[0]:""}var Eoe=/^[^&#]+/;function Doe(t){let i=t.match(Eoe);return i?i[0]:""}var c3=class{url;remaining;constructor(i){this.url=i,this.remaining=i}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new ao([],{}):new ao([],this.parseChildren())}parseQueryParams(){let i={};if(this.consumeOptional("?"))do this.parseQueryParam(i);while(this.consumeOptional("&"));return i}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(i=0){if(i>50)throw new vn(4010,!1);if(this.remaining==="")return{};this.consumeOptional("/");let e=[];for(this.peekStartsWith("(")||e.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegment());let n={};this.peekStartsWith("/(")&&(this.capture("/"),n=this.parseParens(!0,i));let o={};return this.peekStartsWith("(")&&(o=this.parseParens(!1,i)),(e.length>0||Object.keys(n).length>0)&&(o[Un]=new ao(e,n)),o}parseSegment(){let i=n3(this.remaining);if(i===""&&this.peekStartsWith(";"))throw new vn(4009,!1);return this.capture(i),new Qm(my(i),this.parseMatrixParams())}parseMatrixParams(){let i={};for(;this.consumeOptional(";");)this.parseParam(i);return i}parseParam(i){let e=Moe(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){let o=n3(this.remaining);o&&(n=o,this.capture(n))}i[my(e)]=my(n)}parseQueryParam(i){let e=Toe(this.remaining);if(!e)return;this.capture(e);let n="";if(this.consumeOptional("=")){let a=Doe(this.remaining);a&&(n=a,this.capture(n))}let o=zB(e),r=zB(n);if(i.hasOwnProperty(o)){let a=i[o];Array.isArray(a)||(a=[a],i[o]=a),a.push(r)}else i[o]=r}parseParens(i,e){let n={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let o=n3(this.remaining),r=this.remaining[o.length];if(r!=="/"&&r!==")"&&r!==";")throw new vn(4010,!1);let a;o.indexOf(":")>-1?(a=o.slice(0,o.indexOf(":")),this.capture(a),this.capture(":")):i&&(a=Un);let c=this.parseChildren(e+1);n[a??Un]=Object.keys(c).length===1&&c[Un]?c[Un]:new ao([],c),this.consumeOptional("//")}return n}peekStartsWith(i){return this.remaining.startsWith(i)}consumeOptional(i){return this.peekStartsWith(i)?(this.remaining=this.remaining.substring(i.length),!0):!1}capture(i){if(!this.consumeOptional(i))throw new vn(4011,!1)}};function t7(t){return t.segments.length>0?new ao([],{[Un]:t}):t}function n7(t){let i={};for(let[n,o]of Object.entries(t.children)){let r=n7(o);if(n===Un&&r.segments.length===0&&r.hasChildren())for(let[a,c]of Object.entries(r.children))i[a]=c;else(r.segments.length>0||r.hasChildren())&&(i[n]=r)}let e=new ao(t.segments,i);return Poe(e)}function Poe(t){if(t.numberOfChildren===1&&t.children[Un]){let i=t.children[Un];return new ao(t.segments.concat(i.segments),i.children)}return t}function Ym(t){return t instanceof Za}function i7(t,i,e=null,n=null,o=new Bd){let r=o7(t);return r7(r,i,e,n,o)}function o7(t){let i;function e(r){let a={};for(let m of r.children){let p=e(m);a[m.outlet]=p}let c=new ao(r.url,a);return r===t&&(i=c),c}let n=e(t.root),o=t7(n);return i??o}function r7(t,i,e,n,o){let r=t;for(;r.parent;)r=r.parent;if(i.length===0)return i3(r,r,r,e,n,o);let a=Ioe(i);if(a.toRoot())return i3(r,r,new ao([],{}),e,n,o);let c=Aoe(a,r,t),m=c.processChildren?Lv(c.segmentGroup,c.index,a.commands):s7(c.segmentGroup,c.index,a.commands);return i3(r,c.segmentGroup,m,e,n,o)}function uy(t){return typeof t=="object"&&t!=null&&!t.outlets&&!t.segmentPath}function zv(t){return typeof t=="object"&&t!=null&&t.outlets}function jB(t,i,e){t||="\u0275";let n=new Za;return n.queryParams={[t]:i},e.parse(e.serialize(n)).queryParams[t]}function i3(t,i,e,n,o,r){let a={};for(let[p,h]of Object.entries(n??{}))a[p]=Array.isArray(h)?h.map(g=>jB(p,g,r)):jB(p,h,r);let c;t===i?c=e:c=a7(t,i,e);let m=t7(n7(c));return new Za(m,a,o)}function a7(t,i,e){let n={};return Object.entries(t.children).forEach(([o,r])=>{r===i?n[o]=e:n[o]=a7(r,i,e)}),new ao(t.segments,n)}var hy=class{isAbsolute;numberOfDoubleDots;commands;constructor(i,e,n){if(this.isAbsolute=i,this.numberOfDoubleDots=e,this.commands=n,i&&n.length>0&&uy(n[0]))throw new vn(4003,!1);let o=n.find(zv);if(o&&o!==uoe(n))throw new vn(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function Ioe(t){if(typeof t[0]=="string"&&t.length===1&&t[0]==="/")return new hy(!0,0,t);let i=0,e=!1,n=t.reduce((o,r,a)=>{if(typeof r=="object"&&r!=null){if(r.outlets){let c={};return Object.entries(r.outlets).forEach(([m,p])=>{c[m]=typeof p=="string"?p.split("/"):p}),[...o,{outlets:c}]}if(r.segmentPath)return[...o,r.segmentPath]}return typeof r!="string"?[...o,r]:a===0?(r.split("/").forEach((c,m)=>{m==0&&c==="."||(m==0&&c===""?e=!0:c===".."?i++:c!=""&&o.push(c))}),o):[...o,r]},[]);return new hy(e,i,n)}var Lf=class{segmentGroup;processChildren;index;constructor(i,e,n){this.segmentGroup=i,this.processChildren=e,this.index=n}};function Aoe(t,i,e){if(t.isAbsolute)return new Lf(i,!0,0);if(!e)return new Lf(i,!1,NaN);if(e.parent===null)return new Lf(e,!0,0);let n=uy(t.commands[0])?0:1,o=e.segments.length-1+n;return Ooe(e,o,t.numberOfDoubleDots)}function Ooe(t,i,e){let n=t,o=i,r=e;for(;r>o;){if(r-=o,n=n.parent,!n)throw new vn(4005,!1);o=n.segments.length}return new Lf(n,!1,o-r)}function Noe(t){return zv(t[0])?t[0].outlets:{[Un]:t}}function s7(t,i,e){if(t??=new ao([],{}),t.segments.length===0&&t.hasChildren())return Lv(t,i,e);let n=Roe(t,i,e),o=e.slice(n.commandIndex);if(n.match&&n.pathIndex<t.segments.length){let r=new ao(t.segments.slice(0,n.pathIndex),{});return r.children[Un]=new ao(t.segments.slice(n.pathIndex),t.children),Lv(r,0,o)}else return n.match&&o.length===0?new ao(t.segments,{}):n.match&&!t.hasChildren()?d3(t,i,e):n.match?Lv(t,0,o):d3(t,i,e)}function Lv(t,i,e){if(e.length===0)return new ao(t.segments,{});{let n=Noe(e),o={};if(Object.keys(n).some(r=>r!==Un)&&t.children[Un]&&t.numberOfChildren===1&&t.children[Un].segments.length===0){let r=Lv(t.children[Un],i,e);return new ao(t.segments,r.children)}return Object.entries(n).forEach(([r,a])=>{typeof a=="string"&&(a=[a]),a!==null&&(o[r]=s7(t.children[r],i,a))}),Object.entries(t.children).forEach(([r,a])=>{n[r]===void 0&&(o[r]=a)}),new ao(t.segments,o)}}function Roe(t,i,e){let n=0,o=i,r={match:!1,pathIndex:0,commandIndex:0};for(;o<t.segments.length;){if(n>=e.length)return r;let a=t.segments[o],c=e[n];if(zv(c))break;let m=`${c}`,p=n<e.length-1?e[n+1]:null;if(o>0&&m===void 0)break;if(m&&p&&typeof p=="object"&&p.outlets===void 0){if(!HB(m,p,a))return r;n+=2}else{if(!HB(m,{},a))return r;n++}o++}return{match:!0,pathIndex:o,commandIndex:n}}function d3(t,i,e){let n=t.segments.slice(0,i),o=0;for(;o<e.length;){let r=e[o];if(zv(r)){let m=Foe(r.outlets);return new ao(n,m)}if(o===0&&uy(e[0])){let m=t.segments[i];n.push(new Qm(m.path,$B(e[0]))),o++;continue}let a=zv(r)?r.outlets[Un]:`${r}`,c=o<e.length-1?e[o+1]:null;a&&c&&uy(c)?(n.push(new Qm(a,$B(c))),o+=2):(n.push(new Qm(a,{})),o++)}return new ao(n,{})}function Foe(t){let i={};return Object.entries(t).forEach(([e,n])=>{typeof n=="string"&&(n=[n]),n!==null&&(i[e]=d3(new ao([],{}),0,n))}),i}function $B(t){let i={};return Object.entries(t).forEach(([e,n])=>i[e]=`${n}`),i}function HB(t,i,e){return t==e.path&&Wc(i,e.parameters)}var Bf="imperative",Xr=(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})(Xr||{}),Qs=class{id;url;constructor(i,e){this.id=i,this.url=e}},Xc=class extends Qs{type=Xr.NavigationStart;navigationTrigger;restoredState;constructor(i,e,n="imperative",o=null){super(i,e),this.navigationTrigger=n,this.restoredState=o}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},Or=class extends Qs{urlAfterRedirects;type=Xr.NavigationEnd;constructor(i,e,n){super(i,e),this.urlAfterRedirects=n}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},Aa=(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})(Aa||{}),zf=(function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t})(zf||{}),xs=class extends Qs{reason;code;type=Xr.NavigationCancel;constructor(i,e,n,o){super(i,e),this.reason=n,this.code=o}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}};function l7(t){return t instanceof xs&&(t.code===Aa.Redirect||t.code===Aa.SupersededByNewNavigation)}var Qc=class extends Qs{reason;code;type=Xr.NavigationSkipped;constructor(i,e,n,o){super(i,e),this.reason=n,this.code=o}},Vd=class extends Qs{error;target;type=Xr.NavigationError;constructor(i,e,n,o){super(i,e),this.error=n,this.target=o}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},jv=class extends Qs{urlAfterRedirects;state;type=Xr.RoutesRecognized;constructor(i,e,n,o){super(i,e),this.urlAfterRedirects=n,this.state=o}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},fy=class extends Qs{urlAfterRedirects;state;type=Xr.GuardsCheckStart;constructor(i,e,n,o){super(i,e),this.urlAfterRedirects=n,this.state=o}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},gy=class extends Qs{urlAfterRedirects;state;shouldActivate;type=Xr.GuardsCheckEnd;constructor(i,e,n,o,r){super(i,e),this.urlAfterRedirects=n,this.state=o,this.shouldActivate=r}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},_y=class extends Qs{urlAfterRedirects;state;type=Xr.ResolveStart;constructor(i,e,n,o){super(i,e),this.urlAfterRedirects=n,this.state=o}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},vy=class extends Qs{urlAfterRedirects;state;type=Xr.ResolveEnd;constructor(i,e,n,o){super(i,e),this.urlAfterRedirects=n,this.state=o}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},by=class{route;type=Xr.RouteConfigLoadStart;constructor(i){this.route=i}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},Cy=class{route;type=Xr.RouteConfigLoadEnd;constructor(i){this.route=i}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},xy=class{snapshot;type=Xr.ChildActivationStart;constructor(i){this.snapshot=i}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},yy=class{snapshot;type=Xr.ChildActivationEnd;constructor(i){this.snapshot=i}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Sy=class{snapshot;type=Xr.ActivationStart;constructor(i){this.snapshot=i}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},wy=class{snapshot;type=Xr.ActivationEnd;constructor(i){this.snapshot=i}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},jf=class{routerEvent;position;anchor;scrollBehavior;type=Xr.Scroll;constructor(i,e,n,o){this.routerEvent=i,this.position=e,this.anchor=n,this.scrollBehavior=o}toString(){let i=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${i}')`}},$f=class{},$v=class{},Hf=class{url;navigationBehaviorOptions;constructor(i,e){this.url=i,this.navigationBehaviorOptions=e}};function Loe(t){return!(t instanceof $f)&&!(t instanceof Hf)&&!(t instanceof $v)}var My=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return this.route?.snapshot._environmentInjector??this.rootInjector}constructor(i){this.rootInjector=i,this.children=new qu(this.rootInjector)}},qu=(()=>{class t{rootInjector;contexts=new Map;constructor(e){this.rootInjector=e}onChildOutletCreated(e,n){let o=this.getOrCreateContext(e);o.outlet=n,this.contexts.set(e,o)}onChildOutletDestroyed(e){let n=this.getContext(e);n&&(n.outlet=null,n.attachRef=null)}onOutletDeactivated(){let e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let n=this.getContext(e);return n||(n=new My(this.rootInjector),this.contexts.set(e,n)),n}getContext(e){return this.contexts.get(e)||null}static \u0275fac=function(n){return new(n||t)(ge(Xl))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ky=class{_root;constructor(i){this._root=i}get root(){return this._root.value}parent(i){let e=this.pathFromRoot(i);return e.length>1?e[e.length-2]:null}children(i){let e=m3(i,this._root);return e?e.children.map(n=>n.value):[]}firstChild(i){let e=m3(i,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(i){let e=p3(i,this._root);return e.length<2?[]:e[e.length-2].children.map(o=>o.value).filter(o=>o!==i)}pathFromRoot(i){return p3(i,this._root).map(e=>e.value)}};function m3(t,i){if(t===i.value)return i;for(let e of i.children){let n=m3(t,e);if(n)return n}return null}function p3(t,i){if(t===i.value)return[i];for(let e of i.children){let n=p3(t,e);if(n.length)return n.unshift(i),n}return[]}var Xs=class{value;children;constructor(i,e){this.value=i,this.children=e}toString(){return`TreeNode(${this.value})`}};function Ff(t){let i={};return t&&t.children.forEach(e=>i[e.value.outlet]=e),i}var Hv=class extends ky{snapshot;constructor(i,e){super(i),this.snapshot=e,S3(this,i)}toString(){return this.snapshot.toString()}};function c7(t,i){let e=Boe(t,i),n=new qt([new Qm("",{})]),o=new qt({}),r=new qt({}),a=new qt({}),c=new qt(""),m=new Ye(n,o,a,c,r,Un,t,e.root);return m.snapshot=e.root,new Hv(new Xs(m,[]),e)}function Boe(t,i){let e={},n={},o={},a=new Uf([],e,o,"",n,Un,t,null,{},i);return new Uv("",new Xs(a,[]))}var Ye=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(i,e,n,o,r,a,c,m){this.urlSubject=i,this.paramsSubject=e,this.queryParamsSubject=n,this.fragmentSubject=o,this.dataSubject=r,this.outlet=a,this.component=c,this._futureSnapshot=m,this.title=this.dataSubject?.pipe(yt(p=>p[qv]))??xt(void 0),this.url=i,this.params=e,this.queryParams=n,this.fragment=o,this.data=r}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(yt(i=>Gu(i))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(yt(i=>Gu(i))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function y3(t,i,e="emptyOnly"){let n,{routeConfig:o}=t;return i!==null&&(e==="always"||o?.path===""||!i.component&&!i.routeConfig?.loadComponent)?n={params:H(H({},i.params),t.params),data:H(H({},i.data),t.data),resolve:H(H(H(H({},t.data),i.data),o?.data),t._resolvedData)}:n={params:H({},t.params),data:H({},t.data),resolve:H(H({},t.data),t._resolvedData??{})},o&&m7(o)&&(n.resolve[qv]=o.title),n}var Uf=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;_environmentInjector;get title(){return this.data?.[qv]}constructor(i,e,n,o,r,a,c,m,p,h){this.url=i,this.params=e,this.queryParams=n,this.fragment=o,this.data=r,this.outlet=a,this.component=c,this.routeConfig=m,this._resolve=p,this._environmentInjector=h}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??=Gu(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=Gu(this.queryParams),this._queryParamMap}toString(){let i=this.url.map(n=>n.toString()).join("/"),e=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${i}', path:'${e}')`}},Uv=class extends ky{url;constructor(i,e){super(e),this.url=i,S3(this,e)}toString(){return d7(this._root)}};function S3(t,i){i.value._routerState=t,i.children.forEach(e=>S3(t,e))}function d7(t){let i=t.children.length>0?` { ${t.children.map(d7).join(", ")} } `:"";return`${t.value}${i}`}function o3(t){if(t.snapshot){let i=t.snapshot,e=t._futureSnapshot;t.snapshot=e,Wc(i.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),i.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),Wc(i.params,e.params)||t.paramsSubject.next(e.params),poe(i.url,e.url)||t.urlSubject.next(e.url),Wc(i.data,e.data)||t.dataSubject.next(e.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function u3(t,i){let e=Wc(t.params,i.params)&&_oe(t.url,i.url),n=!t.parent!=!i.parent;return e&&!n&&(!t.parent||u3(t.parent,i.parent))}function m7(t){return typeof t.title=="string"||t.title===null}var p7=new kt(""),zd=(()=>{class t{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=Un;activateEvents=new ve;deactivateEvents=new ve;attachEvents=new ve;detachEvents=new ve;routerOutletData=oe();parentContexts=f(qu);location=f(co);changeDetector=f(K);inputBinder=f(Xv,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(e){if(e.name){let{firstChange:n,previousValue:o}=e.name;if(n)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),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 vn(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new vn(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new vn(4012,!1);this.location.detach();let e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,n){this.activated=e,this._activatedRoute=n,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,n){if(this.isActivated)throw new vn(4013,!1);this._activatedRoute=e;let o=this.location,a=e.snapshot.component,c=this.parentContexts.getOrCreateContext(this.name).children,m=new h3(e,c,o.injector,this.routerOutletData);this.activated=o.createComponent(a,{index:o.length,injector:m,environmentInjector:n}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[un]})}return t})(),h3=class{route;childContexts;parent;outletData;constructor(i,e,n,o){this.route=i,this.childContexts=e,this.parent=n,this.outletData=o}get(i,e){return i===Ye?this.route:i===qu?this.childContexts:i===p7?this.outletData:this.parent.get(i,e)}},Xv=new kt(""),w3=(()=>{class t{outletDataSubscriptions=new Map;bindActivatedRouteToOutletComponent(e){this.unsubscribeFromRouteData(e),this.subscribeToRouteData(e)}unsubscribeFromRouteData(e){this.outletDataSubscriptions.get(e)?.unsubscribe(),this.outletDataSubscriptions.delete(e)}subscribeToRouteData(e){let{activatedRoute:n}=e,o=rr([n.queryParams,n.params,n.data]).pipe(fn(([r,a,c],m)=>(c=H(H(H({},r),a),c),m===0?xt(c):Promise.resolve(c)))).subscribe(r=>{if(!e.isActivated||!e.activatedComponentRef||e.activatedRoute!==n||n.component===null){this.unsubscribeFromRouteData(e);return}let a=B5(n.component);if(!a){this.unsubscribeFromRouteData(e);return}for(let{templateName:c}of a.inputs)e.activatedComponentRef.setInput(c,r[c])});this.outletDataSubscriptions.set(e,o)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})(),M3=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(n,o){n&1&&F(0,"router-outlet")},dependencies:[zd],encapsulation:2})}return t})();function k3(t){let i=t.children&&t.children.map(k3),e=i?tt(H({},t),{children:i}):H({},t);return!e.component&&!e.loadComponent&&(i||e.loadChildren)&&e.outlet&&e.outlet!==Un&&(e.component=M3),e}function Voe(t,i,e){let n=Gv(t,i._root,e?e._root:void 0);return new Hv(n,i)}function Gv(t,i,e){if(e&&t.shouldReuseRoute(i.value,e.value.snapshot)){let n=e.value;n._futureSnapshot=i.value;let o=zoe(t,i,e);return new Xs(n,o)}else{if(t.shouldAttach(i.value)){let r=t.retrieve(i.value);if(r!==null){let a=r.route;return a.value._futureSnapshot=i.value,a.children=i.children.map(c=>Gv(t,c)),a}}let n=joe(i.value),o=i.children.map(r=>Gv(t,r));return new Xs(n,o)}}function zoe(t,i,e){return i.children.map(n=>{for(let o of e.children)if(t.shouldReuseRoute(n.value,o.value.snapshot))return Gv(t,n,o);return Gv(t,n)})}function joe(t){return new Ye(new qt(t.url),new qt(t.params),new qt(t.queryParams),new qt(t.fragment),new qt(t.data),t.outlet,t.component,t)}var Gf=class{redirectTo;navigationBehaviorOptions;constructor(i,e){this.redirectTo=i,this.navigationBehaviorOptions=e}},u7="ngNavigationCancelingError";function Ty(t,i){let{redirectTo:e,navigationBehaviorOptions:n}=Ym(i)?{redirectTo:i,navigationBehaviorOptions:void 0}:i,o=h7(!1,Aa.Redirect);return o.url=e,o.navigationBehaviorOptions=n,o}function h7(t,i){let e=new Error(`NavigationCancelingError: ${t||""}`);return e[u7]=!0,e.cancellationCode=i,e}function $oe(t){return f7(t)&&Ym(t.url)}function f7(t){return!!t&&t[u7]}var f3=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(i,e,n,o,r){this.routeReuseStrategy=i,this.futureState=e,this.currState=n,this.forwardEvent=o,this.inputBindingEnabled=r}activate(i){let e=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,n,i),o3(this.futureState.root),this.activateChildRoutes(e,n,i)}deactivateChildRoutes(i,e,n){let o=Ff(e);i.children.forEach(r=>{let a=r.value.outlet;this.deactivateRoutes(r,o[a],n),delete o[a]}),Object.values(o).forEach(r=>{this.deactivateRouteAndItsChildren(r,n)})}deactivateRoutes(i,e,n){let o=i.value,r=e?e.value:null;if(o===r)if(o.component){let a=n.getContext(o.outlet);a&&this.deactivateChildRoutes(i,e,a.children)}else this.deactivateChildRoutes(i,e,n);else r&&this.deactivateRouteAndItsChildren(e,n)}deactivateRouteAndItsChildren(i,e){i.value.component&&this.routeReuseStrategy.shouldDetach(i.value.snapshot)?this.detachAndStoreRouteSubtree(i,e):this.deactivateRouteAndOutlet(i,e)}detachAndStoreRouteSubtree(i,e){let n=e.getContext(i.value.outlet),o=n&&i.value.component?n.children:e,r=Ff(i);for(let a of Object.values(r))this.deactivateRouteAndItsChildren(a,o);if(n&&n.outlet){let a=n.outlet.detach(),c=n.children.onOutletDeactivated();this.routeReuseStrategy.store(i.value.snapshot,{componentRef:a,route:i,contexts:c})}}deactivateRouteAndOutlet(i,e){let n=e.getContext(i.value.outlet),o=n&&i.value.component?n.children:e,r=Ff(i);for(let a of Object.values(r))this.deactivateRouteAndItsChildren(a,o);n&&(n.outlet&&(n.outlet.deactivate(),n.children.onOutletDeactivated()),n.attachRef=null,n.route=null)}activateChildRoutes(i,e,n){let o=Ff(e);i.children.forEach(r=>{this.activateRoutes(r,o[r.value.outlet],n),this.forwardEvent(new wy(r.value.snapshot))}),i.children.length&&this.forwardEvent(new yy(i.value.snapshot))}activateRoutes(i,e,n){let o=i.value,r=e?e.value:null;if(o3(o),o===r)if(o.component){let a=n.getOrCreateContext(o.outlet);this.activateChildRoutes(i,e,a.children)}else this.activateChildRoutes(i,e,n);else if(o.component){let a=n.getOrCreateContext(o.outlet);if(this.routeReuseStrategy.shouldAttach(o.snapshot)){let c=this.routeReuseStrategy.retrieve(o.snapshot);this.routeReuseStrategy.store(o.snapshot,null),a.children.onOutletReAttached(c.contexts),a.attachRef=c.componentRef,a.route=c.route.value,a.outlet&&a.outlet.attach(c.componentRef,c.route.value),o3(c.route.value),this.activateChildRoutes(i,null,a.children)}else a.attachRef=null,a.route=o,a.outlet&&a.outlet.activateWith(o,a.injector),this.activateChildRoutes(i,null,a.children)}else this.activateChildRoutes(i,null,n)}},Ey=class{path;route;constructor(i){this.path=i,this.route=this.path[this.path.length-1]}},Vf=class{component;route;constructor(i,e){this.component=i,this.route=e}};function Hoe(t,i,e){let n=t._root,o=i?i._root:null;return Fv(n,o,e,[n.value])}function Uoe(t){let i=t.routeConfig?t.routeConfig.canActivateChild:null;return!i||i.length===0?null:{node:t,guards:i}}function qf(t,i){let e=Symbol(),n=i.get(t,e);return n===e?typeof t=="function"&&!v5(t)?t:i.get(t):n}function Fv(t,i,e,n,o={canDeactivateChecks:[],canActivateChecks:[]}){let r=Ff(i);return t.children.forEach(a=>{Goe(a,r[a.value.outlet],e,n.concat([a.value]),o),delete r[a.value.outlet]}),Object.entries(r).forEach(([a,c])=>Bv(c,e.getContext(a),o)),o}function Goe(t,i,e,n,o={canDeactivateChecks:[],canActivateChecks:[]}){let r=t.value,a=i?i.value:null,c=e?e.getContext(t.value.outlet):null;if(a&&r.routeConfig===a.routeConfig){let m=Woe(a,r,r.routeConfig.runGuardsAndResolvers);m?o.canActivateChecks.push(new Ey(n)):(r.data=a.data,r._resolvedData=a._resolvedData),r.component?Fv(t,i,c?c.children:null,n,o):Fv(t,i,e,n,o),m&&c&&c.outlet&&c.outlet.isActivated&&o.canDeactivateChecks.push(new Vf(c.outlet.component,a))}else a&&Bv(i,c,o),o.canActivateChecks.push(new Ey(n)),r.component?Fv(t,null,c?c.children:null,n,o):Fv(t,null,e,n,o);return o}function Woe(t,i,e){if(typeof e=="function")return Os(i._environmentInjector,()=>e(t,i));switch(e){case"pathParamsChange":return!Uu(t.url,i.url);case"pathParamsOrQueryParamsChange":return!Uu(t.url,i.url)||!Wc(t.queryParams,i.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!u3(t,i)||!Wc(t.queryParams,i.queryParams);default:return!u3(t,i)}}function Bv(t,i,e){let n=Ff(t),o=t.value;Object.entries(n).forEach(([r,a])=>{o.component?i?Bv(a,i.children.getContext(r),e):Bv(a,null,e):Bv(a,i,e)}),o.component?i&&i.outlet&&i.outlet.isActivated?e.canDeactivateChecks.push(new Vf(i.outlet.component,o)):e.canDeactivateChecks.push(new Vf(null,o)):e.canDeactivateChecks.push(new Vf(null,o))}function Qv(t){return typeof t=="function"}function qoe(t){return typeof t=="boolean"}function Xoe(t){return t&&Qv(t.canLoad)}function Qoe(t){return t&&Qv(t.canActivate)}function Yoe(t){return t&&Qv(t.canActivateChild)}function Koe(t){return t&&Qv(t.canDeactivate)}function Zoe(t){return t&&Qv(t.canMatch)}function g7(t){return t instanceof u5||t?.name==="EmptyError"}var ly=Symbol("INITIAL_VALUE");function Wf(){return fn(t=>rr(t.map(i=>i.pipe(wi(1),li(ly)))).pipe(yt(i=>{for(let e of i)if(e!==!0){if(e===ly)return ly;if(e===!1||Joe(e))return e}return!0}),Pn(i=>i!==ly),wi(1)))}function Joe(t){return Ym(t)||t instanceof Gf}function _7(t){return t.aborted?xt(void 0).pipe(wi(1)):new _r(i=>{let e=()=>{i.next(),i.complete()};return t.addEventListener("abort",e),()=>t.removeEventListener("abort",e)})}function v7(t){return rt(_7(t))}function ere(t){return Er(i=>{let{targetSnapshot:e,currentSnapshot:n,guards:{canActivateChecks:o,canDeactivateChecks:r}}=i;return r.length===0&&o.length===0?xt(tt(H({},i),{guardsResult:!0})):tre(r,e,n).pipe(Er(a=>a&&qoe(a)?nre(e,o,t):xt(a)),yt(a=>tt(H({},i),{guardsResult:a})))})}function tre(t,i,e){return or(t).pipe(Er(n=>sre(n.component,n.route,e,i)),Cd(n=>n!==!0,!0))}function nre(t,i,e){return or(i).pipe(dm(n=>B_(ore(n.route.parent,e),ire(n.route,e),are(t,n.path),rre(t,n.route))),Cd(n=>n!==!0,!0))}function ire(t,i){return t!==null&&i&&i(new Sy(t)),xt(!0)}function ore(t,i){return t!==null&&i&&i(new xy(t)),xt(!0)}function rre(t,i){let e=i.routeConfig?i.routeConfig.canActivate:null;if(!e||e.length===0)return xt(!0);let n=e.map(o=>xc(()=>{let r=i._environmentInjector,a=qf(o,r),c=Qoe(a)?a.canActivate(i,t):Os(r,()=>a(i,t));return Wu(c).pipe(Cd())}));return xt(n).pipe(Wf())}function are(t,i){let e=i[i.length-1],o=i.slice(0,i.length-1).reverse().map(r=>Uoe(r)).filter(r=>r!==null).map(r=>xc(()=>{let a=r.guards.map(c=>{let m=r.node._environmentInjector,p=qf(c,m),h=Yoe(p)?p.canActivateChild(e,t):Os(m,()=>p(e,t));return Wu(h).pipe(Cd())});return xt(a).pipe(Wf())}));return xt(o).pipe(Wf())}function sre(t,i,e,n){let o=i&&i.routeConfig?i.routeConfig.canDeactivate:null;if(!o||o.length===0)return xt(!0);let r=o.map(a=>{let c=i._environmentInjector,m=qf(a,c),p=Koe(m)?m.canDeactivate(t,i,e,n):Os(c,()=>m(t,i,e,n));return Wu(p).pipe(Cd())});return xt(r).pipe(Wf())}function lre(t,i,e,n,o){let r=i.canLoad;if(r===void 0||r.length===0)return xt(!0);let a=r.map(c=>{let m=qf(c,t),p=Xoe(m)?m.canLoad(i,e):Os(t,()=>m(i,e)),h=Wu(p);return o?h.pipe(v7(o)):h});return xt(a).pipe(Wf(),b7(n))}function b7(t){return m5(vi(i=>{if(typeof i!="boolean")throw Ty(t,i)}),yt(i=>i===!0))}function cre(t,i,e,n,o,r){let a=i.canMatch;if(!a||a.length===0)return xt(!0);let c=a.map(m=>{let p=qf(m,t),h=Zoe(p)?p.canMatch(i,e,o):Os(t,()=>p(i,e,o));return Wu(h).pipe(v7(r))});return xt(c).pipe(Wf(),b7(n))}var Ld=class t extends Error{segmentGroup;constructor(i){super(),this.segmentGroup=i||null,Object.setPrototypeOf(this,t.prototype)}},Wv=class t extends Error{urlTree;constructor(i){super(),this.urlTree=i,Object.setPrototypeOf(this,t.prototype)}};function dre(t){throw new vn(4e3,!1)}function mre(t){throw h7(!1,Aa.GuardRejected)}var g3=class{urlSerializer;urlTree;constructor(i,e){this.urlSerializer=i,this.urlTree=e}async lineralizeSegments(i,e){let n=[],o=e.root;for(;;){if(n=n.concat(o.segments),o.numberOfChildren===0)return n;if(o.numberOfChildren>1||!o.children[Un])throw dre(`${i.redirectTo}`);o=o.children[Un]}}async applyRedirectCommands(i,e,n,o,r){let a=await pre(e,o,r);if(a instanceof Za)throw new Wv(a);let c=this.applyRedirectCreateUrlTree(a,this.urlSerializer.parse(a),i,n);if(a[0]==="/")throw new Wv(c);return c}applyRedirectCreateUrlTree(i,e,n,o){let r=this.createSegmentGroup(i,e.root,n,o);return new Za(r,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(i,e){let n={};return Object.entries(i).forEach(([o,r])=>{if(typeof r=="string"&&r[0]===":"){let c=r.substring(1);n[o]=e[c]}else n[o]=r}),n}createSegmentGroup(i,e,n,o){let r=this.createSegments(i,e.segments,n,o),a={};return Object.entries(e.children).forEach(([c,m])=>{a[c]=this.createSegmentGroup(i,m,n,o)}),new ao(r,a)}createSegments(i,e,n,o){return e.map(r=>r.path[0]===":"?this.findPosParam(i,r,o):this.findOrReturn(r,n))}findPosParam(i,e,n){let o=n[e.path.substring(1)];if(!o)throw new vn(4001,!1);return o}findOrReturn(i,e){let n=0;for(let o of e){if(o.path===i.path)return e.splice(n),o;n++}return i}};function pre(t,i,e){if(typeof t=="string")return Promise.resolve(t);let n=t;return py(Wu(Os(e,()=>n(i))))}function ure(t,i){return t.providers&&!t._injector&&(t._injector=wC(t.providers,i,`Route: ${t.path}`)),t._injector??i}function qc(t){return t.outlet||Un}function hre(t,i){let e=t.filter(n=>qc(n)===i);return e.push(...t.filter(n=>qc(n)!==i)),e}var _3={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function C7(t){return{routeConfig:t.routeConfig,url:t.url,params:t.params,queryParams:t.queryParams,fragment:t.fragment,data:t.data,outlet:t.outlet,title:t.title,paramMap:t.paramMap,queryParamMap:t.queryParamMap}}function fre(t,i,e,n,o,r,a){let c=x7(t,i,e);if(!c.matched)return xt(c);let m=C7(r(c));return n=ure(i,n),cre(n,i,e,o,m,a).pipe(yt(p=>p===!0?c:H({},_3)))}function x7(t,i,e){if(i.path==="")return i.pathMatch==="full"&&(t.hasChildren()||e.length>0)?H({},_3):{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};let o=(i.matcher||WB)(e,t,i);if(!o)return H({},_3);let r={};Object.entries(o.posParams??{}).forEach(([c,m])=>{r[c]=m.path});let a=o.consumed.length>0?H(H({},r),o.consumed[o.consumed.length-1].parameters):r;return{matched:!0,consumedSegments:o.consumed,remainingSegments:e.slice(o.consumed.length),parameters:a,positionalParamSegments:o.posParams??{}}}function UB(t,i,e,n){return e.length>0&&vre(t,e,n)?{segmentGroup:new ao(i,_re(n,new ao(e,t.children))),slicedSegments:[]}:e.length===0&&bre(t,e,n)?{segmentGroup:new ao(t.segments,gre(t,e,n,t.children)),slicedSegments:e}:{segmentGroup:new ao(t.segments,t.children),slicedSegments:e}}function gre(t,i,e,n){let o={};for(let r of e)if(Py(t,i,r)&&!n[qc(r)]){let a=new ao([],{});o[qc(r)]=a}return H(H({},n),o)}function _re(t,i){let e={};e[Un]=i;for(let n of t)if(n.path===""&&qc(n)!==Un){let o=new ao([],{});e[qc(n)]=o}return e}function vre(t,i,e){return e.some(n=>Py(t,i,n)&&qc(n)!==Un)}function bre(t,i,e){return e.some(n=>Py(t,i,n))}function Py(t,i,e){return(t.hasChildren()||i.length>0)&&e.pathMatch==="full"?!1:e.path===""}function Cre(t,i,e){return i.length===0&&!t.children[e]}var v3=class{};async function xre(t,i,e,n,o,r,a="emptyOnly",c){return new b3(t,i,e,n,o,a,r,c).recognize()}var yre=31,b3=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(i,e,n,o,r,a,c,m){this.injector=i,this.configLoader=e,this.rootComponentType=n,this.config=o,this.urlTree=r,this.paramsInheritanceStrategy=a,this.urlSerializer=c,this.abortSignal=m,this.applyRedirects=new g3(this.urlSerializer,this.urlTree)}noMatchError(i){return new vn(4002,`'${i.segmentGroup}'`)}async recognize(){let i=UB(this.urlTree.root,[],[],this.config).segmentGroup,{children:e,rootSnapshot:n}=await this.match(i),o=new Xs(n,e),r=new Uv("",o),a=i7(n,[],this.urlTree.queryParams,this.urlTree.fragment);return a.queryParams=this.urlTree.queryParams,r.url=this.urlSerializer.serialize(a),{state:r,tree:a}}async match(i){let e=new Uf([],Object.freeze({}),Object.freeze(H({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),Un,this.rootComponentType,null,{},this.injector);try{return{children:await this.processSegmentGroup(this.injector,this.config,i,Un,e),rootSnapshot:e}}catch(n){if(n instanceof Wv)return this.urlTree=n.urlTree,this.match(n.urlTree.root);throw n instanceof Ld?this.noMatchError(n):n}}async processSegmentGroup(i,e,n,o,r){if(n.segments.length===0&&n.hasChildren())return this.processChildren(i,e,n,r);let a=await this.processSegment(i,e,n,n.segments,o,!0,r);return a instanceof Xs?[a]:[]}async processChildren(i,e,n,o){let r=[];for(let m of Object.keys(n.children))m==="primary"?r.unshift(m):r.push(m);let a=[];for(let m of r){let p=n.children[m],h=hre(e,m),g=await this.processSegmentGroup(i,h,p,m,o);a.push(...g)}let c=y7(a);return Sre(c),c}async processSegment(i,e,n,o,r,a,c){for(let m of e)try{return await this.processSegmentAgainstRoute(m._injector??i,e,m,n,o,r,a,c)}catch(p){if(p instanceof Ld||g7(p))continue;throw p}if(Cre(n,o,r))return new v3;throw new Ld(n)}async processSegmentAgainstRoute(i,e,n,o,r,a,c,m){if(qc(n)!==a&&(a===Un||!Py(o,r,n)))throw new Ld(o);if(n.redirectTo===void 0)return this.matchSegmentAgainstRoute(i,o,n,r,a,m);if(this.allowRedirects&&c)return this.expandSegmentAgainstRouteUsingRedirect(i,o,e,n,r,a,m);throw new Ld(o)}async expandSegmentAgainstRouteUsingRedirect(i,e,n,o,r,a,c){let{matched:m,parameters:p,consumedSegments:h,positionalParamSegments:g,remainingSegments:M}=x7(e,o,r);if(!m)throw new Ld(e);typeof o.redirectTo=="string"&&o.redirectTo[0]==="/"&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>yre&&(this.allowRedirects=!1));let C=this.createSnapshot(i,o,r,p,c);if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let _=await this.applyRedirects.applyRedirectCommands(h,o.redirectTo,g,C7(C),i),w=await this.applyRedirects.lineralizeSegments(o,_);return this.processSegment(i,n,e,w.concat(M),a,!1,c)}createSnapshot(i,e,n,o,r){let a=new Uf(n,o,Object.freeze(H({},this.urlTree.queryParams)),this.urlTree.fragment,Mre(e),qc(e),e.component??e._loadedComponent??null,e,kre(e),i),c=y3(a,r,this.paramsInheritanceStrategy);return a.params=Object.freeze(c.params),a.data=Object.freeze(c.data),a}async matchSegmentAgainstRoute(i,e,n,o,r,a){if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let c=I=>this.createSnapshot(i,n,I.consumedSegments,I.parameters,a),m=await py(fre(e,n,o,i,this.urlSerializer,c,this.abortSignal));if(n.path==="**"&&(e.children={}),!m?.matched)throw new Ld(e);i=n._injector??i;let{routes:p}=await this.getChildConfig(i,n,o),h=n._loadedInjector??i,{parameters:g,consumedSegments:M,remainingSegments:C}=m,_=this.createSnapshot(i,n,M,g,a),{segmentGroup:w,slicedSegments:S}=UB(e,M,C,p);if(S.length===0&&w.hasChildren()){let I=await this.processChildren(h,p,w,_);return new Xs(_,I)}if(p.length===0&&S.length===0)return new Xs(_,[]);let y=qc(n)===r,k=await this.processSegment(h,p,w,S,y?Un:r,!0,_);return new Xs(_,k instanceof Xs?[k]:[])}async getChildConfig(i,e,n){if(e.children)return{routes:e.children,injector:i};if(e.loadChildren){if(e._loadedRoutes!==void 0){let r=e._loadedNgModuleFactory;return r&&!e._loadedInjector&&(e._loadedInjector=r.create(i).injector),{routes:e._loadedRoutes,injector:e._loadedInjector}}if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);if(await py(lre(i,e,n,this.urlSerializer,this.abortSignal))){let r=await this.configLoader.loadChildren(i,e);return e._loadedRoutes=r.routes,e._loadedInjector=r.injector,e._loadedNgModuleFactory=r.factory,r}throw mre(e)}return{routes:[],injector:i}}};function Sre(t){t.sort((i,e)=>i.value.outlet===Un?-1:e.value.outlet===Un?1:i.value.outlet.localeCompare(e.value.outlet))}function wre(t){let i=t.value.routeConfig;return i&&i.path===""}function y7(t){let i=[],e=new Set;for(let n of t){if(!wre(n)){i.push(n);continue}let o=i.find(r=>n.value.routeConfig===r.value.routeConfig);o!==void 0?(o.children.push(...n.children),e.add(o)):i.push(n)}for(let n of e){let o=y7(n.children);i.push(new Xs(n.value,o))}return i.filter(n=>!e.has(n))}function Mre(t){return t.data||{}}function kre(t){return t.resolve||{}}function Tre(t,i,e,n,o,r,a){return Er(async c=>{let{state:m,tree:p}=await xre(t,i,e,n,c.extractedUrl,o,r,a);return tt(H({},c),{targetSnapshot:m,urlAfterRedirects:p})})}function Ere(t){return Er(i=>{let{targetSnapshot:e,guards:{canActivateChecks:n}}=i;if(!n.length)return xt(i);let o=new Set(n.map(c=>c.route)),r=new Set;for(let c of o)if(!r.has(c))for(let m of S7(c))r.add(m);let a=0;return or(r).pipe(dm(c=>o.has(c)?Dre(c,e,t):(c.data=y3(c,c.parent,t).resolve,xt(void 0))),vi(()=>a++),z_(1),Er(c=>a===r.size?xt(i):Zr))})}function S7(t){let i=t.children.map(e=>S7(e)).flat();return[t,...i]}function Dre(t,i,e){let n=t.routeConfig,o=t._resolve;return n?.title!==void 0&&!m7(n)&&(o[qv]=n.title),xc(()=>(t.data=y3(t,t.parent,e).resolve,Pre(o,t,i).pipe(yt(r=>(t._resolvedData=r,t.data=H(H({},t.data),r),null)))))}function Pre(t,i,e){let n=a3(t);if(n.length===0)return xt({});let o={};return or(n).pipe(Er(r=>Ire(t[r],i,e).pipe(Cd(),vi(a=>{if(a instanceof Gf)throw Ty(new Bd,a);o[r]=a}))),z_(1),yt(()=>o),hi(r=>g7(r)?Zr:zi(r)))}function Ire(t,i,e){let n=i._environmentInjector,o=qf(t,n),r=o.resolve?o.resolve(i,e):Os(n,()=>o(i,e));return Wu(r)}function GB(t){return fn(i=>{let e=t(i);return e?or(e).pipe(yt(()=>i)):xt(i)})}var T3=(()=>{class t{buildTitle(e){let n,o=e.root;for(;o!==void 0;)n=this.getResolvedTitleForRoute(o)??n,o=o.children.find(r=>r.outlet===Un);return n}getResolvedTitleForRoute(e){return e.data[qv]}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:()=>f(w7),providedIn:"root"})}return t})(),w7=(()=>{class t extends T3{title;constructor(e){super(),this.title=e}updateTitle(e){let n=this.buildTitle(e);n!==void 0&&this.title.setTitle(n)}static \u0275fac=function(n){return new(n||t)(ge(um))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Zm=new kt("",{factory:()=>({})}),Xf=new kt(""),Iy=(()=>{class t{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=f(O5);async loadComponent(e,n){if(this.componentLoaders.get(n))return this.componentLoaders.get(n);if(n._loadedComponent)return Promise.resolve(n._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(n);let o=(async()=>{try{let r=await XB(Os(e,()=>n.loadComponent())),a=await T7(k7(r));return this.onLoadEndListener&&this.onLoadEndListener(n),n._loadedComponent=a,a}finally{this.componentLoaders.delete(n)}})();return this.componentLoaders.set(n,o),o}loadChildren(e,n){if(this.childrenLoaders.get(n))return this.childrenLoaders.get(n);if(n._loadedRoutes)return Promise.resolve({routes:n._loadedRoutes,injector:n._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(n);let o=(async()=>{try{let r=await M7(n,this.compiler,e,this.onLoadEndListener);return n._loadedRoutes=r.routes,n._loadedInjector=r.injector,n._loadedNgModuleFactory=r.factory,r}finally{this.childrenLoaders.delete(n)}})();return this.childrenLoaders.set(n,o),o}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();async function M7(t,i,e,n){let o=await XB(Os(e,()=>t.loadChildren())),r=await T7(k7(o)),a;r instanceof w5||Array.isArray(r)?a=r:a=await i.compileModuleAsync(r),n&&n(t);let c,m,p=!1,h;return Array.isArray(a)?(m=a,p=!0):(c=a.create(e).injector,h=a,m=c.get(Xf,[],{optional:!0,self:!0}).flat()),{routes:m.map(k3),injector:c,factory:h}}function Are(t){return t&&typeof t=="object"&&"default"in t}function k7(t){return Are(t)?t.default:t}async function T7(t){return t}var Ay=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:()=>f(Ore),providedIn:"root"})}return t})(),Ore=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,n){return e}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),E3=new kt(""),D3=new kt("");function E7(t,i,e){let n=t.get(D3),o=t.get(Pi);if(!o.startViewTransition||n.skipNextTransition)return n.skipNextTransition=!1,new Promise(p=>setTimeout(p));let r,a=new Promise(p=>{r=p}),c=o.startViewTransition(()=>(r(),Nre(t)));c.updateCallbackDone.catch(p=>{}),c.ready.catch(p=>{}),c.finished.catch(p=>{});let{onViewTransitionCreated:m}=n;return m&&Os(t,()=>m({transition:c,from:i,to:e})),a}function Nre(t){return new Promise(i=>{ar({read:()=>setTimeout(i)},{injector:t})})}var Rre=()=>{},P3=new kt(""),Oy=(()=>{class t{currentNavigation=me(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=me(null);events=new Le;transitionAbortWithErrorSubject=new Le;configLoader=f(Iy);environmentInjector=f(Xl);destroyRef=f(mm);urlSerializer=f(Km);rootContexts=f(qu);location=f(yc);inputBindingEnabled=f(Xv,{optional:!0})!==null;titleStrategy=f(T3);options=f(Zm,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=f(Ay);createViewTransition=f(E3,{optional:!0});navigationErrorHandler=f(P3,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>xt(void 0);rootComponentType=null;destroyed=!1;constructor(){let e=o=>this.events.next(new by(o)),n=o=>this.events.next(new Cy(o));this.configLoader.onLoadEndListener=n,this.configLoader.onLoadStartListener=e,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(e){let n=++this.navigationId;sr(()=>{this.transitions?.next(tt(H({},e),{extractedUrl:this.urlHandlingStrategy.extract(e.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:n,routesRecognizeHandler:{},beforeActivateHandler:{}}))})}setupNavigations(e){return this.transitions=new qt(null),this.transitions.pipe(Pn(n=>n!==null),fn(n=>{let o=!1,r=new AbortController,a=()=>!o&&this.currentTransition?.id===n.id;return xt(n).pipe(fn(c=>{if(this.navigationId>n.id)return this.cancelNavigationTransition(n,"",Aa.SupersededByNewNavigation),Zr;this.currentTransition=n;let m=this.lastSuccessfulNavigation();this.currentNavigation.set({id:c.id,initialUrl:c.rawUrl,extractedUrl:c.extractedUrl,targetBrowserUrl:typeof c.extras.browserUrl=="string"?this.urlSerializer.parse(c.extras.browserUrl):c.extras.browserUrl,trigger:c.source,extras:c.extras,previousNavigation:m?tt(H({},m),{previousNavigation:null}):null,abort:()=>r.abort(),routesRecognizeHandler:c.routesRecognizeHandler,beforeActivateHandler:c.beforeActivateHandler});let p=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),h=c.extras.onSameUrlNavigation??e.onSameUrlNavigation;if(!p&&h!=="reload")return this.events.next(new Qc(c.id,this.urlSerializer.serialize(c.rawUrl),"",zf.IgnoredSameUrlNavigation)),c.resolve(!1),Zr;if(this.urlHandlingStrategy.shouldProcessUrl(c.rawUrl))return xt(c).pipe(fn(g=>(this.events.next(new Xc(g.id,this.urlSerializer.serialize(g.extractedUrl),g.source,g.restoredState)),g.id!==this.navigationId?Zr:Promise.resolve(g))),Tre(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy,r.signal),vi(g=>{n.targetSnapshot=g.targetSnapshot,n.urlAfterRedirects=g.urlAfterRedirects,this.currentNavigation.update(M=>(M.finalUrl=g.urlAfterRedirects,M)),this.events.next(new $v)}),fn(g=>or(n.routesRecognizeHandler.deferredHandle??xt(void 0)).pipe(yt(()=>g))),vi(()=>{let g=new jv(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(g)}));if(p&&this.urlHandlingStrategy.shouldProcessUrl(c.currentRawUrl)){let{id:g,extractedUrl:M,source:C,restoredState:_,extras:w}=c,S=new Xc(g,this.urlSerializer.serialize(M),C,_);this.events.next(S);let y=c7(this.rootComponentType,this.environmentInjector).snapshot;return this.currentTransition=n=tt(H({},c),{targetSnapshot:y,urlAfterRedirects:M,extras:tt(H({},w),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.update(k=>(k.finalUrl=M,k)),xt(n)}else return this.events.next(new Qc(c.id,this.urlSerializer.serialize(c.extractedUrl),"",zf.IgnoredByUrlHandlingStrategy)),c.resolve(!1),Zr}),yt(c=>{let m=new fy(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);return this.events.next(m),this.currentTransition=n=tt(H({},c),{guards:Hoe(c.targetSnapshot,c.currentSnapshot,this.rootContexts)}),n}),ere(c=>this.events.next(c)),fn(c=>{if(n.guardsResult=c.guardsResult,c.guardsResult&&typeof c.guardsResult!="boolean")throw Ty(this.urlSerializer,c.guardsResult);let m=new gy(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot,!!c.guardsResult);if(this.events.next(m),!a())return Zr;if(!c.guardsResult)return this.cancelNavigationTransition(c,"",Aa.GuardRejected),Zr;if(c.guards.canActivateChecks.length===0)return xt(c);let p=new _y(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);if(this.events.next(p),!a())return Zr;let h=!1;return xt(c).pipe(Ere(this.paramsInheritanceStrategy),vi({next:()=>{h=!0;let g=new vy(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(g)},complete:()=>{h||this.cancelNavigationTransition(c,"",Aa.NoDataFromResolver)}}))}),GB(c=>{let m=h=>{let g=[];if(h.routeConfig?._loadedComponent)h.component=h.routeConfig?._loadedComponent;else if(h.routeConfig?.loadComponent){let M=h._environmentInjector;g.push(this.configLoader.loadComponent(M,h.routeConfig).then(C=>{h.component=C}))}for(let M of h.children)g.push(...m(M));return g},p=m(c.targetSnapshot.root);return p.length===0?xt(c):or(Promise.all(p).then(()=>c))}),GB(()=>this.afterPreactivation()),fn(()=>{let{currentSnapshot:c,targetSnapshot:m}=n,p=this.createViewTransition?.(this.environmentInjector,c.root,m.root);return p?or(p).pipe(yt(()=>n)):xt(n)}),wi(1),fn(c=>{let m=Voe(e.routeReuseStrategy,c.targetSnapshot,c.currentRouterState);this.currentTransition=n=c=tt(H({},c),{targetRouterState:m}),this.currentNavigation.update(h=>(h.targetRouterState=m,h)),this.events.next(new $f);let p=n.beforeActivateHandler.deferredHandle;return p?or(p.then(()=>c)):xt(c)}),vi(c=>{new f3(e.routeReuseStrategy,n.targetRouterState,n.currentRouterState,m=>this.events.next(m),this.inputBindingEnabled).activate(this.rootContexts),a()&&(o=!0,this.currentNavigation.update(m=>(m.abort=Rre,m)),this.lastSuccessfulNavigation.set(sr(this.currentNavigation)),this.events.next(new Or(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects))),this.titleStrategy?.updateTitle(c.targetRouterState.snapshot),c.resolve(!0))}),rt(_7(r.signal).pipe(Pn(()=>!o&&!n.targetRouterState),vi(()=>{this.cancelNavigationTransition(n,r.signal.reason+"",Aa.Aborted)}))),vi({complete:()=>{o=!0}}),rt(this.transitionAbortWithErrorSubject.pipe(vi(c=>{throw c}))),bC(()=>{r.abort(),o||this.cancelNavigationTransition(n,"",Aa.SupersededByNewNavigation),this.currentTransition?.id===n.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),hi(c=>{if(o=!0,this.destroyed)return n.resolve(!1),Zr;if(f7(c))this.events.next(new xs(n.id,this.urlSerializer.serialize(n.extractedUrl),c.message,c.cancellationCode)),$oe(c)?this.events.next(new Hf(c.url,c.navigationBehaviorOptions)):n.resolve(!1);else{let m=new Vd(n.id,this.urlSerializer.serialize(n.extractedUrl),c,n.targetSnapshot??void 0);try{let p=Os(this.environmentInjector,()=>this.navigationErrorHandler?.(m));if(p instanceof Gf){let{message:h,cancellationCode:g}=Ty(this.urlSerializer,p);this.events.next(new xs(n.id,this.urlSerializer.serialize(n.extractedUrl),h,g)),this.events.next(new Hf(p.redirectTo,p.navigationBehaviorOptions))}else throw this.events.next(m),c}catch(p){this.options.resolveNavigationPromiseOnError?n.resolve(!1):n.reject(p)}}return Zr}))}))}cancelNavigationTransition(e,n,o){let r=new xs(e.id,this.urlSerializer.serialize(e.extractedUrl),n,o);this.events.next(r),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))),n=sr(this.currentNavigation),o=n?.targetBrowserUrl??n?.extractedUrl;return e.toString()!==o?.toString()&&!n?.extras.skipLocationChange}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Fre(t){return t!==Bf}var D7=new kt("");var P7=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:()=>f(Lre),providedIn:"root"})}return t})(),Dy=class{shouldDetach(i){return!1}store(i,e){}shouldAttach(i){return!1}retrieve(i){return null}shouldReuseRoute(i,e){return i.routeConfig===e.routeConfig}shouldDestroyInjector(i){return!0}},Lre=(()=>{class t extends Dy{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Ny=(()=>{class t{urlSerializer=f(Km);options=f(Zm,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";location=f(yc);urlHandlingStrategy=f(Ay);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new Za;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:e,initialUrl:n,targetBrowserUrl:o}){let r=e!==void 0?this.urlHandlingStrategy.merge(e,n):n,a=o??r;return a instanceof Za?this.urlSerializer.serialize(a):a}commitTransition({targetRouterState:e,finalUrl:n,initialUrl:o}){n&&e?(this.currentUrlTree=n,this.rawUrlTree=this.urlHandlingStrategy.merge(n,o),this.routerState=e):this.rawUrlTree=o}routerState=c7(null,f(Xl));getRouterState(){return this.routerState}_stateMemento=this.createStateMemento();get stateMemento(){return this._stateMemento}updateStateMemento(){this._stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}restoredState(){return this.location.getState()}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:()=>f(Bre),providedIn:"root"})}return t})(),Bre=(()=>{class t extends Ny{currentPageId=0;lastSuccessfulId=-1;get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(n=>{n.type==="popstate"&&setTimeout(()=>{e(n.url,n.state,"popstate",{replaceUrl:!0})})})}handleRouterEvent(e,n){e instanceof Xc?this.updateStateMemento():e instanceof Qc?this.commitTransition(n):e instanceof jv?this.urlUpdateStrategy==="eager"&&(n.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(n),n)):e instanceof $f?(this.commitTransition(n),this.urlUpdateStrategy==="deferred"&&!n.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(n),n)):e instanceof xs&&!l7(e)?this.restoreHistory(n):e instanceof Vd?this.restoreHistory(n,!0):e instanceof Or&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,{extras:n,id:o}){let{replaceUrl:r,state:a}=n;if(this.location.isCurrentPathEqualTo(e)||r){let c=this.browserPageId,m=H(H({},a),this.generateNgRouterState(o,c));this.location.replaceState(e,"",m)}else{let c=H(H({},a),this.generateNgRouterState(o,this.browserPageId+1));this.location.go(e,"",c)}}restoreHistory(e,n=!1){if(this.canceledNavigationResolution==="computed"){let o=this.browserPageId,r=this.currentPageId-o;r!==0?this.location.historyGo(r):this.getCurrentUrlTree()===e.finalUrl&&r===0&&(this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(n&&this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}resetInternalState({finalUrl:e}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,n){return this.canceledNavigationResolution==="computed"?{navigationId:e,\u0275routerPageId:n}:{navigationId:e}}static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ry(t,i){t.events.pipe(Pn(e=>e instanceof Or||e instanceof xs||e instanceof Vd||e instanceof Qc),yt(e=>e instanceof Or||e instanceof Qc?0:(e instanceof xs?e.code===Aa.Redirect||e.code===Aa.SupersededByNewNavigation:!1)?2:1),Pn(e=>e!==2),wi(1)).subscribe(()=>{i()})}var ut=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=f(k5);stateManager=f(Ny);options=f(Zm,{optional:!0})||{};pendingTasks=f(C5);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=f(Oy);urlSerializer=f(Km);location=f(yc);urlHandlingStrategy=f(Ay);injector=f(Xl);_events=new Le;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=f(P7);injectorCleanup=f(D7,{optional:!0});onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=f(Xf,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!f(Xv,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:e=>{}}),this.subscribeToNavigationEvents()}eventsSubscription=new so;subscribeToNavigationEvents(){let e=this.navigationTransitions.events.subscribe(n=>{try{let o=this.navigationTransitions.currentTransition,r=sr(this.navigationTransitions.currentNavigation);if(o!==null&&r!==null){if(this.stateManager.handleRouterEvent(n,r),n instanceof xs&&n.code!==Aa.Redirect&&n.code!==Aa.SupersededByNewNavigation)this.navigated=!0;else if(n instanceof Or)this.navigated=!0,this.injectorCleanup?.(this.routeReuseStrategy,this.routerState,this.config);else if(n instanceof Hf){let a=n.navigationBehaviorOptions,c=this.urlHandlingStrategy.merge(n.url,o.currentRawUrl),m=H({scroll:o.extras.scroll,browserUrl:o.extras.browserUrl,info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:o.extras.replaceUrl||this.urlUpdateStrategy==="eager"||Fre(o.source)},a);this.scheduleNavigation(c,Bf,null,m,{resolve:o.resolve,reject:o.reject,promise:o.promise})}}Loe(n)&&this._events.next(n)}catch(o){this.navigationTransitions.transitionAbortWithErrorSubject.next(o)}});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),Bf,this.stateManager.restoredState(),{replaceUrl:!0})}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,n,o,r)=>{this.navigateToSyncWithBrowser(e,o,n,r)})}navigateToSyncWithBrowser(e,n,o,r){let a=o?.navigationId?o:null;if(o){let m=H({},o);delete m.navigationId,delete m.\u0275routerPageId,Object.keys(m).length!==0&&(r.state=m)}let c=this.parseUrl(e);this.scheduleNavigation(c,n,a,r).catch(m=>{this.disposed||this.injector.get(xC)(m)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return sr(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(k3),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription?.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0,this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,n={}){let{relativeTo:o,queryParams:r,fragment:a,queryParamsHandling:c,preserveFragment:m}=n,p=m?this.currentUrlTree.fragment:a,h=null;switch(c??this.options.defaultQueryParamsHandling){case"merge":h=H(H({},this.currentUrlTree.queryParams),r);break;case"preserve":h=this.currentUrlTree.queryParams;break;default:h=r||null}h!==null&&(h=this.removeEmptyProps(h));let g;try{let M=o?o.snapshot:this.routerState.snapshot.root;g=o7(M)}catch{(typeof e[0]!="string"||e[0][0]!=="/")&&(e=[]),g=this.currentUrlTree.root}return r7(g,e,h,p??null,this.urlSerializer)}navigateByUrl(e,n={skipLocationChange:!1}){let o=Ym(e)?e:this.parseUrl(e),r=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(r,Bf,null,n)}navigate(e,n={skipLocationChange:!1}){return Vre(e),this.navigateByUrl(this.createUrlTree(e,n),n)}serializeUrl(e){return this.urlSerializer.serialize(e)}parseUrl(e){try{return this.urlSerializer.parse(e)}catch{return this.console.warn(_5(4018,!1)),this.urlSerializer.parse("/")}}isActive(e,n){let o;if(n===!0?o=H({},C3):n===!1?o=H({},Vv):o=H(H({},Vv),n),Ym(e))return s3(this.currentUrlTree,e,o);let r=this.parseUrl(e);return s3(this.currentUrlTree,r,o)}removeEmptyProps(e){return Object.entries(e).reduce((n,[o,r])=>(r!=null&&(n[o]=r),n),{})}scheduleNavigation(e,n,o,r,a){if(this.disposed)return Promise.resolve(!1);let c,m,p;a?(c=a.resolve,m=a.reject,p=a.promise):p=new Promise((g,M)=>{c=g,m=M});let h=this.pendingTasks.add();return Ry(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(h))}),this.navigationTransitions.handleNavigationRequest({source:n,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:r,resolve:c,reject:m,promise:p,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),p.catch(Promise.reject.bind(Promise))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Vre(t){for(let i=0;i<t.length;i++)if(t[i]==null)throw new vn(4008,!1)}var zre=(()=>{class t{router=f(ut);stateManager=f(Ny);fragment=me("");queryParams=me({});path=me("");serializer=f(Km);constructor(){this.updateState(),this.router.events?.subscribe(e=>{e instanceof Or&&this.updateState()})}updateState(){let{fragment:e,root:n,queryParams:o}=this.stateManager.getCurrentUrlTree();this.fragment.set(e),this.queryParams.set(o),this.path.set(this.serializer.serialize(new Za(n)))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),cn=(()=>{class t{router;route;tabIndexAttribute;renderer;el;locationStrategy;hrefAttributeValue=f(new ka("href"),{optional:!0});reactiveHref=R5(()=>this.isAnchorElement?this.computeHref(this._urlTree()):this.hrefAttributeValue);get href(){return sr(this.reactiveHref)}set href(e){this.reactiveHref.set(e)}set target(e){this._target.set(e)}get target(){return sr(this._target)}_target=me(void 0);set queryParams(e){this._queryParams.set(e)}get queryParams(){return sr(this._queryParams)}_queryParams=me(void 0,{equal:()=>!1});set fragment(e){this._fragment.set(e)}get fragment(){return sr(this._fragment)}_fragment=me(void 0);set queryParamsHandling(e){this._queryParamsHandling.set(e)}get queryParamsHandling(){return sr(this._queryParamsHandling)}_queryParamsHandling=me(void 0);set state(e){this._state.set(e)}get state(){return sr(this._state)}_state=me(void 0,{equal:()=>!1});set info(e){this._info.set(e)}get info(){return sr(this._info)}_info=me(void 0,{equal:()=>!1});set relativeTo(e){this._relativeTo.set(e)}get relativeTo(){return sr(this._relativeTo)}_relativeTo=me(void 0);set preserveFragment(e){this._preserveFragment.set(e)}get preserveFragment(){return sr(this._preserveFragment)}_preserveFragment=me(!1);set skipLocationChange(e){this._skipLocationChange.set(e)}get skipLocationChange(){return sr(this._skipLocationChange)}_skipLocationChange=me(!1);set replaceUrl(e){this._replaceUrl.set(e)}get replaceUrl(){return sr(this._replaceUrl)}_replaceUrl=me(!1);isAnchorElement;onChanges=new Le;applicationErrorHandler=f(xC);options=f(Zm,{optional:!0});reactiveRouterState=f(zre);constructor(e,n,o,r,a,c){this.router=e,this.route=n,this.tabIndexAttribute=o,this.renderer=r,this.el=a,this.locationStrategy=c;let m=a.nativeElement.tagName?.toLowerCase();this.isAnchorElement=m==="a"||m==="area"||!!(typeof customElements=="object"&&customElements.get(m)?.observedAttributes?.includes?.("href"))}setTabIndexIfNotOnNativeEl(e){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.onChanges.next(this)}routerLinkInput=me(null);set routerLink(e){e==null?(this.routerLinkInput.set(null),this.setTabIndexIfNotOnNativeEl(null)):(Ym(e)?this.routerLinkInput.set(e):this.routerLinkInput.set(Array.isArray(e)?e:[e]),this.setTabIndexIfNotOnNativeEl("0"))}onClick(e,n,o,r,a){let c=this._urlTree();if(c===null||this.isAnchorElement&&(e!==0||n||o||r||a||typeof this.target=="string"&&this.target!="_self"))return!0;let m={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(c,m)?.catch(p=>{this.applicationErrorHandler(p)}),!this.isAnchorElement}ngOnDestroy(){}applyAttributeValue(e,n){let o=this.renderer,r=this.el.nativeElement;n!==null?o.setAttribute(r,e,n):o.removeAttribute(r,e)}_urlTree=ri(()=>{this.reactiveRouterState.path(),this._preserveFragment()&&this.reactiveRouterState.fragment();let e=o=>o==="preserve"||o==="merge";(e(this._queryParamsHandling())||e(this.options?.defaultQueryParamsHandling))&&this.reactiveRouterState.queryParams();let n=this.routerLinkInput();return n===null||!this.router.createUrlTree?null:Ym(n)?n:this.router.createUrlTree(n,{relativeTo:this._relativeTo()!==void 0?this._relativeTo():this.route,queryParams:this._queryParams(),fragment:this._fragment(),queryParamsHandling:this._queryParamsHandling(),preserveFragment:this._preserveFragment()})},{equal:(e,n)=>this.computeHref(e)===this.computeHref(n)});get urlTree(){return sr(this._urlTree)}computeHref(e){return e!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e))??"":null}static \u0275fac=function(n){return new(n||t)(st(ut),st(Ye),x5("tabindex"),st(ii),st(Lt),st($_))};static \u0275dir=ft({type:t,selectors:[["","routerLink",""]],hostVars:2,hostBindings:function(n,o){n&1&&v("click",function(a){return o.onClick(a.button,a.ctrlKey,a.shiftKey,a.altKey,a.metaKey)}),n&2&&It("href",o.reactiveHref(),S5)("target",o._target())},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",dt],skipLocationChange:[2,"skipLocationChange","skipLocationChange",dt],replaceUrl:[2,"replaceUrl","replaceUrl",dt],routerLink:"routerLink"},features:[un]})}return t})(),A3=(()=>{class t{router;element;renderer;cdr;links;classes=[];routerEventsSubscription;linkInputChangesSubscription;_isActive=!1;get isActive(){return this._isActive}routerLinkActiveOptions={exact:!1};ariaCurrentWhenActive;isActiveChange=new ve;link=f(cn,{optional:!0});constructor(e,n,o,r){this.router=e,this.element=n,this.renderer=o,this.cdr=r,this.routerEventsSubscription=e.events.subscribe(a=>{a instanceof Or&&this.update()})}ngAfterContentInit(){xt(this.links.changes,xt(null)).pipe(L_()).subscribe(e=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let e=[...this.links.toArray(),this.link].filter(n=>!!n).map(n=>n.onChanges);this.linkInputChangesSubscription=or(e).pipe(L_()).subscribe(n=>{this._isActive!==this.isLinkActive(this.router)(n)&&this.update()})}set routerLinkActive(e){let n=Array.isArray(e)?e:e.split(" ");this.classes=n.filter(o=>!!o)}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(n=>{e?this.renderer.addClass(this.element.nativeElement,n):this.renderer.removeClass(this.element.nativeElement,n)}),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 n=jre(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact??!1?H({},C3):H({},Vv);return o=>{let r=o.urlTree;return r?sr(x3(r,e,n)):!1}}hasActiveLinks(){let e=this.isLinkActive(this.router);return this.link&&e(this.link)||this.links.some(e)}static \u0275fac=function(n){return new(n||t)(st(ut),st(Lt),st(ii),st(K))};static \u0275dir=ft({type:t,selectors:[["","routerLinkActive",""]],contentQueries:function(n,o,r){if(n&1&&$i(r,cn,5),n&2){let a;gt(a=_t())&&(o.links=a)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],features:[un]})}return t})();function jre(t){let i=t;return!!(i.paths||i.matrixParams||i.queryParams||i.fragment)}var Yv=class{};var I7=(()=>{class t{router;injector;preloadingStrategy;loader;subscription;constructor(e,n,o,r){this.router=e,this.injector=n,this.preloadingStrategy=o,this.loader=r}setUpPreloading(){this.subscription=this.router.events.pipe(Pn(e=>e instanceof Or),dm(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription?.unsubscribe()}processRoutes(e,n){let o=[];for(let r of n){r.providers&&!r._injector&&(r._injector=wC(r.providers,e,""));let a=r._injector??e;r._loadedNgModuleFactory&&!r._loadedInjector&&(r._loadedInjector=r._loadedNgModuleFactory.create(a).injector);let c=r._loadedInjector??a;(r.loadChildren&&!r._loadedRoutes&&r.canLoad===void 0||r.loadComponent&&!r._loadedComponent)&&o.push(this.preloadConfig(a,r)),(r.children||r._loadedRoutes)&&o.push(this.processRoutes(c,r.children??r._loadedRoutes))}return or(o).pipe(L_())}preloadConfig(e,n){return this.preloadingStrategy.preload(n,()=>{if(e.destroyed)return xt(null);let o;n.loadChildren&&n.canLoad===void 0?o=or(this.loader.loadChildren(e,n)):o=xt(null);let r=o.pipe(Er(a=>a===null?xt(void 0):(n._loadedRoutes=a.routes,n._loadedInjector=a.injector,n._loadedNgModuleFactory=a.factory,this.processRoutes(a.injector??e,a.routes))));if(n.loadComponent&&!n._loadedComponent){let a=this.loader.loadComponent(e,n);return or([r,a]).pipe(L_())}else return r})}static \u0275fac=function(n){return new(n||t)(ge(ut),ge(Xl),ge(Yv),ge(Iy))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),A7=new kt(""),$re=(()=>{class t{options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource=Bf;restoredId=0;store={};urlSerializer=f(Km);zone=f(bi);viewportScroller=f(yE);transitions=f(Oy);constructor(e){this.options=e,this.options.scrollPositionRestoration||="disabled",this.options.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 Xc?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof Or?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof Qc&&e.code===zf.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 jf)||e.scrollBehavior==="manual")return;let n={behavior:"instant"};e.position?this.options.scrollPositionRestoration==="top"?this.viewportScroller.scrollToPosition([0,0],n):this.options.scrollPositionRestoration==="enabled"&&this.viewportScroller.scrollToPosition(e.position,n):e.anchor&&this.options.anchorScrolling==="enabled"?this.viewportScroller.scrollToAnchor(e.anchor):this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.scrollToPosition([0,0])})}scheduleScrollEvent(e,n){let o=sr(this.transitions.currentNavigation)?.extras.scroll;this.zone.runOutsideAngular(async()=>{await new Promise(r=>{setTimeout(r),typeof requestAnimationFrame<"u"&&requestAnimationFrame(r)}),this.zone.run(()=>{this.transitions.events.next(new jf(e,this.lastSource==="popstate"?this.store[this.restoredId]:null,n,o))})})}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static \u0275fac=function(n){SC()};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function Hre(){return f(ut).routerState.root}function Kv(t,i){return{\u0275kind:t,\u0275providers:i}}function Ure(){let t=f(Di);return i=>{let e=t.get(xE);if(i!==e.components[0])return;let n=t.get(ut),o=t.get(O7);t.get(O3)===1&&n.initialNavigation(),t.get(F7,null,{optional:!0})?.setUpPreloading(),t.get(A7,null,{optional:!0})?.init(),n.resetRootComponentType(e.componentTypes[0]),o.closed||(o.next(),o.complete(),o.unsubscribe())}}var O7=new kt("",{factory:()=>new Le}),O3=new kt("",{factory:()=>1});function N7(){let t=[{provide:y5,useValue:!0},{provide:O3,useValue:0},CE(()=>{let i=f(Di);return i.get(V5,Promise.resolve()).then(()=>new Promise(n=>{let o=i.get(ut),r=i.get(O7);Ry(o,()=>{n(!0)}),i.get(Oy).afterPreactivation=()=>(n(!0),r.closed?xt(void 0):r),o.initialNavigation()}))})];return Kv(2,t)}function R7(){let t=[CE(()=>{f(ut).setUpLocationChangeListener()}),{provide:O3,useValue:2}];return Kv(3,t)}var F7=new kt("");function L7(t){return Kv(0,[{provide:F7,useExisting:I7},{provide:Yv,useExisting:t}])}function B7(){return Kv(8,[w3,{provide:Xv,useExisting:w3}])}function V7(t){bE("NgRouterViewTransitions");let i=[{provide:E3,useValue:E7},{provide:D3,useValue:H({skipNextTransition:!!t?.skipInitialTransition},t)}];return Kv(9,i)}var z7=[yc,{provide:Km,useClass:Bd},ut,qu,{provide:Ye,useFactory:Hre},Iy,[]],at=(()=>{class t{constructor(){}static forRoot(e,n){return{ngModule:t,providers:[z7,[],{provide:Xf,multi:!0,useValue:e},[],n?.errorHandler?{provide:P3,useValue:n.errorHandler}:[],{provide:Zm,useValue:n||{}},n?.useHash?Wre():qre(),Gre(),n?.preloadingStrategy?L7(n.preloadingStrategy).\u0275providers:[],n?.initialNavigation?Xre(n):[],n?.bindToComponentInputs?B7().\u0275providers:[],n?.enableViewTransitions?V7().\u0275providers:[],Qre()]}}static forChild(e){return{ngModule:t,providers:[{provide:Xf,multi:!0,useValue:e}]}}static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({})}return t})();function Gre(){return{provide:A7,useFactory:()=>{let t=f(yE),i=f(Zm);return i.scrollOffset&&t.setOffset(i.scrollOffset),new $re(i)}}}function Wre(){return{provide:$_,useClass:j5}}function qre(){return{provide:$_,useClass:z5}}function Xre(t){return[t.initialNavigation==="disabled"?R7().\u0275providers:[],t.initialNavigation==="enabledBlocking"?N7().\u0275providers:[]]}var I3=new kt("");function Qre(){return[{provide:I3,useFactory:Ure},{provide:D5,multi:!0,useExisting:I3}]}var Xu=class{visible;error;clear;constructor(i,e,n=!1){this.visible=i,this.error=e,this.clear=n}},zo=(()=>{class t{state=new qt(new Xu(!1));constructor(){}setError(e){this.state.next(new Xu(!1,e.error))}clear(){this.state.next(new Xu(!1,null,!0))}activate(){this.state.next(new Xu(!0))}deactivate(){this.state.next(new Xu(!1))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Yre=["determinateSpinner"];function Kre(t,i){if(t&1&&(Vn(),s(0,"svg",11),F(1,"circle",12),l()),t&2){let e=b();It("viewBox",e._viewBox()),u(),yn("stroke-dasharray",e._strokeCircumference(),"px")("stroke-dashoffset",e._strokeCircumference()/2,"px")("stroke-width",e._circleStrokeWidth(),"%"),It("r",e._circleRadius())}}var Zre=new kt("mat-progress-spinner-default-options",{providedIn:"root",factory:()=>({diameter:j7})}),j7=100,Jre=10,Xo=(()=>{class t{_elementRef=f(Lt);_noopAnimations;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;_defaultColor="primary";_determinateCircle;constructor(){let e=f(Zre),n=GC(),o=this._elementRef.nativeElement;this._noopAnimations=n==="di-disabled"&&!!e&&!e._forceAnimations,this.mode=o.nodeName.toLowerCase()==="mat-spinner"?"indeterminate":"determinate",!this._noopAnimations&&n==="reduced-motion"&&o.classList.add("mat-progress-spinner-reduced-motion"),e&&(e.color&&(this.color=this._defaultColor=e.color),e.diameter&&(this.diameter=e.diameter),e.strokeWidth&&(this.strokeWidth=e.strokeWidth))}mode;get value(){return this.mode==="determinate"?this._value:0}set value(e){this._value=Math.max(0,Math.min(100,e||0))}_value=0;get diameter(){return this._diameter}set diameter(e){this._diameter=e||0}_diameter=j7;get strokeWidth(){return this._strokeWidth??this.diameter/10}set strokeWidth(e){this._strokeWidth=e||0}_strokeWidth;_circleRadius(){return(this.diameter-Jre)/2}_viewBox(){let e=this._circleRadius()*2+this.strokeWidth;return`0 0 ${e} ${e}`}_strokeCircumference(){return 2*Math.PI*this._circleRadius()}_strokeDashOffset(){return this.mode==="determinate"?this._strokeCircumference()*(100-this._value)/100:null}_circleStrokeWidth(){return this.strokeWidth/this.diameter*100}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-progress-spinner"],["mat-spinner"]],viewQuery:function(n,o){if(n&1&&gn(Yre,5),n&2){let r;gt(r=_t())&&(o._determinateCircle=r.first)}},hostAttrs:["role","progressbar","tabindex","-1",1,"mat-mdc-progress-spinner","mdc-circular-progress"],hostVars:18,hostBindings:function(n,o){n&2&&(It("aria-valuemin",0)("aria-valuemax",100)("aria-valuenow",o.mode==="determinate"?o.value:null)("mode",o.mode),Mo("mat-"+o.color),yn("width",o.diameter,"px")("height",o.diameter,"px")("--mat-progress-spinner-size",o.diameter+"px")("--mat-progress-spinner-active-indicator-width",o.diameter+"px"),je("_mat-animation-noopable",o._noopAnimations)("mdc-circular-progress--indeterminate",o.mode==="indeterminate"))},inputs:{color:"color",mode:"mode",value:[2,"value","value",io],diameter:[2,"diameter","diameter",io],strokeWidth:[2,"strokeWidth","strokeWidth",io]},exportAs:["matProgressSpinner"],decls:14,vars:11,consts:[["circle",""],["determinateSpinner",""],["aria-hidden","true",1,"mdc-circular-progress__determinate-container"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__determinate-circle-graphic"],["cx","50%","cy","50%",1,"mdc-circular-progress__determinate-circle"],["aria-hidden","true",1,"mdc-circular-progress__indeterminate-container"],[1,"mdc-circular-progress__spinner-layer"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-left"],[3,"ngTemplateOutlet"],[1,"mdc-circular-progress__gap-patch"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-right"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__indeterminate-circle-graphic"],["cx","50%","cy","50%"]],template:function(n,o){if(n&1&&(Ae(0,Kre,2,8,"ng-template",null,0,Jp),s(2,"div",2,1),Vn(),s(4,"svg",3),F(5,"circle",4),l()(),vr(),s(6,"div",5)(7,"div",6)(8,"div",7),Xi(9,8),l(),s(10,"div",9),Xi(11,8),l(),s(12,"div",10),Xi(13,8),l()()()),n&2){let r=Re(1);u(4),It("viewBox",o._viewBox()),u(),yn("stroke-dasharray",o._strokeCircumference(),"px")("stroke-dashoffset",o._strokeDashOffset(),"px")("stroke-width",o._circleStrokeWidth(),"%"),It("r",o._circleRadius()),u(4),x("ngTemplateOutlet",r),u(2),x("ngTemplateOutlet",r),u(2),x("ngTemplateOutlet",r)}},dependencies:[H_],styles:[`.mat-mdc-progress-spinner{--mat-progress-spinner-animation-multiplier: 1;display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity 250ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-progress-spinner circle{stroke-width:var(--mat-progress-spinner-active-indicator-width, 4px)}.mat-mdc-progress-spinner._mat-animation-noopable,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__determinate-circle{transition:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__spinner-layer,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container{animation:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container circle{stroke-dasharray:0 !important}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle{stroke:currentColor;stroke:CanvasText}}.mat-progress-spinner-reduced-motion{--mat-progress-spinner-animation-multiplier: 1.25}.mdc-circular-progress__determinate-container,.mdc-circular-progress__indeterminate-circle-graphic,.mdc-circular-progress__indeterminate-container,.mdc-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}.mdc-circular-progress__determinate-container{transform:rotate(-90deg)}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{opacity:0}.mdc-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{opacity:1;animation:mdc-circular-progress-container-rotate calc(1568.2352941176ms*var(--mat-progress-spinner-animation-multiplier)) linear infinite}.mdc-circular-progress__determinate-circle-graphic,.mdc-circular-progress__indeterminate-circle-graphic{fill:rgba(0,0,0,0)}.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--mat-progress-spinner-active-indicator-color, var(--mat-sys-primary))}@media(forced-colors: active){.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}.mdc-circular-progress__determinate-circle{transition:stroke-dashoffset 500ms cubic-bezier(0, 0, 0.2, 1)}.mdc-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{left:-100%}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin calc(1333ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin calc(1333ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.mdc-circular-progress--indeterminate .mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate calc(5332ms*var(--mat-progress-spinner-animation-multiplier)) cubic-bezier(0.4, 0, 0.2, 1) infinite both}@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}@keyframes mdc-circular-progress-left-spin{from{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes mdc-circular-progress-right-spin{from{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}
|
||
`],encapsulation:2,changeDetection:0})}return t})();var Si=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[wn]})}return t})();function $7(t){return Error(`Unable to find icon with the name "${t}"`)}function eae(){return Error("Could not find HttpClient for use with Angular Material icons. Please add provideHttpClient() to your providers.")}function H7(t){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${t}".`)}function U7(t){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${t}".`)}var jd=class{url;svgText;options;svgElement=null;constructor(i,e,n){this.url=i,this.svgText=e,this.options=n}},Ly=(()=>{class t{_httpClient;_sanitizer;_errorHandler;_document;_svgIconConfigs=new Map;_iconSetConfigs=new Map;_cachedIconsByUrl=new Map;_inProgressUrlFetches=new Map;_fontCssClassesByAlias=new Map;_resolvers=[];_defaultFontSetClass=["material-icons","mat-ligature-font"];constructor(e,n,o,r){this._httpClient=e,this._sanitizer=n,this._errorHandler=r,this._document=o}addSvgIcon(e,n,o){return this.addSvgIconInNamespace("",e,n,o)}addSvgIconLiteral(e,n,o){return this.addSvgIconLiteralInNamespace("",e,n,o)}addSvgIconInNamespace(e,n,o,r){return this._addSvgIconConfig(e,n,new jd(o,null,r))}addSvgIconResolver(e){return this._resolvers.push(e),this}addSvgIconLiteralInNamespace(e,n,o,r){let a=this._sanitizer.sanitize(xd.HTML,o);if(!a)throw U7(o);let c=Rh(a);return this._addSvgIconConfig(e,n,new jd("",c,r))}addSvgIconSet(e,n){return this.addSvgIconSetInNamespace("",e,n)}addSvgIconSetLiteral(e,n){return this.addSvgIconSetLiteralInNamespace("",e,n)}addSvgIconSetInNamespace(e,n,o){return this._addSvgIconSetConfig(e,new jd(n,null,o))}addSvgIconSetLiteralInNamespace(e,n,o){let r=this._sanitizer.sanitize(xd.HTML,n);if(!r)throw U7(n);let a=Rh(r);return this._addSvgIconSetConfig(e,new jd("",a,o))}registerFontClassAlias(e,n=e){return this._fontCssClassesByAlias.set(e,n),this}classNameForFontAlias(e){return this._fontCssClassesByAlias.get(e)||e}setDefaultFontSetClass(...e){return this._defaultFontSetClass=e,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(e){let n=this._sanitizer.sanitize(xd.RESOURCE_URL,e);if(!n)throw H7(e);let o=this._cachedIconsByUrl.get(n);return o?xt(Fy(o)):this._loadSvgIconFromConfig(new jd(e,null)).pipe(vi(r=>this._cachedIconsByUrl.set(n,r)),yt(r=>Fy(r)))}getNamedSvgIcon(e,n=""){let o=G7(n,e),r=this._svgIconConfigs.get(o);if(r)return this._getSvgFromConfig(r);if(r=this._getIconConfigFromResolvers(n,e),r)return this._svgIconConfigs.set(o,r),this._getSvgFromConfig(r);let a=this._iconSetConfigs.get(n);return a?this._getSvgFromIconSetConfigs(e,a):zi($7(o))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(e){return e.svgText?xt(Fy(this._svgElementFromConfig(e))):this._loadSvgIconFromConfig(e).pipe(yt(n=>Fy(n)))}_getSvgFromIconSetConfigs(e,n){let o=this._extractIconWithNameFromAnySet(e,n);if(o)return xt(o);let r=n.filter(a=>!a.svgText).map(a=>this._loadSvgIconSetFromConfig(a).pipe(hi(c=>{let p=`Loading icon set URL: ${this._sanitizer.sanitize(xd.RESOURCE_URL,a.url)} failed: ${c.message}`;return this._errorHandler.handleError(new Error(p)),xt(null)})));return lo(r).pipe(yt(()=>{let a=this._extractIconWithNameFromAnySet(e,n);if(!a)throw $7(e);return a}))}_extractIconWithNameFromAnySet(e,n){for(let o=n.length-1;o>=0;o--){let r=n[o];if(r.svgText&&r.svgText.toString().indexOf(e)>-1){let a=this._svgElementFromConfig(r),c=this._extractSvgIconFromSet(a,e,r.options);if(c)return c}}return null}_loadSvgIconFromConfig(e){return this._fetchIcon(e).pipe(vi(n=>e.svgText=n),yt(()=>this._svgElementFromConfig(e)))}_loadSvgIconSetFromConfig(e){return e.svgText?xt(null):this._fetchIcon(e).pipe(vi(n=>e.svgText=n))}_extractSvgIconFromSet(e,n,o){let r=e.querySelector(`[id="${n}"]`);if(!r)return null;let a=r.cloneNode(!0);if(a.removeAttribute("id"),a.nodeName.toLowerCase()==="svg")return this._setSvgAttributes(a,o);if(a.nodeName.toLowerCase()==="symbol")return this._setSvgAttributes(this._toSvgElement(a),o);let c=this._svgElementFromString(Rh("<svg></svg>"));return c.appendChild(a),this._setSvgAttributes(c,o)}_svgElementFromString(e){let n=this._document.createElement("DIV");n.innerHTML=e;let o=n.querySelector("svg");if(!o)throw Error("<svg> tag not found");return o}_toSvgElement(e){let n=this._svgElementFromString(Rh("<svg></svg>")),o=e.attributes;for(let r=0;r<o.length;r++){let{name:a,value:c}=o[r];a!=="id"&&n.setAttribute(a,c)}for(let r=0;r<e.childNodes.length;r++)e.childNodes[r].nodeType===this._document.ELEMENT_NODE&&n.appendChild(e.childNodes[r].cloneNode(!0));return n}_setSvgAttributes(e,n){return e.setAttribute("fit",""),e.setAttribute("height","100%"),e.setAttribute("width","100%"),e.setAttribute("preserveAspectRatio","xMidYMid meet"),e.setAttribute("focusable","false"),n&&n.viewBox&&e.setAttribute("viewBox",n.viewBox),e}_fetchIcon(e){let{url:n,options:o}=e,r=o?.withCredentials??!1;if(!this._httpClient)throw eae();if(n==null)throw Error(`Cannot fetch icon from URL "${n}".`);let a=this._sanitizer.sanitize(xd.RESOURCE_URL,n);if(!a)throw H7(n);let c=this._inProgressUrlFetches.get(a);if(c)return c;let m=this._httpClient.get(a,{responseType:"text",withCredentials:r}).pipe(yt(p=>Rh(p)),bC(()=>this._inProgressUrlFetches.delete(a)),As());return this._inProgressUrlFetches.set(a,m),m}_addSvgIconConfig(e,n,o){return this._svgIconConfigs.set(G7(e,n),o),this}_addSvgIconSetConfig(e,n){let o=this._iconSetConfigs.get(e);return o?o.push(n):this._iconSetConfigs.set(e,[n]),this}_svgElementFromConfig(e){if(!e.svgElement){let n=this._svgElementFromString(e.svgText);this._setSvgAttributes(n,e.options),e.svgElement=n}return e.svgElement}_getIconConfigFromResolvers(e,n){for(let o=0;o<this._resolvers.length;o++){let r=this._resolvers[o](n,e);if(r)return tae(r)?new jd(r.url,null,r.options):new jd(r,null)}}static \u0275fac=function(n){return new(n||t)(ge(os,8),ge(lr),ge(Pi,8),ge(Sh))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Fy(t){return t.cloneNode(!0)}function G7(t,i){return t+":"+i}function tae(t){return!!(t.url&&t.options)}var nae=["*"],iae=new kt("MAT_ICON_DEFAULT_OPTIONS"),oae=new kt("mat-icon-location",{providedIn:"root",factory:()=>{let t=f(Pi),i=t?t.location:null;return{getPathname:()=>i?i.pathname+i.search:""}}}),W7=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],rae=W7.map(t=>`[${t}]`).join(", "),aae=/^url\(['"]?#(.*?)['"]?\)$/,se=(()=>{class t{_elementRef=f(Lt);_iconRegistry=f(Ly);_location=f(oae);_errorHandler=f(Sh);_defaultColor;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;inline=!1;get svgIcon(){return this._svgIcon}set svgIcon(e){e!==this._svgIcon&&(e?this._updateSvgIcon(e):this._svgIcon&&this._clearSvgElement(),this._svgIcon=e)}_svgIcon;get fontSet(){return this._fontSet}set fontSet(e){let n=this._cleanupFontValue(e);n!==this._fontSet&&(this._fontSet=n,this._updateFontIconClasses())}_fontSet;get fontIcon(){return this._fontIcon}set fontIcon(e){let n=this._cleanupFontValue(e);n!==this._fontIcon&&(this._fontIcon=n,this._updateFontIconClasses())}_fontIcon;_previousFontSetClass=[];_previousFontIconClass;_svgName=null;_svgNamespace=null;_previousPath;_elementsWithExternalReferences;_currentIconFetch=so.EMPTY;constructor(){let e=f(new ka("aria-hidden"),{optional:!0}),n=f(iae,{optional:!0});n&&(n.color&&(this.color=this._defaultColor=n.color),n.fontSet&&(this.fontSet=n.fontSet)),e||this._elementRef.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(e){if(!e)return["",""];let n=e.split(":");switch(n.length){case 1:return["",n[0]];case 2:return n;default:throw Error(`Invalid icon name: "${e}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){let e=this._elementsWithExternalReferences;if(e&&e.size){let n=this._location.getPathname();n!==this._previousPath&&(this._previousPath=n,this._prependPathToReferences(n))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(e){this._clearSvgElement();let n=this._location.getPathname();this._previousPath=n,this._cacheChildrenWithExternalReferences(e),this._prependPathToReferences(n),this._elementRef.nativeElement.appendChild(e)}_clearSvgElement(){let e=this._elementRef.nativeElement,n=e.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();n--;){let o=e.childNodes[n];(o.nodeType!==1||o.nodeName.toLowerCase()==="svg")&&o.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;let e=this._elementRef.nativeElement,n=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(o=>o.length>0);this._previousFontSetClass.forEach(o=>e.classList.remove(o)),n.forEach(o=>e.classList.add(o)),this._previousFontSetClass=n,this.fontIcon!==this._previousFontIconClass&&!n.includes("mat-ligature-font")&&(this._previousFontIconClass&&e.classList.remove(this._previousFontIconClass),this.fontIcon&&e.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(e){return typeof e=="string"?e.trim().split(" ")[0]:e}_prependPathToReferences(e){let n=this._elementsWithExternalReferences;n&&n.forEach((o,r)=>{o.forEach(a=>{r.setAttribute(a.name,`url('${e}#${a.value}')`)})})}_cacheChildrenWithExternalReferences(e){let n=e.querySelectorAll(rae),o=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let r=0;r<n.length;r++)W7.forEach(a=>{let c=n[r],m=c.getAttribute(a),p=m?m.match(aae):null;if(p){let h=o.get(c);h||(h=[],o.set(c,h)),h.push({name:a,value:p[1]})}})}_updateSvgIcon(e){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),e){let[n,o]=this._splitIconName(e);n&&(this._svgNamespace=n),o&&(this._svgName=o),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(o,n).pipe(wi(1)).subscribe(r=>this._setSvgElement(r),r=>{let a=`Error retrieving icon ${n}:${o}! ${r.message}`;this._errorHandler.handleError(new Error(a))})}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:10,hostBindings:function(n,o){n&2&&(It("data-mat-icon-type",o._usingFontIcon()?"font":"svg")("data-mat-icon-name",o._svgName||o.fontIcon)("data-mat-icon-namespace",o._svgNamespace||o.fontSet)("fontIcon",o._usingFontIcon()?o.fontIcon:null),Mo(o.color?"mat-"+o.color:""),je("mat-icon-inline",o.inline)("mat-icon-no-color",o.color!=="primary"&&o.color!=="accent"&&o.color!=="warn"))},inputs:{color:"color",inline:[2,"inline","inline",dt],svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],ngContentSelectors:nae,decls:1,vars:0,template:function(n,o){n&1&&(En(),Yt(0))},styles:[`mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color, inherit)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),te=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[wn]})}return t})();var sae=["mat-icon-button",""],lae=["*"],cae=new kt("MAT_BUTTON_CONFIG");function q7(t){return t==null?void 0:io(t)}var R3=(()=>{class t{_elementRef=f(Lt);_ngZone=f(bi);_animationsDisabled=Qi();_config=f(cae,{optional:!0});_focusMonitor=f(xr);_cleanupClick;_renderer=f(ii);_rippleLoader=f(WC);_isAnchor;_isFab=!1;color;get disableRipple(){return this._disableRipple}set disableRipple(e){this._disableRipple=e,this._updateRippleDisabled()}_disableRipple=!1;get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._updateRippleDisabled()}_disabled=!1;ariaDisabled;disabledInteractive;tabIndex;set _tabindex(e){this.tabIndex=e}constructor(){f(Go).load(yr);let e=this._elementRef.nativeElement;this._isAnchor=e.tagName==="A",this.disabledInteractive=this._config?.disabledInteractive??!1,this.color=this._config?.color??null,this._rippleLoader?.configureRipple(e,{className:"mat-mdc-button-ripple"})}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0),this._isAnchor&&this._setupAsAnchor()}ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement)}focus(e="program",n){e?this._focusMonitor.focusVia(this._elementRef.nativeElement,e,n):this._elementRef.nativeElement.focus(n)}_getAriaDisabled(){return this.ariaDisabled!=null?this.ariaDisabled:this._isAnchor?this.disabled||null:this.disabled&&this.disabledInteractive?!0:null}_getDisabledAttribute(){return this.disabledInteractive||!this.disabled?null:!0}_updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementRef.nativeElement,this.disableRipple||this.disabled)}_getTabIndex(){return this._isAnchor?this.disabled&&!this.disabledInteractive?-1:this.tabIndex:this.tabIndex}_setupAsAnchor(){this._cleanupClick=this._ngZone.runOutsideAngular(()=>this._renderer.listen(this._elementRef.nativeElement,"click",e=>{this.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}))}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,hostAttrs:[1,"mat-mdc-button-base"],hostVars:13,hostBindings:function(n,o){n&2&&(It("disabled",o._getDisabledAttribute())("aria-disabled",o._getAriaDisabled())("tabindex",o._getTabIndex()),Mo(o.color?"mat-"+o.color:""),je("mat-mdc-button-disabled",o.disabled)("mat-mdc-button-disabled-interactive",o.disabledInteractive)("mat-unthemed",!o.color)("_mat-animation-noopable",o._animationsDisabled))},inputs:{color:"color",disableRipple:[2,"disableRipple","disableRipple",dt],disabled:[2,"disabled","disabled",dt],ariaDisabled:[2,"aria-disabled","ariaDisabled",dt],disabledInteractive:[2,"disabledInteractive","disabledInteractive",dt],tabIndex:[2,"tabIndex","tabIndex",q7],_tabindex:[2,"tabindex","_tabindex",q7]}})}return t})(),ze=(()=>{class t extends R3{constructor(){super(),this._rippleLoader.configureRipple(this._elementRef.nativeElement,{centered:!0})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["button","mat-icon-button",""],["a","mat-icon-button",""],["button","matIconButton",""],["a","matIconButton",""]],hostAttrs:[1,"mdc-icon-button","mat-mdc-icon-button"],exportAs:["matButton","matAnchor"],features:[xn],attrs:sae,ngContentSelectors:lae,decls:4,vars:0,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(n,o){n&1&&(En(),jr(0,"span",0),Yt(1),jr(2,"span",1)(3,"span",2))},styles:[`.mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%));flex-shrink:0;text-align:center;width:var(--mat-icon-button-state-layer-size, 40px);height:var(--mat-icon-button-state-layer-size, 40px);padding:calc(calc(var(--mat-icon-button-state-layer-size, 40px) - var(--mat-icon-button-icon-size, 24px)) / 2);font-size:var(--mat-icon-button-icon-size, 24px);color:var(--mat-icon-button-icon-color, var(--mat-sys-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-icon-button:focus-visible>.mat-focus-indicator::before{content:"";border-radius:inherit}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface-variant) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-icon-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-icon-button-touch-target-size, 48px);display:var(--mat-icon-button-touch-target-display, block);left:50%;width:var(--mat-icon-button-touch-target-size, 48px);transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-icon-button-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mat-icon-button-icon-size, 24px);height:var(--mat-icon-button-icon-size, 24px);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%))}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}
|
||
`,`@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}
|
||
`],encapsulation:2,changeDetection:0})}return t})();var dae=["matButton",""],mae=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],pae=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"];var X7=new Map([["text",["mat-mdc-button"]],["filled",["mdc-button--unelevated","mat-mdc-unelevated-button"]],["elevated",["mdc-button--raised","mat-mdc-raised-button"]],["outlined",["mdc-button--outlined","mat-mdc-outlined-button"]],["tonal",["mat-tonal-button"]]]),le=(()=>{class t extends R3{get appearance(){return this._appearance}set appearance(e){this.setAppearance(e||this._config?.defaultAppearance||"text")}_appearance=null;constructor(){super();let e=uae(this._elementRef.nativeElement);e&&this.setAppearance(e)}setAppearance(e){if(e===this._appearance)return;let n=this._elementRef.nativeElement.classList,o=this._appearance?X7.get(this._appearance):null,r=X7.get(e);o&&n.remove(...o),n.add(...r),this._appearance=e}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["button","matButton",""],["a","matButton",""],["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""],["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostAttrs:[1,"mdc-button"],inputs:{appearance:[0,"matButton","appearance"]},exportAs:["matButton","matAnchor"],features:[xn],attrs:dae,ngContentSelectors:pae,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(n,o){n&1&&(En(mae),jr(0,"span",0),Yt(1),_o(2,"span",1),Yt(3,1),wo(),Yt(4,2),jr(5,"span",2)(6,"span",3)),n&2&&je("mdc-button__ripple",!o._isFab)("mdc-fab__ripple",o._isFab)},styles:[`.mat-mdc-button-base{text-decoration:none}.mat-mdc-button-base .mat-icon{min-height:fit-content;flex-shrink:0}@media(hover: none){.mat-mdc-button-base:hover>span.mat-mdc-button-persistent-ripple::before{opacity:0}}.mdc-button{-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0);padding:0 8px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__label{position:relative}.mat-mdc-button{padding:0 var(--mat-button-text-horizontal-padding, 12px);height:var(--mat-button-text-container-height, 40px);font-family:var(--mat-button-text-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-text-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-text-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-text-label-text-transform);font-weight:var(--mat-button-text-label-text-weight, var(--mat-sys-label-large-weight))}.mat-mdc-button,.mat-mdc-button .mdc-button__ripple{border-radius:var(--mat-button-text-container-shape, var(--mat-sys-corner-full))}.mat-mdc-button:not(:disabled){color:var(--mat-button-text-label-text-color, var(--mat-sys-primary))}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-text-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-button-text-with-icon-horizontal-padding, 16px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-offset, -4px);margin-left:var(--mat-button-text-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-text-icon-spacing, 8px);margin-left:var(--mat-button-text-icon-offset, -4px)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-button-text-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-state-layer-color, var(--mat-sys-primary))}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-text-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-text-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-text-touch-target-size, 48px);display:var(--mat-button-text-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-filled-container-height, 40px);font-family:var(--mat-button-filled-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-filled-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-filled-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-filled-label-text-transform);font-weight:var(--mat-button-filled-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-filled-horizontal-padding, 24px)}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-offset, -8px);margin-left:var(--mat-button-filled-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-filled-icon-spacing, 8px);margin-left:var(--mat-button-filled-icon-offset, -8px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-button-filled-ripple-color, color-mix(in srgb, var(--mat-sys-on-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-state-layer-color, var(--mat-sys-on-primary))}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-filled-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-unelevated-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-unelevated-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-unelevated-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-filled-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-filled-touch-target-size, 48px);display:var(--mat-button-filled-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mat-button-filled-label-text-color, var(--mat-sys-on-primary));background-color:var(--mat-button-filled-container-color, var(--mat-sys-primary))}.mat-mdc-unelevated-button,.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mat-button-filled-container-shape, var(--mat-sys-corner-full))}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-filled-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-filled-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);box-shadow:var(--mat-button-protected-container-elevation-shadow, var(--mat-sys-level1));height:var(--mat-button-protected-container-height, 40px);font-family:var(--mat-button-protected-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-protected-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-protected-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-protected-label-text-transform);font-weight:var(--mat-button-protected-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-protected-horizontal-padding, 24px)}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-offset, -8px);margin-left:var(--mat-button-protected-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-protected-icon-spacing, 8px);margin-left:var(--mat-button-protected-icon-offset, -8px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-button-protected-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-state-layer-color, var(--mat-sys-primary))}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-protected-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-raised-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-raised-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-raised-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-protected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-protected-touch-target-size, 48px);display:var(--mat-button-protected-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-raised-button:not(:disabled){color:var(--mat-button-protected-label-text-color, var(--mat-sys-primary));background-color:var(--mat-button-protected-container-color, var(--mat-sys-surface))}.mat-mdc-raised-button,.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mat-button-protected-container-shape, var(--mat-sys-corner-full))}@media(hover: hover){.mat-mdc-raised-button:hover{box-shadow:var(--mat-button-protected-hover-container-elevation-shadow, var(--mat-sys-level2))}}.mat-mdc-raised-button:focus{box-shadow:var(--mat-button-protected-focus-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mat-button-protected-pressed-container-elevation-shadow, var(--mat-sys-level1))}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-protected-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-protected-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mat-button-protected-disabled-container-elevation-shadow, var(--mat-sys-level0))}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-outlined-container-height, 40px);font-family:var(--mat-button-outlined-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-outlined-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-outlined-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-outlined-label-text-transform);font-weight:var(--mat-button-outlined-label-text-weight, var(--mat-sys-label-large-weight));border-radius:var(--mat-button-outlined-container-shape, var(--mat-sys-corner-full));border-width:var(--mat-button-outlined-outline-width, 1px);padding:0 var(--mat-button-outlined-horizontal-padding, 24px)}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-offset, -8px);margin-left:var(--mat-button-outlined-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-outlined-icon-spacing, 8px);margin-left:var(--mat-button-outlined-icon-offset, -8px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-button-outlined-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-state-layer-color, var(--mat-sys-primary))}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-outlined-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-outlined-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-outlined-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-outlined-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-outlined-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-outlined-touch-target-size, 48px);display:var(--mat-button-outlined-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-outlined-button:not(:disabled){color:var(--mat-button-outlined-label-text-color, var(--mat-sys-primary));border-color:var(--mat-button-outlined-outline-color, var(--mat-sys-outline))}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-outlined-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:var(--mat-button-outlined-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-button-tonal-container-height, 40px);font-family:var(--mat-button-tonal-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-tonal-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-button-tonal-label-text-tracking, var(--mat-sys-label-large-tracking));text-transform:var(--mat-button-tonal-label-text-transform);font-weight:var(--mat-button-tonal-label-text-weight, var(--mat-sys-label-large-weight));padding:0 var(--mat-button-tonal-horizontal-padding, 24px)}.mat-tonal-button:not(:disabled){color:var(--mat-button-tonal-label-text-color, var(--mat-sys-on-secondary-container));background-color:var(--mat-button-tonal-container-color, var(--mat-sys-secondary-container))}.mat-tonal-button,.mat-tonal-button .mdc-button__ripple{border-radius:var(--mat-button-tonal-container-shape, var(--mat-sys-corner-full))}.mat-tonal-button[disabled],.mat-tonal-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-button-tonal-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-tonal-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-tonal-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}[dir=rtl] .mat-tonal-button>.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}.mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-offset, -8px);margin-left:var(--mat-button-tonal-icon-spacing, 8px)}[dir=rtl] .mat-tonal-button .mdc-button__label+.mat-icon{margin-right:var(--mat-button-tonal-icon-spacing, 8px);margin-left:var(--mat-button-tonal-icon-offset, -8px)}.mat-tonal-button .mat-ripple-element{background-color:var(--mat-button-tonal-ripple-color, color-mix(in srgb, var(--mat-sys-on-secondary-container) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-tonal-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-tonal-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-button-tonal-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-tonal-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-tonal-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-tonal-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-tonal-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-button-tonal-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-tonal-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-button-tonal-touch-target-size, 48px);display:var(--mat-button-tonal-touch-target-display, block);left:0;right:0;transform:translateY(-50%)}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button,.mat-tonal-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-tonal-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before,.mat-tonal-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon,.mat-tonal-button .mdc-button__label,.mat-tonal-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-focus-indicator,.mat-mdc-unelevated-button .mat-focus-indicator,.mat-mdc-raised-button .mat-focus-indicator,.mat-mdc-outlined-button .mat-focus-indicator,.mat-tonal-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-unelevated-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-raised-button:focus-visible>.mat-focus-indicator::before,.mat-mdc-outlined-button:focus-visible>.mat-focus-indicator::before,.mat-tonal-button:focus-visible>.mat-focus-indicator::before{content:"";border-radius:inherit}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable,.mat-tonal-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon,.mat-tonal-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px}.mat-mdc-unelevated-button .mat-focus-indicator::before,.mat-tonal-button .mat-focus-indicator::before,.mat-mdc-raised-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}
|
||
`,`@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}
|
||
`],encapsulation:2,changeDetection:0})}return t})();function uae(t){return t.hasAttribute("mat-raised-button")?"elevated":t.hasAttribute("mat-stroked-button")?"outlined":t.hasAttribute("mat-flat-button")?"filled":t.hasAttribute("mat-button")?"text":null}var $=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[ss,wn]})}return t})();function hae(t,i){t&1&&(s(0,"div",1),F(1,"mat-spinner",3),l())}function fae(t,i){if(t&1){let e=j();s(0,"div",2)(1,"div",4)(2,"mat-icon"),d(3,"error_outline"),l()(),s(4,"div"),d(5),l(),s(6,"div")(7,"button",5),v("click",function(){D(e);let o=b(2);return P(o.refresh())}),s(8,"mat-icon"),d(9,"refresh"),l()(),s(10,"button",6)(11,"mat-icon"),d(12,"home"),l()()()()}if(t&2){let e,n=b(2);u(5),X("Error occurred: ",(e=n.error())==null?null:e.message)}}function gae(t,i){if(t&1&&(s(0,"div",0),A(1,hae,2,0,"div",1),A(2,fae,13,1,"div",2),l()),t&2){let e=b();u(),O(e.visible()&&!e.error()?1:-1),u(),O(e.error()?2:-1)}}var Jm=(()=>{class t{progressService=f(zo);router=f(ut);visible=me(!1);error=me(null);routerSubscription;ngOnInit(){this.progressService.state.subscribe(e=>{this.visible.set(e.visible),e.error&&!this.error()&&this.error.set(e.error),e.clear&&this.error.set(null)}),this.routerSubscription=this.router.events.subscribe(()=>{this.progressService.clear()})}refresh(){this.router.navigateByUrl(this.router.url)}ngOnDestroy(){this.routerSubscription.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-progress"]],decls:1,vars:1,consts:[[1,"overlay"],[1,"loading-spinner"],[1,"error-state"],["color","primary"],[1,"error-icon"],["mat-button","","matTooltip","Refresh page","matTooltipClass","custom-tooltip",3,"click"],["mat-button","","routerLink","/","matTooltip","Go to home","matTooltipClass","custom-tooltip"]],template:function(n,o){n&1&&A(0,gae,3,2,"div",0),n&2&&O(o.visible()||o.error()?0:-1)},dependencies:[Z,Si,Xo,te,se,$,le,Gt,Kt,cn],styles:[".overlay[_ngcontent-%COMP%]{position:fixed;width:100%;height:100%;inset:0;background-color:color-mix(in srgb,var(--mat-sys-shadow) 50%,transparent);z-index:2000}.loading-spinner[_ngcontent-%COMP%], .error-state[_ngcontent-%COMP%]{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.error-state[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{text-align:center}.error-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:64px;width:64px;height:64px}"],changeDetection:0})}return t})();var Qf=class{authToken;id;name;location;host;port;path;ubridge_path;status="stopped";protocol;username;password;tokenExpired=!1};var We=(()=>{class t{httpController;controllerIds=[];serviceInitialized=new Le;isServiceInitialized;constructor(e){this.httpController=e,this.controllerIds=this.getcontrollerIds(),this.isServiceInitialized=!0,this.serviceInitialized.next(this.isServiceInitialized)}getcontrollerIds(){let e=localStorage.getItem("controllerIds");if(e?.length>0){let n=e.split(",");return[...new Set(n)].filter(o=>o&&o.trim().length>0)}return[]}updatecontrollerIds(){localStorage.removeItem("controllerIds"),localStorage.setItem("controllerIds",this.controllerIds.toString())}get(e){let n=JSON.parse(localStorage.getItem(`controller-${e}`));return new Promise(r=>{r(n)})}create(e){if(this.findAllSync().some(c=>c.name===e.name))return Promise.reject(new Error(`Controller with name "${e.name}" already exists`));let o=this.controllerIds.map(c=>parseInt(c.replace("controller-",""),10)).filter(c=>!isNaN(c)),r=o.length>0?Math.max(...o):0;return e.id=r+1,localStorage.setItem(`controller-${e.id}`,JSON.stringify(e)),this.controllerIds.push(`controller-${e.id}`),this.updatecontrollerIds(),new Promise(c=>{c(e)})}findAllSync(){let e=[];return this.controllerIds.forEach(n=>{let o=localStorage.getItem(n);o&&e.push(JSON.parse(o))}),e}isControllerNameTaken(e){return this.findAllSync().some(o=>o.name===e)}update(e){return localStorage.removeItem(`controller-${e.id}`),localStorage.setItem(`controller-${e.id}`,JSON.stringify(e)),new Promise(o=>{o(e)})}findAll(){return new Promise(n=>{let o=[];this.controllerIds.forEach(r=>{let a=localStorage.getItem(r);if(a){let c=JSON.parse(a);o.push(c)}}),n(o)})}delete(e){return localStorage.removeItem(`controller-${e.id}`),this.controllerIds=this.controllerIds.filter(o=>o!==`controller-${e.id}`),this.updatecontrollerIds(),new Promise(o=>{o(e.id)})}getControllerUrl(e){return`${e.protocol}//${e.host}:${e.port}/`}checkControllerVersion(e){return this.httpController.get(e,"/version")}getLocalController(e,n){return new Promise((r,a)=>{this.findAll().then(c=>{let m=c.find(p=>p.location==="bundled");if(m)m.host=e,m.port=n,m.protocol=location.protocol,this.update(m).then(p=>{r(p)},a);else{let p=new Qf;p.name="local",p.host=e,p.port=n,p.location="bundled",p.protocol=location.protocol,this.create(p).then(h=>{r(h)},a)}},a)})}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var By=(()=>{class t{document;router=f(ut);controllerService=f(We);progressService=f(zo);constructor(e){this.document=e}ngOnInit(){this.progressService.activate(),setTimeout(()=>{let e;parseInt(this.document.location.port,10)?e=parseInt(this.document.location.port,10):this.document.location.protocol=="https:"?e=443:e=80,this.controllerService.getLocalController(this.document.location.hostname,e).then(n=>{this.router.navigate(["/controller",n.id,"projects"]),this.progressService.deactivate()})},100)}static \u0275fac=function(n){return new(n||t)(st(Pi))};static \u0275cmp=L({type:t,selectors:[["app-bundled-controller-finder"]],decls:1,vars:0,template:function(n,o){n&1&&F(0,"app-progress")},dependencies:[Jm],encapsulation:2,changeDetection:0})}return t})();var _ae=["mat-menu-item",""],vae=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],bae=["mat-icon, [matMenuItemIcon]","*"];function Cae(t,i){t&1&&(Vn(),s(0,"svg",2),F(1,"polygon",3),l())}var xae=["*"];function yae(t,i){if(t&1){let e=j();_o(0,"div",0),MC("click",function(){D(e);let o=b();return P(o.closed.emit("click"))})("animationstart",function(o){D(e);let r=b();return P(r._onAnimationStart(o.animationName))})("animationend",function(o){D(e);let r=b();return P(r._onAnimationDone(o.animationName))})("animationcancel",function(o){D(e);let r=b();return P(r._onAnimationDone(o.animationName))}),_o(1,"div",1),Yt(2),wo()()}if(t&2){let e=b();Mo(e._classList),je("mat-menu-panel-animations-disabled",e._animationsDisabled)("mat-menu-panel-exit-animation",e._panelAnimationState==="void")("mat-menu-panel-animating",e._isAnimating()),No("id",e.panelId),It("aria-label",e.ariaLabel||null)("aria-labelledby",e.ariaLabelledby||null)("aria-describedby",e.ariaDescribedby||null)}}var L3=new kt("MAT_MENU_PANEL"),ot=(()=>{class t{_elementRef=f(Lt);_document=f(Pi);_focusMonitor=f(xr);_parentMenu=f(L3,{optional:!0});_changeDetectorRef=f(K);role="menuitem";disabled=!1;disableRipple=!1;_hovered=new Le;_focused=new Le;_highlighted=!1;_triggersSubmenu=!1;constructor(){f(Go).load(yr),this._parentMenu?.addItem?.(this)}focus(e,n){this._focusMonitor&&e?this._focusMonitor.focusVia(this._getHostElement(),e,n):this._getHostElement().focus(n),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(e){this.disabled&&(e.preventDefault(),e.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){let e=this._elementRef.nativeElement.cloneNode(!0),n=e.querySelectorAll("mat-icon, .material-icons");for(let o=0;o<n.length;o++)n[o].remove();return e.textContent?.trim()||""}_setHighlighted(e){this._highlighted=e,this._changeDetectorRef.markForCheck()}_setTriggersSubmenu(e){this._triggersSubmenu=e,this._changeDetectorRef.markForCheck()}_hasFocus(){return this._document&&this._document.activeElement===this._getHostElement()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["","mat-menu-item",""]],hostAttrs:[1,"mat-mdc-menu-item","mat-focus-indicator"],hostVars:8,hostBindings:function(n,o){n&1&&v("click",function(a){return o._checkDisabled(a)})("mouseenter",function(){return o._handleMouseEnter()}),n&2&&(It("role",o.role)("tabindex",o._getTabIndex())("aria-disabled",o.disabled)("disabled",o.disabled||null),je("mat-mdc-menu-item-highlighted",o._highlighted)("mat-mdc-menu-item-submenu-trigger",o._triggersSubmenu))},inputs:{role:"role",disabled:[2,"disabled","disabled",dt],disableRipple:[2,"disableRipple","disableRipple",dt]},exportAs:["matMenuItem"],attrs:_ae,ngContentSelectors:bae,decls:5,vars:3,consts:[[1,"mat-mdc-menu-item-text"],["matRipple","",1,"mat-mdc-menu-ripple",3,"matRippleDisabled","matRippleTrigger"],["viewBox","0 0 5 10","focusable","false","aria-hidden","true",1,"mat-mdc-menu-submenu-icon"],["points","0,0 5,5 0,10"]],template:function(n,o){n&1&&(En(vae),Yt(0),s(1,"span",0),Yt(2,1),l(),F(3,"div",1),A(4,Cae,2,0,":svg:svg",2)),n&2&&(u(3),x("matRippleDisabled",o.disableRipple||o.disabled)("matRippleTrigger",o._getHostElement()),u(),O(o._triggersSubmenu?4:-1))},dependencies:[as],encapsulation:2,changeDetection:0})}return t})();var Sae=new kt("MatMenuContent");var wae=new kt("mat-menu-default-options",{providedIn:"root",factory:()=>({overlapTrigger:!1,xPosition:"after",yPosition:"below",backdropClass:"cdk-overlay-transparent-backdrop"})}),F3="_mat-menu-enter",Vy="_mat-menu-exit",Fn=(()=>{class t{_elementRef=f(Lt);_changeDetectorRef=f(K);_injector=f(Di);_keyManager;_xPosition;_yPosition;_firstItemFocusRef;_exitFallbackTimeout;_animationsDisabled=Qi();_allItems;_directDescendantItems=new Ql;_classList={};_panelAnimationState="void";_animationDone=new Le;_isAnimating=me(!1);parentMenu;direction;overlayPanelClass;backdropClass;ariaLabel;ariaLabelledby;ariaDescribedby;get xPosition(){return this._xPosition}set xPosition(e){this._xPosition=e,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(e){this._yPosition=e,this.setPositionClasses()}templateRef;items;lazyContent;overlapTrigger=!1;hasBackdrop;set panelClass(e){let n=this._previousPanelClass,o=H({},this._classList);n&&n.length&&n.split(" ").forEach(r=>{o[r]=!1}),this._previousPanelClass=e,e&&e.length&&(e.split(" ").forEach(r=>{o[r]=!0}),this._elementRef.nativeElement.className=""),this._classList=o}_previousPanelClass;get classList(){return this.panelClass}set classList(e){this.panelClass=e}closed=new ve;close=this.closed;panelId=f(Oi).getId("mat-menu-panel-");constructor(){let e=f(wae);this.overlayPanelClass=e.overlayPanelClass||"",this._xPosition=e.xPosition,this._yPosition=e.yPosition,this.backdropClass=e.backdropClass,this.overlapTrigger=e.overlapTrigger,this.hasBackdrop=e.hasBackdrop}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new Cm(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe(li(this._directDescendantItems),fn(e=>Dn(...e.map(n=>n._focused)))).subscribe(e=>this._keyManager.updateActiveItem(e)),this._directDescendantItems.changes.subscribe(e=>{let n=this._keyManager;if(this._panelAnimationState==="enter"&&n.activeItem?._hasFocus()){let o=e.toArray(),r=Math.max(0,Math.min(o.length-1,n.activeItemIndex||0));o[r]&&!o[r].disabled?n.setActiveItem(r):n.setNextItemActive()}})}ngOnDestroy(){this._keyManager?.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),this._firstItemFocusRef?.destroy(),clearTimeout(this._exitFallbackTimeout)}_hovered(){return this._directDescendantItems.changes.pipe(li(this._directDescendantItems),fn(n=>Dn(...n.map(o=>o._hovered))))}addItem(e){}removeItem(e){}_handleKeydown(e){let n=e.keyCode,o=this._keyManager;switch(n){case 27:cr(e)||(e.preventDefault(),this.closed.emit("keydown"));break;case 37:this.parentMenu&&this.direction==="ltr"&&this.closed.emit("keydown");break;case 39:this.parentMenu&&this.direction==="rtl"&&this.closed.emit("keydown");break;default:(n===38||n===40)&&o.setFocusOrigin("keyboard"),o.onKeydown(e);return}}focusFirstItem(e="program"){this._firstItemFocusRef?.destroy(),this._firstItemFocusRef=ar(()=>{let n=this._resolvePanel();if(!n||!n.contains(document.activeElement)){let o=this._keyManager;o.setFocusOrigin(e).setFirstItemActive(),!o.activeItem&&n&&n.focus()}},{injector:this._injector})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(e){}setPositionClasses(e=this.xPosition,n=this.yPosition){this._classList=tt(H({},this._classList),{"mat-menu-before":e==="before","mat-menu-after":e==="after","mat-menu-above":n==="above","mat-menu-below":n==="below"}),this._changeDetectorRef.markForCheck()}_onAnimationDone(e){let n=e===Vy;(n||e===F3)&&(n&&(clearTimeout(this._exitFallbackTimeout),this._exitFallbackTimeout=void 0),this._animationDone.next(n?"void":"enter"),this._isAnimating.set(!1))}_onAnimationStart(e){(e===F3||e===Vy)&&this._isAnimating.set(!0)}_setIsOpen(e){if(this._panelAnimationState=e?"enter":"void",e){if(this._keyManager.activeItemIndex===0){let n=this._resolvePanel();n&&(n.scrollTop=0)}}else this._animationsDisabled||(this._exitFallbackTimeout=setTimeout(()=>this._onAnimationDone(Vy),200));this._animationsDisabled&&setTimeout(()=>{this._onAnimationDone(e?F3:Vy)}),this._changeDetectorRef.markForCheck()}_updateDirectDescendants(){this._allItems.changes.pipe(li(this._allItems)).subscribe(e=>{this._directDescendantItems.reset(e.filter(n=>n._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}_resolvePanel(){let e=null;return this._directDescendantItems.length&&(e=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),e}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-menu"]],contentQueries:function(n,o,r){if(n&1&&$i(r,Sae,5)(r,ot,5)(r,ot,4),n&2){let a;gt(a=_t())&&(o.lazyContent=a.first),gt(a=_t())&&(o._allItems=a),gt(a=_t())&&(o.items=a)}},viewQuery:function(n,o){if(n&1&&gn(So,5),n&2){let r;gt(r=_t())&&(o.templateRef=r.first)}},hostVars:3,hostBindings:function(n,o){n&2&&It("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},inputs:{backdropClass:"backdropClass",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:[2,"overlapTrigger","overlapTrigger",dt],hasBackdrop:[2,"hasBackdrop","hasBackdrop",e=>e==null?null:dt(e)],panelClass:[0,"class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"},exportAs:["matMenu"],features:[hn([{provide:L3,useExisting:t}])],ngContentSelectors:xae,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel",3,"click","animationstart","animationend","animationcancel","id"],[1,"mat-mdc-menu-content"]],template:function(n,o){n&1&&(En(),kh(0,yae,3,12,"ng-template"))},styles:[`mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-sys-label-large-weight))}@keyframes _mat-menu-enter{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:none}}@keyframes _mat-menu-exit{from{opacity:1}to{opacity:0}}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;box-sizing:border-box;outline:0;animation:_mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1);border-radius:var(--mat-menu-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-sys-surface-container));box-shadow:var(--mat-menu-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));will-change:transform,opacity}.mat-mdc-menu-panel.mat-menu-panel-exit-animation{animation:_mat-menu-exit 100ms 25ms linear forwards}.mat-mdc-menu-panel.mat-menu-panel-animations-disabled{animation:none}.mat-mdc-menu-panel.mat-menu-panel-animating{pointer-events:none}.mat-mdc-menu-panel.mat-menu-panel-animating:has(.mat-mdc-menu-content:empty){display:none}@media(forced-colors: active){.mat-mdc-menu-panel{outline:solid 1px}}.mat-mdc-menu-panel .mat-divider{border-top-color:var(--mat-menu-divider-color, var(--mat-sys-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing, 8px);margin-top:var(--mat-menu-divider-top-spacing, 8px)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px;padding-left:var(--mat-menu-item-leading-spacing, 12px);padding-right:var(--mat-menu-item-trailing-spacing, 12px);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-menu-item::-moz-focus-inner{border:0}[dir=rtl] .mat-mdc-menu-item{padding-left:var(--mat-menu-item-trailing-spacing, 12px);padding-right:var(--mat-menu-item-leading-spacing, 12px)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-trailing-spacing, 12px)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-trailing-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-leading-spacing, 12px)}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing, 12px);height:var(--mat-menu-item-icon-size, 24px);width:var(--mat-menu-item-icon-size, 24px)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing, 12px)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(forced-colors: active){.mat-mdc-menu-item{margin-top:1px}}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size, 24px);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing, 12px)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing, 12px);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1);transform-origin:center}@media(forced-colors: active){.mat-mdc-menu-submenu-icon{fill:CanvasText}}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),Mae=new kt("mat-menu-scroll-strategy",{providedIn:"root",factory:()=>{let t=f(Di);return()=>RC(t)}});var Kf=new WeakMap,kae=(()=>{class t{_canHaveBackdrop;_element=f(Lt);_viewContainerRef=f(co);_menuItemInstance=f(ot,{optional:!0,self:!0});_dir=f(Hr,{optional:!0});_focusMonitor=f(xr);_ngZone=f(bi);_injector=f(Di);_scrollStrategy=f(Mae);_changeDetectorRef=f(K);_animationsDisabled=Qi();_portal;_overlayRef=null;_menuOpen=!1;_closingActionsSubscription=so.EMPTY;_menuCloseSubscription=so.EMPTY;_pendingRemoval;_parentMaterialMenu;_parentInnerPadding;_openedBy=void 0;get _menu(){return this._menuInternal}set _menu(e){e!==this._menuInternal&&(this._menuInternal=e,this._menuCloseSubscription.unsubscribe(),e&&(this._parentMaterialMenu,this._menuCloseSubscription=e.close.subscribe(n=>{this._destroyMenu(n),(n==="click"||n==="tab")&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(n)})),this._menuItemInstance?._setTriggersSubmenu(this._triggersSubmenu()))}_menuInternal=null;constructor(e){this._canHaveBackdrop=e;let n=f(L3,{optional:!0});this._parentMaterialMenu=n instanceof Fn?n:void 0}ngOnDestroy(){this._menu&&this._ownsMenu(this._menu)&&Kf.delete(this._menu),this._pendingRemoval?.unsubscribe(),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null)}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&this._dir.value==="rtl"?"rtl":"ltr"}_triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this._menu)}_closeMenu(){this._menu?.close.emit()}_openMenu(e){if(this._triggerIsAriaDisabled())return;let n=this._menu;if(this._menuOpen||!n)return;this._pendingRemoval?.unsubscribe();let o=Kf.get(n);Kf.set(n,this),o&&o!==this&&o._closeMenu();let r=this._createOverlay(n),a=r.getConfig(),c=a.positionStrategy;this._setPosition(n,c),this._canHaveBackdrop?a.hasBackdrop=n.hasBackdrop==null?!this._triggersSubmenu():n.hasBackdrop:a.hasBackdrop=n.hasBackdrop??!1,r.hasAttached()||(r.attach(this._getPortal(n)),n.lazyContent?.attach(this.menuData)),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this._closeMenu()),n.parentMenu=this._triggersSubmenu()?this._parentMaterialMenu:void 0,n.direction=this.dir,e&&n.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0),n instanceof Fn&&(n._setIsOpen(!0),n._directDescendantItems.changes.pipe(rt(n.close)).subscribe(()=>{c.withLockedPosition(!1).reapplyLastPosition(),c.withLockedPosition(!0)}))}focus(e,n){this._focusMonitor&&e?this._focusMonitor.focusVia(this._element,e,n):this._element.nativeElement.focus(n)}_destroyMenu(e){let n=this._overlayRef,o=this._menu;!n||!this.menuOpen||(this._closingActionsSubscription.unsubscribe(),this._pendingRemoval?.unsubscribe(),o instanceof Fn&&this._ownsMenu(o)?(this._pendingRemoval=o._animationDone.pipe(wi(1)).subscribe(()=>{n.detach(),Kf.has(o)||o.lazyContent?.detach()}),o._setIsOpen(!1)):(n.detach(),o?.lazyContent?.detach()),o&&this._ownsMenu(o)&&Kf.delete(o),this.restoreFocus&&(e==="keydown"||!this._openedBy||!this._triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,this._setIsMenuOpen(!1))}_setIsMenuOpen(e){e!==this._menuOpen&&(this._menuOpen=e,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this._triggersSubmenu()&&this._menuItemInstance._setHighlighted(e),this._changeDetectorRef.markForCheck())}_createOverlay(e){if(!this._overlayRef){let n=this._getOverlayConfig(e);this._subscribeToPositions(e,n.positionStrategy),this._overlayRef=vm(this._injector,n),this._overlayRef.keydownEvents().subscribe(o=>{this._menu instanceof Fn&&this._menu._handleKeydown(o)})}return this._overlayRef}_getOverlayConfig(e){return new fm({positionStrategy:FC(this._injector,this._getOverlayOrigin()).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:e.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:e.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir||"ltr",disableAnimations:this._animationsDisabled})}_subscribeToPositions(e,n){e.setPositionClasses&&n.positionChanges.subscribe(o=>{this._ngZone.run(()=>{let r=o.connectionPair.overlayX==="start"?"after":"before",a=o.connectionPair.overlayY==="top"?"below":"above";e.setPositionClasses(r,a)})})}_setPosition(e,n){let[o,r]=e.xPosition==="before"?["end","start"]:["start","end"],[a,c]=e.yPosition==="above"?["bottom","top"]:["top","bottom"],[m,p]=[a,c],[h,g]=[o,r],M=0;if(this._triggersSubmenu()){if(g=o=e.xPosition==="before"?"start":"end",r=h=o==="end"?"start":"end",this._parentMaterialMenu){if(this._parentInnerPadding==null){let C=this._parentMaterialMenu.items.first;this._parentInnerPadding=C?C._getHostElement().offsetTop:0}M=a==="bottom"?this._parentInnerPadding:-this._parentInnerPadding}}else e.overlapTrigger||(m=a==="top"?"bottom":"top",p=c==="top"?"bottom":"top");n.withPositions([{originX:o,originY:m,overlayX:h,overlayY:a,offsetY:M},{originX:r,originY:m,overlayX:g,overlayY:a,offsetY:M},{originX:o,originY:p,overlayX:h,overlayY:c,offsetY:-M},{originX:r,originY:p,overlayX:g,overlayY:c,offsetY:-M}])}_menuClosingActions(){let e=this._getOutsideClickStream(this._overlayRef),n=this._overlayRef.detachments(),o=this._parentMaterialMenu?this._parentMaterialMenu.closed:xt(),r=this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe(Pn(a=>this._menuOpen&&a!==this._menuItemInstance)):xt();return Dn(e,o,r,n)}_getPortal(e){return(!this._portal||this._portal.templateRef!==e.templateRef)&&(this._portal=new ol(e.templateRef,this._viewContainerRef)),this._portal}_ownsMenu(e){return Kf.get(e)===this}_triggerIsAriaDisabled(){return dt(this._element.nativeElement.getAttribute("aria-disabled"))}static \u0275fac=function(n){SC()};static \u0275dir=ft({type:t})}return t})(),kn=(()=>{class t extends kae{_cleanupTouchstart;_hoverSubscription=so.EMPTY;get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(e){this.menu=e}get menu(){return this._menu}set menu(e){this._menu=e}menuData;restoreFocus=!0;menuOpened=new ve;onMenuOpen=this.menuOpened;menuClosed=new ve;onMenuClose=this.menuClosed;constructor(){super(!0);let e=f(ii);this._cleanupTouchstart=e.listen(this._element.nativeElement,"touchstart",n=>{OC(n)||(this._openedBy="touch")},{passive:!0})}triggersSubmenu(){return super._triggersSubmenu()}toggleMenu(){return this.menuOpen?this.closeMenu():this.openMenu()}openMenu(){this._openMenu(!0)}closeMenu(){this._closeMenu()}updatePosition(){this._overlayRef?.updatePosition()}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){super.ngOnDestroy(),this._cleanupTouchstart(),this._hoverSubscription.unsubscribe()}_getOverlayOrigin(){return this._element}_getOutsideClickStream(e){return e.backdropClick()}_handleMousedown(e){AC(e)||(this._openedBy=e.button===0?"mouse":void 0,this.triggersSubmenu()&&e.preventDefault())}_handleKeydown(e){let n=e.keyCode;(n===13||n===32)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(n===39&&this.dir==="ltr"||n===37&&this.dir==="rtl")&&(this._openedBy="keyboard",this.openMenu())}_handleClick(e){this.triggersSubmenu()?(e.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){this.triggersSubmenu()&&this._parentMaterialMenu&&(this._hoverSubscription=this._parentMaterialMenu._hovered().subscribe(e=>{e===this._menuItemInstance&&!e.disabled&&this._parentMaterialMenu?._panelAnimationState!=="void"&&(this._openedBy="mouse",this._openMenu(!1))}))}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],hostVars:3,hostBindings:function(n,o){n&1&&v("click",function(a){return o._handleClick(a)})("mousedown",function(a){return o._handleMousedown(a)})("keydown",function(a){return o._handleKeydown(a)}),n&2&&It("aria-haspopup",o.menu?"menu":null)("aria-expanded",o.menuOpen)("aria-controls",o.menuOpen?o.menu==null?null:o.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:[0,"mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:[0,"matMenuTriggerFor","menu"],menuData:[0,"matMenuTriggerData","menuData"],restoreFocus:[0,"matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"},exportAs:["matMenuTrigger"],features:[xn]})}return t})();var Qe=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[ss,rl,wn,Md]})}return t})();var Tae=[[["caption"]],[["colgroup"],["col"]],"*"],Eae=["caption","colgroup, col","*"];function Dae(t,i){t&1&&Yt(0,2)}function Pae(t,i){t&1&&(s(0,"thead",0),Xi(1,1),l(),s(2,"tbody",2),Xi(3,3)(4,4),l(),s(5,"tfoot",0),Xi(6,5),l())}function Iae(t,i){t&1&&Xi(0,1)(1,3)(2,4)(3,5)}var Gn=(()=>{class t extends hI{stickyCssClass="mat-mdc-table-sticky";needsPositionStickyOnElement=!1;static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275cmp=L({type:t,selectors:[["mat-table"],["table","mat-table",""]],hostAttrs:[1,"mat-mdc-table","mdc-data-table__table"],hostVars:2,hostBindings:function(n,o){n&2&&je("mat-table-fixed-layout",o.fixedLayout)},exportAs:["matTable"],features:[hn([{provide:hI,useExisting:t},{provide:rc,useExisting:t},{provide:yv,useValue:null}]),xn],ngContentSelectors:Eae,decls:5,vars:2,consts:[["role","rowgroup"],["headerRowOutlet",""],["role","rowgroup",1,"mdc-data-table__content"],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(n,o){n&1&&(En(Tae),Yt(0),Yt(1,1),A(2,Dae,1,0),A(3,Pae,7,0)(4,Iae,4,0)),n&2&&(u(2),O(o._isServer?2:-1),u(),O(o._isNativeHtmlTable?3:4))},dependencies:[mI,dI,uI,pI],styles:[`.mat-mdc-table-sticky{position:sticky !important}mat-table{display:block}mat-header-row{min-height:var(--mat-table-header-container-height, 56px)}mat-row{min-height:var(--mat-table-row-item-container-height, 52px)}mat-footer-row{min-height:var(--mat-table-footer-container-height, 52px)}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}.mat-mdc-table{min-width:100%;border:0;border-spacing:0;table-layout:auto;white-space:normal;background-color:var(--mat-table-background-color, var(--mat-sys-surface))}.mat-table-fixed-layout{table-layout:fixed}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:start;text-overflow:ellipsis}.mdc-data-table__cell,.mdc-data-table__header-cell{padding:0 16px}.mat-mdc-header-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-header-container-height, 56px);color:var(--mat-table-header-headline-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-table-header-headline-font, var(--mat-sys-title-small-font, Roboto, sans-serif));line-height:var(--mat-table-header-headline-line-height, var(--mat-sys-title-small-line-height));font-size:var(--mat-table-header-headline-size, var(--mat-sys-title-small-size, 14px));font-weight:var(--mat-table-header-headline-weight, var(--mat-sys-title-small-weight, 500))}.mat-mdc-row{height:var(--mat-table-row-item-container-height, 52px);color:var(--mat-table-row-item-label-text-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)))}.mat-mdc-row,.mdc-data-table__content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-table-row-item-label-text-font, var(--mat-sys-body-medium-font, Roboto, sans-serif));line-height:var(--mat-table-row-item-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-table-row-item-label-text-size, var(--mat-sys-body-medium-size, 14px));font-weight:var(--mat-table-row-item-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-footer-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-footer-container-height, 52px);color:var(--mat-table-row-item-label-text-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-table-footer-supporting-text-font, var(--mat-sys-body-medium-font, Roboto, sans-serif));line-height:var(--mat-table-footer-supporting-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-table-footer-supporting-text-size, var(--mat-sys-body-medium-size, 14px));font-weight:var(--mat-table-footer-supporting-text-weight, var(--mat-sys-body-medium-weight));letter-spacing:var(--mat-table-footer-supporting-text-tracking, var(--mat-sys-body-medium-tracking))}.mat-mdc-header-cell{border-bottom-color:var(--mat-table-row-item-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, 0.12)));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-header-headline-tracking, var(--mat-sys-title-small-tracking));font-weight:inherit;line-height:inherit;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:start}.mdc-data-table__row:last-child>.mat-mdc-header-cell{border-bottom:none}.mat-mdc-cell{border-bottom-color:var(--mat-table-row-item-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, 0.12)));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-row-item-label-text-tracking, var(--mat-sys-body-medium-tracking));line-height:inherit}.mdc-data-table__row:last-child>.mat-mdc-cell{border-bottom:none}.mat-mdc-footer-cell{letter-spacing:var(--mat-table-row-item-label-text-tracking, var(--mat-sys-body-medium-tracking))}mat-row.mat-mdc-row,mat-header-row.mat-mdc-header-row,mat-footer-row.mat-mdc-footer-row{border-bottom:none}.mat-mdc-table tbody,.mat-mdc-table tfoot,.mat-mdc-table thead,.mat-mdc-cell,.mat-mdc-footer-cell,.mat-mdc-header-row,.mat-mdc-row,.mat-mdc-footer-row,.mat-mdc-table .mat-mdc-header-cell{background:inherit}.mat-mdc-table mat-header-row.mat-mdc-header-row,.mat-mdc-table mat-row.mat-mdc-row,.mat-mdc-table mat-footer-row.mat-mdc-footer-cell{height:unset}mat-header-cell.mat-mdc-header-cell,mat-cell.mat-mdc-cell,mat-footer-cell.mat-mdc-footer-cell{align-self:stretch}
|
||
`],encapsulation:2})}return t})(),Wn=(()=>{class t extends R1{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["","matCellDef",""]],features:[hn([{provide:R1,useExisting:t}]),xn]})}return t})(),qn=(()=>{class t extends F1{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["","matHeaderCellDef",""]],features:[hn([{provide:F1,useExisting:t}]),xn]})}return t})();var Xn=(()=>{class t extends qm{get name(){return this._name}set name(e){this._setNameInput(e)}_updateColumnCssClassName(){super._updateColumnCssClassName(),this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["","matColumnDef",""]],inputs:{name:[0,"matColumnDef","name"]},features:[hn([{provide:qm,useExisting:t}]),xn]})}return t})(),Qn=(()=>{class t extends I8{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["mat-header-cell"],["th","mat-header-cell",""]],hostAttrs:["role","columnheader",1,"mat-mdc-header-cell","mdc-data-table__header-cell"],features:[xn]})}return t})();var Yn=(()=>{class t extends A8{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["mat-cell"],["td","mat-cell",""]],hostAttrs:[1,"mat-mdc-cell","mdc-data-table__cell"],features:[xn]})}return t})();var Kn=(()=>{class t extends Sv{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["","matHeaderRowDef",""]],inputs:{columns:[0,"matHeaderRowDef","columns"],sticky:[2,"matHeaderRowDefSticky","sticky",dt]},features:[hn([{provide:Sv,useExisting:t}]),xn]})}return t})();var Zn=(()=>{class t extends L1{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["","matRowDef",""]],inputs:{columns:[0,"matRowDefColumns","columns"],when:[0,"matRowDefWhen","when"]},features:[hn([{provide:L1,useExisting:t}]),xn]})}return t})(),Jn=(()=>{class t extends lI{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275cmp=L({type:t,selectors:[["mat-header-row"],["tr","mat-header-row",""]],hostAttrs:["role","row",1,"mat-mdc-header-row","mdc-data-table__header-row"],exportAs:["matHeaderRow"],features:[hn([{provide:lI,useExisting:t}]),xn],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(n,o){n&1&&Xi(0,0)},dependencies:[Fu],encapsulation:2})}return t})();var ei=(()=>{class t extends cI{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275cmp=L({type:t,selectors:[["mat-row"],["tr","mat-row",""]],hostAttrs:["role","row",1,"mat-mdc-row","mdc-data-table__row"],exportAs:["matRow"],features:[hn([{provide:cI,useExisting:t}]),xn],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(n,o){n&1&&Xi(0,0)},dependencies:[Fu],encapsulation:2})}return t})();var In=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[B1,wn]})}return t})(),Aae=9007199254740991,Nr=class extends Kl{_data;_renderData=new qt([]);_filter=new qt("");_internalPageChanges=new Le;_renderChangesSubscription=null;filteredData;get data(){return this._data.value}set data(i){i=Array.isArray(i)?i:[],this._data.next(i),this._renderChangesSubscription||this._filterData(i)}get filter(){return this._filter.value}set filter(i){this._filter.next(i),this._renderChangesSubscription||this._filterData(this.data)}get sort(){return this._sort}set sort(i){this._sort=i,this._updateChangeSubscription()}_sort;get paginator(){return this._paginator}set paginator(i){this._paginator=i,this._updateChangeSubscription()}_paginator;sortingDataAccessor=(i,e)=>{let n=i[e];if(J5(n)){let o=Number(n);return o<Aae?o:n}return n};sortData=(i,e)=>{let n=e.active,o=e.direction;return!n||o==""?i:i.sort((r,a)=>{let c=this.sortingDataAccessor(r,n),m=this.sortingDataAccessor(a,n),p=typeof c,h=typeof m;p!==h&&(p==="number"&&(c+=""),h==="number"&&(m+=""));let g=0;return c!=null&&m!=null?c>m?g=1:c<m&&(g=-1):c!=null?g=1:m!=null&&(g=-1),g*(o=="asc"?1:-1)})};filterPredicate=(i,e)=>{let n=e.trim().toLowerCase();return Object.values(i).some(o=>`${o}`.toLowerCase().includes(n))};constructor(i=[]){super(),this._data=new qt(i),this._updateChangeSubscription()}_updateChangeSubscription(){let i=this._sort?Dn(this._sort.sortChange,this._sort.initialized):xt(null),e=this._paginator?Dn(this._paginator.page,this._internalPageChanges,this._paginator.initialized):xt(null),n=this._data,o=rr([n,this._filter]).pipe(yt(([c])=>this._filterData(c))),r=rr([o,i]).pipe(yt(([c])=>this._orderData(c))),a=rr([r,e]).pipe(yt(([c])=>this._pageData(c)));this._renderChangesSubscription?.unsubscribe(),this._renderChangesSubscription=a.subscribe(c=>this._renderData.next(c))}_filterData(i){return this.filteredData=this.filter==null||this.filter===""?i:i.filter(e=>this.filterPredicate(e,this.filter)),this.paginator&&this._updatePaginator(this.filteredData.length),this.filteredData}_orderData(i){return this.sort?this.sortData(i.slice(),this.sort):i}_pageData(i){if(!this.paginator)return i;let e=this.paginator.pageIndex*this.paginator.pageSize;return i.slice(e,e+this.paginator.pageSize)}_updatePaginator(i){Promise.resolve().then(()=>{let e=this.paginator;if(e&&(e.length=i,e.pageIndex>0)){let n=Math.ceil(e.length/e.pageSize)-1||0,o=Math.min(e.pageIndex,n);o!==e.pageIndex&&(e.pageIndex=o,this._internalPageChanges.next())}})}connect(){return this._renderChangesSubscription||this._updateChangeSubscription(),this._renderData}disconnect(){this._renderChangesSubscription?.unsubscribe(),this._renderChangesSubscription=null}};function Oae(t,i){}var ep=class{viewContainerRef;injector;id;role="dialog";panelClass="";hasBackdrop=!0;backdropClass="";disableClose=!1;closePredicate;width="";height="";minWidth;minHeight;maxWidth;maxHeight;positionStrategy;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus="first-tabbable";restoreFocus=!0;scrollStrategy;closeOnNavigation=!0;closeOnDestroy=!0;closeOnOverlayDetachments=!0;disableAnimations=!1;providers;container;templateContext};var Jv=(()=>{class t extends NC{_elementRef=f(Lt);_focusTrapFactory=f(hR);_config;_interactivityChecker=f(uR);_ngZone=f(bi);_focusMonitor=f(xr);_renderer=f(ii);_changeDetectorRef=f(K);_injector=f(Di);_platform=f(Ta);_document=f(Pi);_portalOutlet;_focusTrapped=new Le;_focusTrap=null;_elementFocusedBeforeDialogWasOpened=null;_closeInteractionType=null;_ariaLabelledByQueue=[];_isDestroyed=!1;constructor(){super(),this._config=f(ep,{optional:!0})||new ep,this._config.ariaLabelledBy&&this._ariaLabelledByQueue.push(this._config.ariaLabelledBy)}_addAriaLabelledBy(e){this._ariaLabelledByQueue.push(e),this._changeDetectorRef.markForCheck()}_removeAriaLabelledBy(e){let n=this._ariaLabelledByQueue.indexOf(e);n>-1&&(this._ariaLabelledByQueue.splice(n,1),this._changeDetectorRef.markForCheck())}_contentAttached(){this._initializeFocusTrap(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._focusTrapped.complete(),this._isDestroyed=!0,this._restoreFocus()}attachComponentPortal(e){this._portalOutlet.hasAttached();let n=this._portalOutlet.attachComponentPortal(e);return this._contentAttached(),n}attachTemplatePortal(e){this._portalOutlet.hasAttached();let n=this._portalOutlet.attachTemplatePortal(e);return this._contentAttached(),n}attachDomPortal=e=>{this._portalOutlet.hasAttached();let n=this._portalOutlet.attachDomPortal(e);return this._contentAttached(),n};_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(e,n){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{let o=()=>{r(),a(),e.removeAttribute("tabindex")},r=this._renderer.listen(e,"blur",o),a=this._renderer.listen(e,"mousedown",o)})),e.focus(n)}_focusByCssSelector(e,n){let o=this._elementRef.nativeElement.querySelector(e);o&&this._forceFocus(o,n)}_trapFocus(e){this._isDestroyed||ar(()=>{let n=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||n.focus(e);break;case!0:case"first-tabbable":this._focusTrap?.focusInitialElement(e)||this._focusDialogContainer(e);break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]',e);break;default:this._focusByCssSelector(this._config.autoFocus,e);break}this._focusTrapped.next()},{injector:this._injector})}_restoreFocus(){let e=this._config.restoreFocus,n=null;if(typeof e=="string"?n=this._document.querySelector(e):typeof e=="boolean"?n=e?this._elementFocusedBeforeDialogWasOpened:null:e&&(n=e),this._config.restoreFocus&&n&&typeof n.focus=="function"){let o=hm(),r=this._elementRef.nativeElement;(!o||o===this._document.body||o===r||r.contains(o))&&(this._focusMonitor?(this._focusMonitor.focusVia(n,this._closeInteractionType),this._closeInteractionType=null):n.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(e){this._elementRef.nativeElement.focus?.(e)}_containsFocus(){let e=this._elementRef.nativeElement,n=hm();return e===n||e.contains(n)}_initializeFocusTrap(){this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=hm()))}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["cdk-dialog-container"]],viewQuery:function(n,o){if(n&1&&gn(rs,7),n&2){let r;gt(r=_t())&&(o._portalOutlet=r.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(n,o){n&2&&It("id",o._config.id||null)("role",o._config.role)("aria-modal",o._config.ariaModal)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null)},features:[xn],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(n,o){n&1&&Ae(0,Oae,0,0,"ng-template",0)},dependencies:[rs],styles:[`.cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}
|
||
`],encapsulation:2})}return t})(),Zv=class{overlayRef;config;componentInstance=null;componentRef=null;containerInstance;disableClose;closed=new Le;backdropClick;keydownEvents;outsidePointerEvents;id;_detachSubscription;constructor(i,e){this.overlayRef=i,this.config=e,this.disableClose=e.disableClose,this.backdropClick=i.backdropClick(),this.keydownEvents=i.keydownEvents(),this.outsidePointerEvents=i.outsidePointerEvents(),this.id=e.id,this.keydownEvents.subscribe(n=>{n.keyCode===27&&!this.disableClose&&!cr(n)&&(n.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{!this.disableClose&&this._canClose()?this.close(void 0,{focusOrigin:"mouse"}):this.containerInstance._recaptureFocus?.()}),this._detachSubscription=i.detachments().subscribe(()=>{e.closeOnOverlayDetachments!==!1&&this.close()})}close(i,e){if(this._canClose(i)){let n=this.closed;this.containerInstance._closeInteractionType=e?.focusOrigin||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),n.next(i),n.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(i="",e=""){return this.overlayRef.updateSize({width:i,height:e}),this}addPanelClass(i){return this.overlayRef.addPanelClass(i),this}removePanelClass(i){return this.overlayRef.removePanelClass(i),this}_canClose(i){let e=this.config;return!!this.containerInstance&&(!e.closePredicate||e.closePredicate(i,e,this.componentInstance))}},Nae=new kt("DialogScrollStrategy",{providedIn:"root",factory:()=>{let t=f(Di);return()=>Oh(t)}}),V3=new kt("DialogData"),Rae=new kt("DefaultDialogConfig");function Fae(t){let i=me(t),e=new ve;return{valueSignal:i,get value(){return i()},change:e,ngOnDestroy(){e.complete()}}}var eb=(()=>{class t{_injector=f(Di);_defaultOptions=f(Rae,{optional:!0});_parentDialog=f(t,{optional:!0,skipSelf:!0});_overlayContainer=f(gm);_idGenerator=f(Oi);_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new Le;_afterOpenedAtThisLevel=new Le;_ariaHiddenElements=new Map;_scrollStrategy=f(Nae);get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}afterAllClosed=xc(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(li(void 0)));constructor(){}open(e,n){let o=this._defaultOptions||new ep;n=H(H({},o),n),n.id=n.id||this._idGenerator.getId("cdk-dialog-"),n.id&&this.getDialogById(n.id);let r=this._getOverlayConfig(n),a=vm(this._injector,r),c=new Zv(a,n),m=this._attachContainer(a,c,n);if(c.containerInstance=m,!this.openDialogs.length){let p=this._overlayContainer.getContainerElement();m._focusTrapped?m._focusTrapped.pipe(wi(1)).subscribe(()=>{this._hideNonDialogContentFromAssistiveTechnology(p)}):this._hideNonDialogContentFromAssistiveTechnology(p)}return this._attachDialogContent(e,c,m,n),this.openDialogs.push(c),c.closed.subscribe(()=>this._removeOpenDialog(c,!0)),this.afterOpened.next(c),c}closeAll(){B3(this.openDialogs,e=>e.close())}getDialogById(e){return this.openDialogs.find(n=>n.id===e)}ngOnDestroy(){B3(this._openDialogsAtThisLevel,e=>{e.config.closeOnDestroy===!1&&this._removeOpenDialog(e,!1)}),B3(this._openDialogsAtThisLevel,e=>e.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(e){let n=new fm({positionStrategy:e.positionStrategy||_m().centerHorizontally().centerVertically(),scrollStrategy:e.scrollStrategy||this._scrollStrategy(),panelClass:e.panelClass,hasBackdrop:e.hasBackdrop,direction:e.direction,minWidth:e.minWidth,minHeight:e.minHeight,maxWidth:e.maxWidth,maxHeight:e.maxHeight,width:e.width,height:e.height,disposeOnNavigation:e.closeOnNavigation,disableAnimations:e.disableAnimations});return e.backdropClass&&(n.backdropClass=e.backdropClass),n}_attachContainer(e,n,o){let r=o.injector||o.viewContainerRef?.injector,a=[{provide:ep,useValue:o},{provide:Zv,useValue:n},{provide:aR,useValue:e}],c;o.container?typeof o.container=="function"?c=o.container:(c=o.container.type,a.push(...o.container.providers(o))):c=Jv;let m=new Ah(c,o.viewContainerRef,Di.create({parent:r||this._injector,providers:a}));return e.attach(m).instance}_attachDialogContent(e,n,o,r){if(e instanceof So){let a=this._createInjector(r,n,o,void 0),c={$implicit:r.data,dialogRef:n};r.templateContext&&(c=H(H({},c),typeof r.templateContext=="function"?r.templateContext():r.templateContext)),o.attachTemplatePortal(new ol(e,null,c,a))}else{let a=this._createInjector(r,n,o,this._injector),c=o.attachComponentPortal(new Ah(e,r.viewContainerRef,a));n.componentRef=c,n.componentInstance=c.instance}}_createInjector(e,n,o,r){let a=e.injector||e.viewContainerRef?.injector,c=[{provide:V3,useValue:e.data},{provide:Zv,useValue:n}];return e.providers&&(typeof e.providers=="function"?c.push(...e.providers(n,e,o)):c.push(...e.providers)),e.direction&&(!a||!a.get(Hr,null,{optional:!0}))&&c.push({provide:Hr,useValue:Fae(e.direction)}),Di.create({parent:a||r,providers:c})}_removeOpenDialog(e,n){let o=this.openDialogs.indexOf(e);o>-1&&(this.openDialogs.splice(o,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((r,a)=>{r?a.setAttribute("aria-hidden",r):a.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),n&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(e){if(e.parentElement){let n=e.parentElement.children;for(let o=n.length-1;o>-1;o--){let r=n[o];r!==e&&r.nodeName!=="SCRIPT"&&r.nodeName!=="STYLE"&&!r.hasAttribute("aria-live")&&!r.hasAttribute("popover")&&(this._ariaHiddenElements.set(r,r.getAttribute("aria-hidden")),r.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){let e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function B3(t,i){let e=t.length;for(;e--;)i(t[e])}var $y=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({providers:[eb],imports:[rl,Fs,gR,Fs]})}return t})();function Lae(t,i){}var Uy=class{viewContainerRef;injector;id;role="dialog";panelClass="";hasBackdrop=!0;backdropClass="";disableClose=!1;closePredicate;width="";height="";minWidth;minHeight;maxWidth;maxHeight;position;data=null;direction;ariaDescribedBy=null;ariaLabelledBy=null;ariaLabel=null;ariaModal=!1;autoFocus="first-tabbable";restoreFocus=!0;delayFocusTrap=!0;scrollStrategy;closeOnNavigation=!0;enterAnimationDuration;exitAnimationDuration},z3="mdc-dialog--open",Q7="mdc-dialog--opening",Y7="mdc-dialog--closing",Bae=150,Vae=75,zae=(()=>{class t extends Jv{_animationStateChanged=new ve;_animationsEnabled=!Qi();_actionSectionCount=0;_hostElement=this._elementRef.nativeElement;_enterAnimationDuration=this._animationsEnabled?Z7(this._config.enterAnimationDuration)??Bae:0;_exitAnimationDuration=this._animationsEnabled?Z7(this._config.exitAnimationDuration)??Vae:0;_animationTimer=null;_contentAttached(){super._contentAttached(),this._startOpenAnimation()}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._enterAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(K7,`${this._enterAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(Q7,z3)),this._waitForAnimationToComplete(this._enterAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(z3),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._exitAnimationDuration}),this._hostElement.classList.remove(z3),this._animationsEnabled?(this._hostElement.style.setProperty(K7,`${this._exitAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(Y7)),this._waitForAnimationToComplete(this._exitAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_updateActionSectionCount(e){this._actionSectionCount+=e,this._changeDetectorRef.markForCheck()}_finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._enterAnimationDuration)};_finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._exitAnimationDuration})};_clearAnimationClasses(){this._hostElement.classList.remove(Q7,Y7)}_waitForAnimationToComplete(e,n){this._animationTimer!==null&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(n,e)}_requestAnimationFrame(e){this._ngZone.runOutsideAngular(()=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(e):e()})}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(e){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:e})}ngOnDestroy(){super.ngOnDestroy(),this._animationTimer!==null&&clearTimeout(this._animationTimer)}attachComponentPortal(e){let n=super.attachComponentPortal(e);return n.location.nativeElement.classList.add("mat-mdc-dialog-component-host"),n}static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275cmp=L({type:t,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:10,hostBindings:function(n,o){n&2&&(No("id",o._config.id),It("aria-modal",o._config.ariaModal)("role",o._config.role)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null),je("_mat-animation-noopable",!o._animationsEnabled)("mat-mdc-dialog-container-with-actions",o._actionSectionCount>0))},features:[xn],decls:3,vars:0,consts:[[1,"mat-mdc-dialog-inner-container","mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1),Ae(2,Lae,0,0,"ng-template",2),l()())},dependencies:[rs],styles:[`.mat-mdc-dialog-container{width:100%;height:100%;display:block;box-sizing:border-box;max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;outline:0}.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-max-width, 560px);min-width:var(--mat-dialog-container-min-width, 280px)}@media(max-width: 599px){.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-small-max-width, calc(100vw - 32px))}}.mat-mdc-dialog-inner-container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;transition:opacity linear var(--mat-dialog-transition-duration, 0ms);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mdc-dialog--closing .mat-mdc-dialog-inner-container{transition:opacity 75ms linear;transform:none}.mdc-dialog--open .mat-mdc-dialog-inner-container{opacity:1}._mat-animation-noopable .mat-mdc-dialog-inner-container{transition:none}.mat-mdc-dialog-surface{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;width:100%;height:100%;position:relative;overflow-y:auto;outline:0;transform:scale(0.8);transition:transform var(--mat-dialog-transition-duration, 0ms) cubic-bezier(0, 0, 0.2, 1);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;box-shadow:var(--mat-dialog-container-elevation-shadow, none);border-radius:var(--mat-dialog-container-shape, var(--mat-sys-corner-extra-large, 4px));background-color:var(--mat-dialog-container-color, var(--mat-sys-surface, white))}[dir=rtl] .mat-mdc-dialog-surface{text-align:right}.mdc-dialog--open .mat-mdc-dialog-surface,.mdc-dialog--closing .mat-mdc-dialog-surface{transform:none}._mat-animation-noopable .mat-mdc-dialog-surface{transition:none}.mat-mdc-dialog-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mat-mdc-dialog-title{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:var(--mat-dialog-headline-padding, 6px 24px 13px)}.mat-mdc-dialog-title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mat-mdc-dialog-title{text-align:right}.mat-mdc-dialog-container .mat-mdc-dialog-title{color:var(--mat-dialog-subhead-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-dialog-subhead-font, var(--mat-sys-headline-small-font, inherit));line-height:var(--mat-dialog-subhead-line-height, var(--mat-sys-headline-small-line-height, 1.5rem));font-size:var(--mat-dialog-subhead-size, var(--mat-sys-headline-small-size, 1rem));font-weight:var(--mat-dialog-subhead-weight, var(--mat-sys-headline-small-weight, 400));letter-spacing:var(--mat-dialog-subhead-tracking, var(--mat-sys-headline-small-tracking, 0.03125em))}.mat-mdc-dialog-content{display:block;flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;max-height:65vh}.mat-mdc-dialog-content>:first-child{margin-top:0}.mat-mdc-dialog-content>:last-child{margin-bottom:0}.mat-mdc-dialog-container .mat-mdc-dialog-content{color:var(--mat-dialog-supporting-text-color, var(--mat-sys-on-surface-variant, rgba(0, 0, 0, 0.6)));font-family:var(--mat-dialog-supporting-text-font, var(--mat-sys-body-medium-font, inherit));line-height:var(--mat-dialog-supporting-text-line-height, var(--mat-sys-body-medium-line-height, 1.5rem));font-size:var(--mat-dialog-supporting-text-size, var(--mat-sys-body-medium-size, 1rem));font-weight:var(--mat-dialog-supporting-text-weight, var(--mat-sys-body-medium-weight, 400));letter-spacing:var(--mat-dialog-supporting-text-tracking, var(--mat-sys-body-medium-tracking, 0.03125em))}.mat-mdc-dialog-container .mat-mdc-dialog-content{padding:var(--mat-dialog-content-padding, 20px 24px)}.mat-mdc-dialog-container-with-actions .mat-mdc-dialog-content{padding:var(--mat-dialog-with-actions-content-padding, 20px 24px 0)}.mat-mdc-dialog-container .mat-mdc-dialog-title+.mat-mdc-dialog-content{padding-top:0}.mat-mdc-dialog-actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;box-sizing:border-box;min-height:52px;margin:0;border-top:1px solid rgba(0,0,0,0);padding:var(--mat-dialog-actions-padding, 16px 24px);justify-content:var(--mat-dialog-actions-alignment, flex-end)}@media(forced-colors: active){.mat-mdc-dialog-actions{border-top-color:CanvasText}}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-start,.mat-mdc-dialog-actions[align=start]{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}.mat-mdc-dialog-component-host{display:contents}
|
||
`],encapsulation:2})}return t})(),K7="--mat-dialog-transition-duration";function Z7(t){return t==null?null:typeof t=="number"?t:t.endsWith("ms")?U_(t.substring(0,t.length-2)):t.endsWith("s")?U_(t.substring(0,t.length-1))*1e3:t==="0"?0:null}var Hy=(function(t){return t[t.OPEN=0]="OPEN",t[t.CLOSING=1]="CLOSING",t[t.CLOSED=2]="CLOSED",t})(Hy||{}),Pe=class{_ref;_config;_containerInstance;componentInstance;componentRef=null;disableClose;id;_afterOpened=new bd(1);_beforeClosed=new bd(1);_result;_closeFallbackTimeout;_state=Hy.OPEN;_closeInteractionType;constructor(i,e,n){this._ref=i,this._config=e,this._containerInstance=n,this.disableClose=e.disableClose,this.id=i.id,i.addPanelClass("mat-mdc-dialog-panel"),n._animationStateChanged.pipe(Pn(o=>o.state==="opened"),wi(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),n._animationStateChanged.pipe(Pn(o=>o.state==="closed"),wi(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),i.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),Dn(this.backdropClick(),this.keydownEvents().pipe(Pn(o=>o.keyCode===27&&!this.disableClose&&!cr(o)))).subscribe(o=>{this.disableClose||(o.preventDefault(),J7(this,o.type==="keydown"?"keyboard":"mouse"))})}close(i){let e=this._config.closePredicate;e&&!e(i,this._config,this.componentInstance)||(this._result=i,this._containerInstance._animationStateChanged.pipe(Pn(n=>n.state==="closing"),wi(1)).subscribe(n=>{this._beforeClosed.next(i),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),n.totalTime+100)}),this._state=Hy.CLOSING,this._containerInstance._startExitAnimation())}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(i){let e=this._ref.config.positionStrategy;return i&&(i.left||i.right)?i.left?e.left(i.left):e.right(i.right):e.centerHorizontally(),i&&(i.top||i.bottom)?i.top?e.top(i.top):e.bottom(i.bottom):e.centerVertically(),this._ref.updatePosition(),this}updateSize(i="",e=""){return this._ref.updateSize(i,e),this}addPanelClass(i){return this._ref.addPanelClass(i),this}removePanelClass(i){return this._ref.removePanelClass(i),this}getState(){return this._state}_finishDialogClose(){this._state=Hy.CLOSED,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}};function J7(t,i,e){return t._closeInteractionType=i,t.close(e)}var Nt=new kt("MatMdcDialogData"),jae=new kt("mat-mdc-dialog-default-options"),$ae=new kt("mat-mdc-dialog-scroll-strategy",{providedIn:"root",factory:()=>{let t=f(Di);return()=>Oh(t)}}),Je=(()=>{class t{_defaultOptions=f(jae,{optional:!0});_scrollStrategy=f($ae);_parentDialog=f(t,{optional:!0,skipSelf:!0});_idGenerator=f(Oi);_injector=f(Di);_dialog=f(eb);_animationsDisabled=Qi();_openDialogsAtThisLevel=[];_afterAllClosedAtThisLevel=new Le;_afterOpenedAtThisLevel=new Le;dialogConfigClass=Uy;_dialogRefConstructor;_dialogContainerType;_dialogDataToken;get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){let e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}afterAllClosed=xc(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(li(void 0)));constructor(){this._dialogRefConstructor=Pe,this._dialogContainerType=zae,this._dialogDataToken=Nt}open(e,n){let o;n=H(H({},this._defaultOptions||new Uy),n),n.id=n.id||this._idGenerator.getId("mat-mdc-dialog-"),n.scrollStrategy=n.scrollStrategy||this._scrollStrategy();let r=this._dialog.open(e,tt(H({},n),{positionStrategy:_m(this._injector).centerHorizontally().centerVertically(),disableClose:!0,closePredicate:void 0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,disableAnimations:this._animationsDisabled||n.enterAnimationDuration?.toLocaleString()==="0"||n.exitAnimationDuration?.toString()==="0",container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:n},{provide:ep,useValue:n}]},templateContext:()=>({dialogRef:o}),providers:(a,c,m)=>(o=new this._dialogRefConstructor(a,n,m),o.updatePosition(n?.position),[{provide:this._dialogContainerType,useValue:m},{provide:this._dialogDataToken,useValue:c.data},{provide:this._dialogRefConstructor,useValue:o}])}));return o.componentRef=r.componentRef,o.componentInstance=r.componentInstance,this.openDialogs.push(o),this.afterOpened.next(o),o.afterClosed().subscribe(()=>{let a=this.openDialogs.indexOf(o);a>-1&&(this.openDialogs.splice(a,1),this.openDialogs.length||this._getAfterAllClosed().next())}),o}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(e){return this.openDialogs.find(n=>n.id===e)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(e){let n=e.length;for(;n--;)e[n].close()}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Kc=(()=>{class t{dialogRef=f(Pe,{optional:!0});_elementRef=f(Lt);_dialog=f(Je);ariaLabel;type="button";dialogResult;_matDialogClose;constructor(){}ngOnInit(){this.dialogRef||(this.dialogRef=tV(this._elementRef,this._dialog.openDialogs))}ngOnChanges(e){let n=e._matDialogClose||e._matDialogCloseResult;n&&(this.dialogResult=n.currentValue)}_onButtonClick(e){J7(this.dialogRef,e.screenX===0&&e.screenY===0?"keyboard":"mouse",this.dialogResult)}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(n,o){n&1&&v("click",function(a){return o._onButtonClick(a)}),n&2&&It("aria-label",o.ariaLabel||null)("type",o.type)},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],type:"type",dialogResult:[0,"mat-dialog-close","dialogResult"],_matDialogClose:[0,"matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],features:[un]})}return t})(),eV=(()=>{class t{_dialogRef=f(Pe,{optional:!0});_elementRef=f(Lt);_dialog=f(Je);constructor(){}ngOnInit(){this._dialogRef||(this._dialogRef=tV(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{this._onAdd()})}ngOnDestroy(){this._dialogRef?._containerInstance&&Promise.resolve().then(()=>{this._onRemove()})}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t})}return t})(),Ve=(()=>{class t extends eV{id=f(Oi).getId("mat-mdc-dialog-title-");_onAdd(){this._dialogRef._containerInstance?._addAriaLabelledBy?.(this.id)}_onRemove(){this._dialogRef?._containerInstance?._removeAriaLabelledBy?.(this.id)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-mdc-dialog-title","mdc-dialog__title"],hostVars:1,hostBindings:function(n,o){n&2&&No("id",o.id)},inputs:{id:"id"},exportAs:["matDialogTitle"],features:[xn]})}return t})(),Wt=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"],features:[M5([wE])]})}return t})(),Be=(()=>{class t extends eV{align;_onAdd(){this._dialogRef._containerInstance?._updateActionSectionCount?.(1)}_onRemove(){this._dialogRef._containerInstance?._updateActionSectionCount?.(-1)}static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:6,hostBindings:function(n,o){n&2&&je("mat-mdc-dialog-actions-align-start",o.align==="start")("mat-mdc-dialog-actions-align-center",o.align==="center")("mat-mdc-dialog-actions-align-end",o.align==="end")},inputs:{align:"align"},features:[xn]})}return t})();function tV(t,i){let e=t.nativeElement.parentElement;for(;e&&!e.classList.contains("mat-mdc-dialog-container");)e=e.parentElement;return e?i.find(n=>n.id===e.id):null}var Ce=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({providers:[Je],imports:[$y,rl,Fs,wn]})}return t})();var Hae=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["ng-component"]],hostAttrs:["cdk-text-field-style-loader",""],decls:0,vars:0,template:function(n,o){},styles:[`textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0 !important;box-sizing:content-box !important;height:auto !important;overflow:hidden !important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0 !important;box-sizing:content-box !important;height:0 !important}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),Uae={passive:!0},nV=(()=>{class t{_platform=f(Ta);_ngZone=f(bi);_renderer=f(yd).createRenderer(null,null);_styleLoader=f(Go);_monitoredElements=new Map;constructor(){}monitor(e){if(!this._platform.isBrowser)return Zr;this._styleLoader.load(Hae);let n=Yl(e),o=this._monitoredElements.get(n);if(o)return o.subject;let r=new Le,a="cdk-text-field-autofilled",c=p=>{p.animationName==="cdk-text-field-autofill-start"&&!n.classList.contains(a)?(n.classList.add(a),this._ngZone.run(()=>r.next({target:p.target,isAutofilled:!0}))):p.animationName==="cdk-text-field-autofill-end"&&n.classList.contains(a)&&(n.classList.remove(a),this._ngZone.run(()=>r.next({target:p.target,isAutofilled:!1})))},m=this._ngZone.runOutsideAngular(()=>(n.classList.add("cdk-text-field-autofill-monitored"),this._renderer.listen(n,"animationstart",c,Uae)));return this._monitoredElements.set(n,{subject:r,unlisten:m}),r}stopMonitoring(e){let n=Yl(e),o=this._monitoredElements.get(n);o&&(o.unlisten(),o.subject.complete(),n.classList.remove("cdk-text-field-autofill-monitored"),n.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(n))}ngOnDestroy(){this._monitoredElements.forEach((e,n)=>this.stopMonitoring(n))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var iV=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({})}return t})();var oV=new kt("MAT_INPUT_VALUE_ACCESSOR");var Gae=["button","checkbox","file","hidden","image","radio","range","reset","submit"],Wae=new kt("MAT_INPUT_CONFIG"),Te=(()=>{class t{_elementRef=f(Lt);_platform=f(Ta);ngControl=f(BC,{optional:!0,self:!0});_autofillMonitor=f(nV);_ngZone=f(bi);_formField=f(Bh,{optional:!0});_renderer=f(ii);_uid=f(Oi).getId("mat-input-");_previousNativeValue;_inputValueAccessor;_signalBasedValueAccessor;_previousPlaceholder=null;_errorStateTracker;_config=f(Wae,{optional:!0});_cleanupIosKeyup;_cleanupWebkitWheel;_isServer=!1;_isNativeSelect=!1;_isTextarea=!1;_isInFormField=!1;focused=!1;stateChanges=new Le;controlType="mat-input";autofilled=!1;get disabled(){return this._disabled}set disabled(e){this._disabled=UC(e),this.focused&&(this.focused=!1,this.stateChanges.next())}_disabled=!1;get id(){return this._id}set id(e){this._id=e||this._uid}_id;placeholder;name;get required(){return this._required??this.ngControl?.control?.hasValidator(be.required)??!1}set required(e){this._required=UC(e)}_required;get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&kE().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}_type="text";get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}userAriaDescribedBy;get value(){return this._signalBasedValueAccessor?this._signalBasedValueAccessor.value():this._inputValueAccessor.value}set value(e){e!==this.value&&(this._signalBasedValueAccessor?this._signalBasedValueAccessor.value.set(e):this._inputValueAccessor.value=e,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(e){this._readonly=UC(e)}_readonly=!1;disabledInteractive;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}_neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(e=>kE().has(e));constructor(){let e=f(Ci,{optional:!0}),n=f(pt,{optional:!0}),o=f(kd),r=f(oV,{optional:!0,self:!0}),a=this._elementRef.nativeElement,c=a.nodeName.toLowerCase();r?T5(r.value)?this._signalBasedValueAccessor=r:this._inputValueAccessor=r:this._inputValueAccessor=a,this._previousNativeValue=this.value,this.id=this.id,this._platform.IOS&&this._ngZone.runOutsideAngular(()=>{this._cleanupIosKeyup=this._renderer.listen(a,"keyup",this._iOSKeyupListener)}),this._errorStateTracker=new QC(o,this.ngControl,n,e,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect=c==="select",this._isTextarea=c==="textarea",this._isInFormField=!!this._formField,this.disabledInteractive=this._config?.disabledInteractive||!1,this._isNativeSelect&&(this.controlType=a.multiple?"mat-native-select-multiple":"mat-native-select"),this._signalBasedValueAccessor&&Ns(()=>{this._signalBasedValueAccessor.value(),this.stateChanges.next()})}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._cleanupIosKeyup?.(),this._cleanupWebkitWheel?.()}ngDoCheck(){this.ngControl&&(this.updateErrorState(),this.ngControl.disabled!==null&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(e){this._elementRef.nativeElement.focus(e)}updateErrorState(){this._errorStateTracker.updateErrorState()}_focusChanged(e){if(e!==this.focused){if(!this._isNativeSelect&&e&&this.disabled&&this.disabledInteractive){let n=this._elementRef.nativeElement;n.type==="number"?(n.type="text",n.setSelectionRange(0,0),n.type="number"):n.setSelectionRange(0,0)}this.focused=e,this.stateChanges.next()}}_onInput(){}_dirtyCheckNativeValue(){let e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next())}_dirtyCheckPlaceholder(){let e=this._getPlaceholder();if(e!==this._previousPlaceholder){let n=this._elementRef.nativeElement;this._previousPlaceholder=e,e?n.setAttribute("placeholder",e):n.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){Gae.indexOf(this._type)>-1}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return!this._isNeverEmpty()&&!this._elementRef.nativeElement.value&&!this._isBadInput()&&!this.autofilled}get shouldLabelFloat(){if(this._isNativeSelect){let e=this._elementRef.nativeElement,n=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&n&&n.label)}else return this.focused&&!this.disabled||!this.empty}get describedByIds(){return this._elementRef.nativeElement.getAttribute("aria-describedby")?.split(" ")||[]}setDescribedByIds(e){let n=this._elementRef.nativeElement;e.length?n.setAttribute("aria-describedby",e.join(" ")):n.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){let e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}_iOSKeyupListener=e=>{let n=e.target;!n.value&&n.selectionStart===0&&n.selectionEnd===0&&(n.setSelectionRange(1,1),n.setSelectionRange(0,0))};_getReadonlyAttribute(){return this._isNativeSelect?null:this.readonly||this.disabled&&this.disabledInteractive?"true":null}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:21,hostBindings:function(n,o){n&1&&v("focus",function(){return o._focusChanged(!0)})("blur",function(){return o._focusChanged(!1)})("input",function(){return o._onInput()}),n&2&&(No("id",o.id)("disabled",o.disabled&&!o.disabledInteractive)("required",o.required),It("name",o.name||null)("readonly",o._getReadonlyAttribute())("aria-disabled",o.disabled&&o.disabledInteractive?"true":null)("aria-invalid",o.empty&&o.required?null:o.errorState)("aria-required",o.required)("id",o.id),je("mat-input-server",o._isServer)("mat-mdc-form-field-textarea-control",o._isInFormField&&o._isTextarea)("mat-mdc-form-field-input-control",o._isInFormField)("mat-mdc-input-disabled-interactive",o.disabledInteractive)("mdc-text-field__input",o._isInFormField)("mat-mdc-native-select-inline",o._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly",disabledInteractive:[2,"disabledInteractive","disabledInteractive",dt]},exportAs:["matInput"],features:[hn([{provide:XC,useExisting:t}]),un]})}return t})(),we=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[Me,Me,iV,wn]})}return t})();function qae(t,i){if(t&1){let e=j();s(0,"div",1)(1,"button",2),v("click",function(){D(e);let o=b();return P(o.action())}),d(2),l()()}if(t&2){let e=b();u(2),X(" ",e.data.action," ")}}var Xae=["label"];function Qae(t,i){}var Yae=Math.pow(2,31)-1,Yu=class{_overlayRef;instance;containerInstance;_afterDismissed=new Le;_afterOpened=new Le;_onAction=new Le;_durationTimeoutId;_dismissedByAction=!1;constructor(i,e){this._overlayRef=e,this.containerInstance=i,i._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(i){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(i,Yae))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}},Gy=new kt("MatSnackBarData"),Zf=class{politeness="polite";announcementMessage="";viewContainerRef;duration=0;panelClass;direction;data=null;horizontalPosition="center";verticalPosition="bottom"},Kae=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"]})}return t})(),Zae=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"]})}return t})(),Jae=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"]})}return t})(),rV=(()=>{class t{snackBarRef=f(Yu);data=f(Gy);constructor(){}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions",""],["matButton","","matSnackBarAction","",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0),d(1),l(),A(2,qae,3,1,"div",1)),n&2&&(u(),X(" ",o.data.message,`
|
||
`),u(),O(o.hasAction?2:-1))},dependencies:[le,Kae,Zae,Jae],styles:[`.mat-mdc-simple-snack-bar{display:flex}.mat-mdc-simple-snack-bar .mat-mdc-snack-bar-label{max-height:50vh;overflow:auto}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),j3="_mat-snack-bar-enter",$3="_mat-snack-bar-exit",ese=(()=>{class t extends NC{_ngZone=f(bi);_elementRef=f(Lt);_changeDetectorRef=f(K);_platform=f(Ta);_animationsDisabled=Qi();snackBarConfig=f(Zf);_document=f(Pi);_trackedModals=new Set;_enterFallback;_exitFallback;_injector=f(Di);_announceDelay=150;_announceTimeoutId;_destroyed=!1;_portalOutlet;_onAnnounce=new Le;_onExit=new Le;_onEnter=new Le;_animationState="void";_live;_label;_role;_liveElementId=f(Oi).getId("mat-snack-bar-container-live-");constructor(){super();let e=this.snackBarConfig;e.politeness==="assertive"&&!e.announcementMessage?this._live="assertive":e.politeness==="off"?this._live="off":this._live="polite",this._platform.FIREFOX&&(this._live==="polite"&&(this._role="status"),this._live==="assertive"&&(this._role="alert"))}attachComponentPortal(e){this._assertNotAttached();let n=this._portalOutlet.attachComponentPortal(e);return this._afterPortalAttached(),n}attachTemplatePortal(e){this._assertNotAttached();let n=this._portalOutlet.attachTemplatePortal(e);return this._afterPortalAttached(),n}attachDomPortal=e=>{this._assertNotAttached();let n=this._portalOutlet.attachDomPortal(e);return this._afterPortalAttached(),n};onAnimationEnd(e){e===$3?this._completeExit():e===j3&&(clearTimeout(this._enterFallback),this._ngZone.run(()=>{this._onEnter.next(),this._onEnter.complete()}))}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce(),this._animationsDisabled?ar(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(j3)))},{injector:this._injector}):(clearTimeout(this._enterFallback),this._enterFallback=setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-snack-bar-fallback-visible"),this.onAnimationEnd(j3)},200)))}exit(){return this._destroyed?xt(void 0):(this._ngZone.run(()=>{this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId),this._animationsDisabled?ar(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd($3)))},{injector:this._injector}):(clearTimeout(this._exitFallback),this._exitFallback=setTimeout(()=>this.onAnimationEnd($3),200))}),this._onExit)}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){clearTimeout(this._exitFallback),queueMicrotask(()=>{this._onExit.next(),this._onExit.complete()})}_afterPortalAttached(){let e=this._elementRef.nativeElement,n=this.snackBarConfig.panelClass;n&&(Array.isArray(n)?n.forEach(a=>e.classList.add(a)):e.classList.add(n)),this._exposeToModals();let o=this._label.nativeElement,r="mdc-snackbar__label";o.classList.toggle(r,!o.querySelector(`.${r}`))}_exposeToModals(){let e=this._liveElementId,n=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]');for(let o=0;o<n.length;o++){let r=n[o],a=r.getAttribute("aria-owns");this._trackedModals.add(r),a?a.indexOf(e)===-1&&r.setAttribute("aria-owns",a+" "+e):r.setAttribute("aria-owns",e)}}_clearFromModals(){this._trackedModals.forEach(e=>{let n=e.getAttribute("aria-owns");if(n){let o=n.replace(this._liveElementId,"").trim();o.length>0?e.setAttribute("aria-owns",o):e.removeAttribute("aria-owns")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{if(this._destroyed)return;let e=this._elementRef.nativeElement,n=e.querySelector("[aria-hidden]"),o=e.querySelector("[aria-live]");if(n&&o){let r=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&n.contains(document.activeElement)&&(r=document.activeElement),n.removeAttribute("aria-hidden"),o.appendChild(n),r?.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-snack-bar-container"]],viewQuery:function(n,o){if(n&1&&gn(rs,7)(Xae,7),n&2){let r;gt(r=_t())&&(o._portalOutlet=r.first),gt(r=_t())&&(o._label=r.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container"],hostVars:6,hostBindings:function(n,o){n&1&&v("animationend",function(a){return o.onAnimationEnd(a.animationName)})("animationcancel",function(a){return o.onAnimationEnd(a.animationName)}),n&2&&je("mat-snack-bar-container-enter",o._animationState==="visible")("mat-snack-bar-container-exit",o._animationState==="hidden")("mat-snack-bar-container-animations-enabled",!o._animationsDisabled)},features:[xn],decls:6,vars:3,consts:[["label",""],[1,"mdc-snackbar__surface","mat-mdc-snackbar-surface"],[1,"mat-mdc-snack-bar-label"],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(n,o){n&1&&(s(0,"div",1)(1,"div",2,0)(3,"div",3),Ae(4,Qae,0,0,"ng-template",4),l(),F(5,"div"),l()()),n&2&&(u(5),It("aria-live",o._live)("role",o._role)("id",o._liveElementId))},dependencies:[rs],styles:[`@keyframes _mat-snack-bar-enter{from{transform:scale(0.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes _mat-snack-bar-exit{from{opacity:1}to{opacity:0}}.mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-snack-bar-container-animations-enabled{opacity:0}.mat-snack-bar-container-animations-enabled.mat-snack-bar-fallback-visible{opacity:1}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-enter{animation:_mat-snack-bar-enter 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-exit{animation:_mat-snack-bar-exit 75ms cubic-bezier(0.4, 0, 1, 1) forwards}.mat-mdc-snackbar-surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}@media(forced-colors: active){.mat-mdc-snackbar-surface{outline:solid 1px}}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mat-snack-bar-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-snack-bar-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-snack-bar-container-color, var(--mat-sys-inverse-surface))}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mat-snack-bar-supporting-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-snack-bar-supporting-text-size, var(--mat-sys-body-medium-size));font-weight:var(--mat-snack-bar-supporting-text-weight, var(--mat-sys-body-medium-weight));line-height:var(--mat-snack-bar-supporting-text-line-height, var(--mat-sys-body-medium-line-height))}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled).mat-unthemed{color:var(--mat-snack-bar-button-color, var(--mat-sys-inverse-primary))}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){--mat-button-text-state-layer-color: currentColor;--mat-button-text-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}
|
||
`],encapsulation:2})}return t})(),tse=new kt("mat-snack-bar-default-options",{providedIn:"root",factory:()=>new Zf}),Qr=(()=>{class t{_live=f(fR);_injector=f(Di);_breakpointObserver=f(Fh);_parentSnackBar=f(t,{optional:!0,skipSelf:!0});_defaultConfig=f(tse);_animationsDisabled=Qi();_snackBarRefAtThisLevel=null;simpleSnackBarComponent=rV;snackBarContainerComponent=ese;handsetCssClass="mat-mdc-snack-bar-handset";get _openedSnackBarRef(){let e=this._parentSnackBar;return e?e._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(e){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=e:this._snackBarRefAtThisLevel=e}constructor(){}openFromComponent(e,n){return this._attach(e,n)}openFromTemplate(e,n){return this._attach(e,n)}open(e,n="",o){let r=H(H({},this._defaultConfig),o);return r.data={message:e,action:n},r.announcementMessage===e&&(r.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,r)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(e,n){let o=n&&n.viewContainerRef&&n.viewContainerRef.injector,r=Di.create({parent:o||this._injector,providers:[{provide:Zf,useValue:n}]}),a=new Ah(this.snackBarContainerComponent,n.viewContainerRef,r),c=e.attach(a);return c.instance.snackBarConfig=n,c.instance}_attach(e,n){let o=H(H(H({},new Zf),this._defaultConfig),n),r=this._createOverlay(o),a=this._attachSnackBarContainer(r,o),c=new Yu(a,r);if(e instanceof So){let m=new ol(e,null,{$implicit:o.data,snackBarRef:c});c.instance=a.attachTemplatePortal(m)}else{let m=this._createInjector(o,c),p=new Ah(e,void 0,m),h=a.attachComponentPortal(p);c.instance=h.instance}return this._breakpointObserver.observe(Jl.HandsetPortrait).pipe(rt(r.detachments())).subscribe(m=>{r.overlayElement.classList.toggle(this.handsetCssClass,m.matches)}),o.announcementMessage&&a._onAnnounce.subscribe(()=>{this._live.announce(o.announcementMessage,o.politeness)}),this._animateSnackBar(c,o),this._openedSnackBarRef=c,this._openedSnackBarRef}_animateSnackBar(e,n){e.afterDismissed().subscribe(()=>{this._openedSnackBarRef==e&&(this._openedSnackBarRef=null),n.announcementMessage&&this._live.clear()}),n.duration&&n.duration>0&&e.afterOpened().subscribe(()=>e._dismissAfter(n.duration)),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{e.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):e.containerInstance.enter()}_createOverlay(e){let n=new fm;n.direction=e.direction;let o=_m(this._injector),r=e.direction==="rtl",a=e.horizontalPosition==="left"||e.horizontalPosition==="start"&&!r||e.horizontalPosition==="end"&&r,c=!a&&e.horizontalPosition!=="center";return a?o.left("0"):c?o.right("0"):o.centerHorizontally(),e.verticalPosition==="top"?o.top("0"):o.bottom("0"),n.positionStrategy=o,n.disableAnimations=this._animationsDisabled,vm(this._injector,n)}_createInjector(e,n){let o=e&&e.viewContainerRef&&e.viewContainerRef.injector;return Di.create({parent:o||this._injector,providers:[{provide:Yu,useValue:n},{provide:Gy,useValue:e.data}]})}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Zc=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({providers:[Qr],imports:[rl,Fs,$,rV,wn]})}return t})();var fe=(()=>{class t{snackbar;snackBarConfigForSuccess={duration:4e3,panelClass:["snackabar-success"],MatSnackBarHorizontalPosition:"center",MatSnackBarVerticalPosition:"bottom"};snackBarConfigForWarning={duration:4e3,panelClass:["snackabar-warning"],MatSnackBarHorizontalPosition:"center",MatSnackBarVerticalPosition:"bottom"};snackBarConfigForError={duration:1e4,panelClass:["snackabar-error"],MatSnackBarHorizontalPosition:"center",MatSnackBarVerticalPosition:"bottom"};constructor(e){this.snackbar=e}error(e){console.error(e),this.snackbar.open(e,"Close",this.snackBarConfigForError)}warning(e){this.snackbar.open(e,"Close",this.snackBarConfigForWarning)}success(e){this.snackbar.open(e,"Close",this.snackBarConfigForSuccess)}static \u0275fac=function(n){return new(n||t)(ge(Qr))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var tp=(()=>{class t{data;dialogRef=f(Pe);templateName=me("");constructor(e){this.data=e,this.templateName.set(e.templateName)}onNoClick(){this.dialogRef.close(!1)}onYesClick(){this.dialogRef.close(!0)}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-delete-confirmation-dialog"]],decls:9,vars:1,consts:[["mat-dialog-title",""],[1,"mat-mdc-dialog-content"],["mat-dialog-actions",""],["mat-button","",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h2",0),d(1,"Delete template"),l(),s(2,"div",1),d(3),l(),s(4,"div",2)(5,"button",3),v("click",function(){return o.onNoClick()}),d(6,"No, cancel"),l(),s(7,"button",4),v("click",function(){return o.onYesClick()}),d(8,"Yes, delete!"),l()()),n&2&&(u(3),X("Are you sure you want to delete template ",o.templateName(),"?"))},dependencies:[Ce,Ve,Be,$,le],encapsulation:2,changeDetection:0})}return t})();var ise=(t,i)=>i.compute_id;function ose(t,i){if(t&1&&(s(0,"button",3)(1,"mat-icon"),d(2,"arrow_back"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/projects")}}function rse(t,i){if(t&1){let e=j();s(0,"button",13),v("click",function(){D(e);let o=b();return P(o.openAddDialog())}),s(1,"mat-icon"),d(2,"add_circle_outline"),l()()}}function ase(t,i){t&1&&(s(0,"div",10),d(1,"Loading..."),l())}function sse(t,i){t&1&&(s(0,"div",11)(1,"mat-icon",14),d(2,"cloud_off"),l(),s(3,"p"),d(4,"No computes found. Click + to add one."),l()())}function lse(t,i){if(t&1&&(s(0,"span",22)(1,"mat-icon",23),d(2,"memory"),l(),d(3),l(),s(4,"span",22)(5,"mat-icon",23),d(6,"storage"),l(),d(7),l(),s(8,"span",22)(9,"mat-icon",23),d(10,"disc_full"),l(),d(11),l()),t&2){let e=b().$implicit,n=b(2);u(3),X(" ",n.formatPercent(e.cpu_usage_percent)," "),u(4),X(" ",n.formatPercent(e.memory_usage_percent)," "),u(4),X(" ",n.formatPercent(e.disk_usage_percent)," ")}}function cse(t,i){t&1&&(s(0,"span",21),d(1,"Offline"),l())}function dse(t,i){if(t&1){let e=j();s(0,"button",24),v("click",function(o){return o.stopPropagation()}),s(1,"mat-icon"),d(2,"more_vert"),l()(),s(3,"mat-menu",25,0)(5,"button",26),v("click",function(){D(e);let o=b().$implicit,r=b(2);return P(r.openEditDialog(o))}),s(6,"mat-icon"),d(7,"edit"),l(),s(8,"span"),d(9,"Edit"),l()(),s(10,"button",26),v("click",function(){D(e);let o=b().$implicit,r=b(2);return P(r.connectCompute(o))}),s(11,"mat-icon"),d(12,"link"),l(),s(13,"span"),d(14,"Connect"),l()(),s(15,"button",26),v("click",function(){D(e);let o=b().$implicit,r=b(2);return P(r.deleteCompute(o))}),s(16,"mat-icon"),d(17,"delete"),l(),s(18,"span"),d(19,"Delete"),l()()()}if(t&2){let e=Re(4);x("matMenuTriggerFor",e)}}function mse(t,i){if(t&1&&(s(0,"div",15)(1,"mat-icon",16),d(2),l(),s(3,"div",17)(4,"span",18),d(5),l(),s(6,"span",19),d(7),l()(),s(8,"div",20),A(9,lse,12,3)(10,cse,2,0,"span",21),l(),A(11,dse,20,1),l()),t&2){let e=i.$implicit,n=b(2);u(),yn("color",n.getStatusColor(e)),x("matTooltip",e.connected?"Connected":"Disconnected"),u(),X(" ",n.getStatusIcon(e)," "),u(3),U(e.name||e.compute_id),u(2),U(n.formatHost(e)),u(2),O(e.connected?9:10),u(2),O(e.compute_id!=="local"?11:-1)}}function pse(t,i){if(t&1&&(s(0,"nav",12),J(1,mse,12,8,"div",15,ise),l()),t&2){let e=b();u(),ee(e.computes())}}var use=(t,i)=>i.key;function hse(t,i){if(t&1&&(s(0,"mat-option",6),d(1),l()),t&2){let e=i.$implicit;x("value",e.key),u(),U(e.name)}}function fse(t,i){t&1&&(s(0,"mat-error"),d(1,"You must select a protocol"),l())}function gse(t,i){t&1&&(s(0,"mat-error"),d(1,"You must enter a host"),l())}function _se(t,i){t&1&&(s(0,"mat-error"),d(1,"You must enter a port"),l())}function vse(t,i){t&1&&(s(0,"mat-error"),d(1,"Port must be between 1 and 65535"),l())}var sV=(()=>{class t{route=f(Ye);controllerService=f(We);computeService=f(Lo);notificationService=f(wc);toasterService=f(fe);dialog=f(Je);cd=f(K);controller;_computes=me([]);computes=ri(()=>[...this._computes()].sort((n,o)=>n.compute_id==="local"?-1:o.compute_id==="local"?1:(n.name||"").localeCompare(o.name||"")));displayedColumns=["status","name","host","connected","cpu","memory","disk","actions"];loading=me(!0);subscription=new so;ngOnInit(){this.loadControllerAndComputes()}ngOnDestroy(){this.subscription.unsubscribe()}loadControllerAndComputes(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{if(this.controller=n,this.cd.markForCheck(),this.notificationService.hasCachedData()){let o=this.notificationService.getCachedComputes();this._computes.set(o),this.loading.set(!1),this.cd.markForCheck()}else this.loadComputes();this.subscription.add(this.notificationService.computeNotificationEmitter.subscribe(o=>{this.handleComputeNotification(o)})),this.subscription.add(this.notificationService.computeCacheUpdated.subscribe(o=>{this._computes.set(o),this.loading.set(!1),this.cd.markForCheck()}))})}handleComputeNotification(e){switch(e.action){case"compute.created":this._computes.update(n=>[...n,e.event]),this.toasterService.success(`Compute "${e.event.name}" added`);break;case"compute.updated":this._computes.update(n=>n.map(o=>o.compute_id===e.event.compute_id?e.event:o));break;case"compute.deleted":this._computes.update(n=>n.filter(o=>o.compute_id!==e.event.compute_id)),this.toasterService.success(`Compute "${e.event.name}" deleted`);break}this.cd.markForCheck()}loadComputes(){this.loading.set(!0),this.computeService.getComputes(this.controller).subscribe({next:e=>{this.notificationService.setInitialComputes(e),this._computes.set(e),this.loading.set(!1),this.cd.markForCheck()},error:e=>{this.loading.set(!1),this.toasterService.error("Failed to load computes: "+e),this.cd.markForCheck()}})}openAddDialog(){this.dialog.open(aV,{panelClass:["base-dialog-panel","simple-dialog-panel"],autoFocus:!1,disableClose:!0,data:{controller:this.controller}}).afterClosed().subscribe(n=>{n&&this.computeService.createCompute(this.controller,n).subscribe({next:()=>{this.toasterService.success("Compute added successfully"),this.loadComputes()},error:o=>{this.toasterService.error("Failed to add compute: "+o),this.cd.markForCheck()}})})}openEditDialog(e){this.computeService.getCompute(this.controller,e.compute_id).subscribe({next:n=>{this.dialog.open(aV,{panelClass:["base-dialog-panel","simple-dialog-panel"],autoFocus:!1,disableClose:!0,data:{controller:this.controller,compute:n}}).afterClosed().subscribe(r=>{r&&this.computeService.updateCompute(this.controller,e.compute_id,r).subscribe({next:()=>{this.toasterService.success("Compute updated successfully"),this.loadComputes()},error:a=>{this.toasterService.error("Failed to update compute: "+a),this.cd.markForCheck()}})})},error:n=>{this.toasterService.error("Failed to load compute details: "+n),this.cd.markForCheck()}})}deleteCompute(e){this.dialog.open(tp,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],autoFocus:!1,disableClose:!0,data:{templateName:e.name||e.compute_id}}).afterClosed().subscribe(o=>{o&&this.computeService.deleteCompute(this.controller,e.compute_id).subscribe({next:()=>{this.toasterService.success("Compute deleted successfully"),this.loadComputes()},error:r=>{this.toasterService.error("Failed to delete compute: "+r),this.cd.markForCheck()}})})}connectCompute(e){this.computeService.connectCompute(this.controller,e.compute_id).subscribe({next:()=>{this.toasterService.success("Connection request sent"),this.computeService.getCompute(this.controller,e.compute_id).subscribe({next:n=>{let o=this.computes().map(r=>r.compute_id===n.compute_id?n:r);this._computes.set(o),this.cd.markForCheck()},error:()=>{this.loadComputes()}})},error:n=>{this.toasterService.error("Failed to connect compute: "+n),this.cd.markForCheck()}})}getStatusIcon(e){return e.connected?"check_circle":"cancel"}getStatusColor(e){return e.connected?"var(--mat-sys-primary)":"var(--mat-sys-error)"}formatPercent(e){return e!=null?`${e.toFixed(1)}%`:"--"}formatHost(e){return`${e.host}:${e.port}`}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-computes"]],decls:15,vars:5,consts:[["menu","matMenu"],[1,"computes"],[1,"computes__header"],["mat-icon-button","",1,"computes__back-btn",3,"routerLink"],[1,"computes__title"],["matTooltip","Add Compute","matTooltipClass","custom-tooltip","mat-icon-button","",1,"computes__add-btn"],[1,"computes__content"],[1,"computes__info"],[1,"computes__info-icon"],[1,"computes__info-text"],[1,"computes__loading"],[1,"computes__empty"],[1,"computes__list"],["matTooltip","Add Compute","matTooltipClass","custom-tooltip","mat-icon-button","",1,"computes__add-btn",3,"click"],[1,"computes__empty-icon"],[1,"computes__list-item"],[1,"computes__list-icon",3,"matTooltip"],[1,"computes__list-info"],[1,"computes__list-name"],[1,"computes__list-host"],[1,"computes__list-stats"],[1,"computes__stat","computes__stat--offline"],[1,"computes__stat"],[1,"computes__stat-icon"],["mat-icon-button","",1,"computes__menu-btn",3,"click","matMenuTriggerFor"],["xPosition","before"],["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"header",2),A(2,ose,3,1,"button",3),s(3,"h1",4),d(4,"Computes"),l(),A(5,rse,3,0,"button",5),l(),s(6,"main",6)(7,"div",7)(8,"mat-icon",8),d(9,"info"),l(),s(10,"p",9),d(11," Once configured and connected, the backend maintains the connection to Compute nodes automatically. This page is used to add/delete/update node configurations and view node status. "),l()(),A(12,ase,2,0,"div",10),A(13,sse,5,0,"div",11),A(14,pse,3,0,"nav",12),l()()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.controller?5:-1),u(7),O(o.loading()?12:-1),u(),O(!o.loading()&&!o.computes().length?13:-1),u(),O(!o.loading()&&o.computes().length?14:-1))},dependencies:[Z,at,cn,$,ze,te,se,Qe,Fn,ot,kn,In,Gt,Kt,Ce,Me,we,Mt,ct],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.computes__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.computes__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.computes__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.computes__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.computes__add-btn[_ngcontent-%COMP%]{margin-left:auto;color:var(--mat-sys-primary)}.computes__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.computes__info[_ngcontent-%COMP%]{display:flex;gap:12px;padding:16px;margin-bottom:20px;background:var(--mat-sys-primary-container);border-radius:12px;border-left:4px solid var(--mat-sys-primary);animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .15s both}.computes__info-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary-container);flex-shrink:0;font-size:20px;width:20px;height:20px}.computes__info-text[_ngcontent-%COMP%]{margin:0;font-size:14px;color:var(--mat-sys-on-primary-container);line-height:1.5}.computes__loading[_ngcontent-%COMP%], .computes__empty[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;color:var(--mat-sys-on-surface-variant);background:var(--mat-sys-surface);border-radius:16px;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.computes__empty-icon[_ngcontent-%COMP%]{font-size:48px;width:48px;height:48px;margin-bottom:16px;color:var(--mat-sys-on-surface-variant)}.computes__list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.computes__list-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer}.computes__list-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.computes__list-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.computes__list-icon[_ngcontent-%COMP%]{flex-shrink:0}.computes__list-info[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;min-width:0}.computes__list-name[_ngcontent-%COMP%]{font-size:16px;font-weight:500;color:var(--mat-sys-on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.computes__list-host[_ngcontent-%COMP%]{font-size:13px;color:var(--mat-sys-on-surface-variant)}.computes__list-stats[_ngcontent-%COMP%]{display:flex;gap:16px;flex-shrink:0}.computes__stat[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--mat-sys-on-surface)}.computes__stat--offline[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-style:italic}.computes__stat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px;color:var(--mat-sys-on-surface-variant)}.computes__menu-btn[_ngcontent-%COMP%]{flex-shrink:0}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.computes__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.computes__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.computes__title[_ngcontent-%COMP%]{font-size:24px}.computes__content[_ngcontent-%COMP%]{padding:0 16px 16px}.computes__list-item[_ngcontent-%COMP%]{padding:14px 16px}.computes__list-stats[_ngcontent-%COMP%]{display:none}}"],changeDetection:0})}return t})(),aV=(()=>{class t{dialogRef=f(Pe);data=f(Nt);protocols=[{key:"http",name:"HTTP"},{key:"https",name:"HTTPS"}];computeForm=new Dr({name:new re(""),protocol:new re("http",[be.required]),host:new re("",[be.required]),port:new re(3080,[be.required,be.min(1),be.max(65535)]),user:new re("gns3"),password:new re("gns3")});isEditMode=!1;constructor(){this.data.compute&&(this.isEditMode=!0,this.computeForm.patchValue({name:this.data.compute.name,protocol:this.data.compute.protocol,host:this.data.compute.host,port:this.data.compute.port,user:this.data.compute.user,password:""}))}onSaveClick(){if(!this.computeForm.valid)return;let e=this.computeForm.value,n={protocol:e.protocol,host:e.host,port:e.port,user:e.user||void 0,name:e.name||void 0};e.password&&e.password.trim()!==""&&(n.password=e.password),this.dialogRef.close(n)}onCancelClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-add-compute-dialog"]],decls:39,vars:8,consts:[["mat-dialog-title",""],[3,"formGroup"],["mat-dialog-content",""],["appearance","fill",1,"full-width-field"],["matInput","","tabindex","1","formControlName","name","placeholder","My Compute"],["formControlName","protocol"],[3,"value"],["matInput","","tabindex","1","formControlName","host","placeholder","192.168.1.100"],["matInput","","type","number","tabindex","1","formControlName","port","placeholder","3080"],["matInput","","tabindex","1","formControlName","user","placeholder","gns3"],["matInput","","type","password","tabindex","1","formControlName","password","placeholder","gns3"],["mat-dialog-actions","","align","end"],["mat-button","","tabindex","-1","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click","disabled"]],template:function(n,o){n&1&&(s(0,"h2",0),d(1),l(),s(2,"form",1)(3,"div",2)(4,"mat-form-field",3)(5,"mat-label"),d(6,"Name (optional)"),l(),F(7,"input",4),l(),s(8,"mat-form-field",3)(9,"mat-label"),d(10,"Protocol"),l(),s(11,"mat-select",5),J(12,hse,2,2,"mat-option",6,use),l(),A(14,fse,2,0,"mat-error"),l(),s(15,"mat-form-field",3)(16,"mat-label"),d(17,"Host"),l(),F(18,"input",7),A(19,gse,2,0,"mat-error"),l(),s(20,"mat-form-field",3)(21,"mat-label"),d(22,"Port"),l(),F(23,"input",8),A(24,_se,2,0,"mat-error"),A(25,vse,2,0,"mat-error"),l(),s(26,"mat-form-field",3)(27,"mat-label"),d(28,"User"),l(),F(29,"input",9),l(),s(30,"mat-form-field",3)(31,"mat-label"),d(32,"Password"),l(),F(33,"input",10),l()(),s(34,"div",11)(35,"button",12),v("click",function(){return o.onCancelClick()}),d(36,"Cancel"),l(),s(37,"button",13),v("click",function(){return o.onSaveClick()}),d(38),l()()()),n&2&&(u(),U(o.isEditMode?"Edit Compute":"Add Compute"),u(),x("formGroup",o.computeForm),u(10),ee(o.protocols),u(2),O(o.computeForm.get("protocol").hasError("required")?14:-1),u(5),O(o.computeForm.get("host").hasError("required")?19:-1),u(5),O(o.computeForm.get("port").hasError("required")?24:-1),u(),O(o.computeForm.get("port").hasError("min")||o.computeForm.get("port").hasError("max")?25:-1),u(12),x("disabled",o.computeForm.invalid),u(),X(" ",o.isEditMode?"Update":"Add"," "))},dependencies:[Z,ct,Ue,vt,xi,mt,He,pt,bt,Ce,Ve,Be,Wt,$,le,Me,ke,lt,Ni,we,Te,Mt,At,St],encapsulation:2,changeDetection:0})}return t})();var bse=["*"];var Cse=[[["","mat-card-avatar",""],["","matCardAvatar",""]],[["mat-card-title"],["mat-card-subtitle"],["","mat-card-title",""],["","mat-card-subtitle",""],["","matCardTitle",""],["","matCardSubtitle",""]],"*"],xse=["[mat-card-avatar], [matCardAvatar]",`mat-card-title, mat-card-subtitle,
|
||
[mat-card-title], [mat-card-subtitle],
|
||
[matCardTitle], [matCardSubtitle]`,"*"],yse=new kt("MAT_CARD_CONFIG"),Tn=(()=>{class t{appearance;constructor(){let e=f(yse,{optional:!0});this.appearance=e?.appearance||"raised"}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-card"]],hostAttrs:[1,"mat-mdc-card","mdc-card"],hostVars:8,hostBindings:function(n,o){n&2&&je("mat-mdc-card-outlined",o.appearance==="outlined")("mdc-card--outlined",o.appearance==="outlined")("mat-mdc-card-filled",o.appearance==="filled")("mdc-card--filled",o.appearance==="filled")},inputs:{appearance:"appearance"},exportAs:["matCard"],ngContentSelectors:bse,decls:1,vars:0,template:function(n,o){n&1&&(En(),Yt(0))},styles:[`.mat-mdc-card{display:flex;flex-direction:column;box-sizing:border-box;position:relative;border-style:solid;border-width:0;background-color:var(--mat-card-elevated-container-color, var(--mat-sys-surface-container-low));border-color:var(--mat-card-elevated-container-color, var(--mat-sys-surface-container-low));border-radius:var(--mat-card-elevated-container-shape, var(--mat-sys-corner-medium));box-shadow:var(--mat-card-elevated-container-elevation, var(--mat-sys-level1))}.mat-mdc-card::after{position:absolute;top:0;left:0;width:100%;height:100%;border:solid 1px rgba(0,0,0,0);content:"";display:block;pointer-events:none;box-sizing:border-box;border-radius:var(--mat-card-elevated-container-shape, var(--mat-sys-corner-medium))}.mat-mdc-card-outlined{background-color:var(--mat-card-outlined-container-color, var(--mat-sys-surface));border-radius:var(--mat-card-outlined-container-shape, var(--mat-sys-corner-medium));border-width:var(--mat-card-outlined-outline-width, 1px);border-color:var(--mat-card-outlined-outline-color, var(--mat-sys-outline-variant));box-shadow:var(--mat-card-outlined-container-elevation, var(--mat-sys-level0))}.mat-mdc-card-outlined::after{border:none}.mat-mdc-card-filled{background-color:var(--mat-card-filled-container-color, var(--mat-sys-surface-container-highest));border-radius:var(--mat-card-filled-container-shape, var(--mat-sys-corner-medium));box-shadow:var(--mat-card-filled-container-elevation, var(--mat-sys-level0))}.mdc-card__media{position:relative;box-sizing:border-box;background-repeat:no-repeat;background-position:center;background-size:cover}.mdc-card__media::before{display:block;content:""}.mdc-card__media:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__media:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mat-mdc-card-actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;min-height:52px;padding:8px}.mat-mdc-card-title{font-family:var(--mat-card-title-text-font, var(--mat-sys-title-large-font));line-height:var(--mat-card-title-text-line-height, var(--mat-sys-title-large-line-height));font-size:var(--mat-card-title-text-size, var(--mat-sys-title-large-size));letter-spacing:var(--mat-card-title-text-tracking, var(--mat-sys-title-large-tracking));font-weight:var(--mat-card-title-text-weight, var(--mat-sys-title-large-weight))}.mat-mdc-card-subtitle{color:var(--mat-card-subtitle-text-color, var(--mat-sys-on-surface));font-family:var(--mat-card-subtitle-text-font, var(--mat-sys-title-medium-font));line-height:var(--mat-card-subtitle-text-line-height, var(--mat-sys-title-medium-line-height));font-size:var(--mat-card-subtitle-text-size, var(--mat-sys-title-medium-size));letter-spacing:var(--mat-card-subtitle-text-tracking, var(--mat-sys-title-medium-tracking));font-weight:var(--mat-card-subtitle-text-weight, var(--mat-sys-title-medium-weight))}.mat-mdc-card-title,.mat-mdc-card-subtitle{display:block;margin:0}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle{padding:16px 16px 0}.mat-mdc-card-header{display:flex;padding:16px 16px 0}.mat-mdc-card-content{display:block;padding:0 16px}.mat-mdc-card-content:first-child{padding-top:16px}.mat-mdc-card-content:last-child{padding-bottom:16px}.mat-mdc-card-title-group{display:flex;justify-content:space-between;width:100%}.mat-mdc-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;margin-bottom:16px;object-fit:cover}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title{line-height:normal}.mat-mdc-card-sm-image{width:80px;height:80px}.mat-mdc-card-md-image{width:112px;height:112px}.mat-mdc-card-lg-image{width:152px;height:152px}.mat-mdc-card-xl-image{width:240px;height:240px}.mat-mdc-card-subtitle~.mat-mdc-card-title,.mat-mdc-card-title~.mat-mdc-card-subtitle,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-title-group .mat-mdc-card-title,.mat-mdc-card-title-group .mat-mdc-card-subtitle{padding-top:0}.mat-mdc-card-content>:last-child:not(.mat-mdc-card-footer){margin-bottom:0}.mat-mdc-card-actions-align-end{justify-content:flex-end}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),Jc=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["mat-card-title"],["","mat-card-title",""],["","matCardTitle",""]],hostAttrs:[1,"mat-mdc-card-title"]})}return t})();var Sl=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["mat-card-content"]],hostAttrs:[1,"mat-mdc-card-content"]})}return t})();var Wy=(()=>{class t{align="start";static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["mat-card-actions"]],hostAttrs:[1,"mat-mdc-card-actions","mdc-card__actions"],hostVars:2,hostBindings:function(n,o){n&2&&je("mat-mdc-card-actions-align-end",o.align==="end")},inputs:{align:"align"},exportAs:["matCardActions"]})}return t})(),ed=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-card-header"]],hostAttrs:[1,"mat-mdc-card-header"],ngContentSelectors:xse,decls:4,vars:0,consts:[[1,"mat-mdc-card-header-text"]],template:function(n,o){n&1&&(En(Cse),Yt(0),_o(1,"div",0),Yt(2,1),wo(),Yt(3,2))},encapsulation:2,changeDetection:0})}return t})();var Dt=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[wn]})}return t})();var np=(()=>{class t{dataChange=new qt([]);constructor(){}get data(){return this.dataChange.value}addController(e){let n=this.data.slice();n.push(e),this.dataChange.next(n)}addControllers(e){this.dataChange.next(e)}remove(e){let n=this.data.indexOf(e);n>=0&&(this.data.splice(n,1),this.dataChange.next(this.data.slice()))}find(e){return this.data.find(n=>n.name===e)}findById(e){return this.data.find(n=>n.id===e)}findIndex(e){return this.data.findIndex(n=>n.name===e)}findIndexById(e){return this.data.findIndex(n=>n.id===e)}update(e){let n=this.findIndexById(e.id);n>=0&&(this.data[n]=e,this.dataChange.next(this.data.slice()))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var lV=(t,i)=>i.key;function Sse(t,i){t&1&&(s(0,"mat-error"),d(1,"You must enter a value"),l())}function wse(t,i){if(t&1&&(s(0,"mat-option",9),d(1),l()),t&2){let e=i.$implicit;x("value",e.key),u(),X(" ",e.name," ")}}function Mse(t,i){if(t&1&&(s(0,"mat-option",9),d(1),l()),t&2){let e=i.$implicit;x("value",e.key),u(),X(" ",e.name," ")}}var qy=(()=>{class t{controllerService=f(We);controllerDatabase=f(np);route=f(Ye);router=f(ut);toasterService=f(fe);controllerOptionsVisibility=me(!1);controllerIp;controllerPort;projectId;protocols=[{key:"http:",name:"HTTP"},{key:"https:",name:"HTTPS"}];locations=[{key:"local",name:"Local"},{key:"remote",name:"Remote"}];controllerForm=new Dr({name:new re("",[be.required]),location:new re(""),protocol:new re("http:")});constructor(){}async ngOnInit(){this.controllerService.isServiceInitialized&&this.getControllers(),this.controllerService.serviceInitialized.subscribe(async e=>{e&&this.getControllers()})}async getControllers(){this.controllerIp=this.route.snapshot.paramMap.get("controller_ip"),this.controllerPort=+this.route.snapshot.paramMap.get("controller_port"),this.projectId=this.route.snapshot.paramMap.get("project_id");let n=(await this.controllerService.findAll()).filter(o=>o.host===this.controllerIp&&o.port===this.controllerPort)[0];n?this.router.navigate(["/controller",n.id,"project",this.projectId]):this.controllerOptionsVisibility.set(!0)}createController(){if(!this.controllerForm.get("name").hasError&&!this.controllerForm.get("location").hasError&&!this.controllerForm.get("protocol").hasError){this.toasterService.error("Please use correct values");return}let e=new Qf;e.host=this.controllerIp,e.port=this.controllerPort,e.name=this.controllerForm.get("name").value,e.location=this.controllerForm.get("location").value,e.protocol=this.controllerForm.get("protocol").value,this.controllerService.create(e).then(n=>{this.router.navigate(["/controller",n.id,"project",this.projectId])})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-direct-link"]],decls:22,vars:3,consts:[[1,"content",3,"hidden"],[1,"default-header"],[1,"row"],[1,"col"],[1,"default-content"],[1,"matCard"],[3,"formGroup"],["matInput","","tabindex","1","formControlName","name","placeholder","Name"],["placeholder","Location","formControlName","location"],[3,"value"],["placeholder","Protocol","formControlName","protocol"],[1,"buttons-bar"],["mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1",3),d(4,"Add new controller"),l()()(),s(5,"div",4)(6,"mat-card",5)(7,"form",6)(8,"mat-form-field"),F(9,"input",7),A(10,Sse,2,0,"mat-error"),l(),s(11,"mat-form-field")(12,"mat-select",8),J(13,wse,2,2,"mat-option",9,lV),l()(),s(15,"mat-form-field")(16,"mat-select",10),J(17,Mse,2,2,"mat-option",9,lV),l()()()(),s(19,"div",11)(20,"button",12),v("click",function(){return o.createController()}),d(21,"Add controller"),l()()()()),n&2&&(x("hidden",!o.controllerOptionsVisibility()),u(7),x("formGroup",o.controllerForm),u(3),O(o.controllerForm.get("name").hasError("required")?10:-1),u(3),ee(o.locations),u(4),ee(o.protocols))},dependencies:[Z,ct,Ue,vt,mt,He,pt,bt,at,Dt,Tn,Me,ke,Ni,we,Te,Mt,At,St,Jo,$,le],styles:["mat-form-field[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();var H3=new kt("CdkAccordion"),cV=(()=>{class t{_stateChanges=new Le;_openCloseAllActions=new Le;id=f(Oi).getId("cdk-accordion-");multi=!1;openAll(){this.multi&&this._openCloseAllActions.next(!0)}closeAll(){this._openCloseAllActions.next(!1)}ngOnChanges(e){this._stateChanges.next(e)}ngOnDestroy(){this._stateChanges.complete(),this._openCloseAllActions.complete()}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["cdk-accordion"],["","cdkAccordion",""]],inputs:{multi:[2,"multi","multi",dt]},exportAs:["cdkAccordion"],features:[hn([{provide:H3,useExisting:t}]),un]})}return t})(),dV=(()=>{class t{accordion=f(H3,{optional:!0,skipSelf:!0});_changeDetectorRef=f(K);_expansionDispatcher=f(Lh);_openCloseAllSubscription=so.EMPTY;closed=new ve;opened=new ve;destroyed=new ve;expandedChange=new ve;id=f(Oi).getId("cdk-accordion-child-");get expanded(){return this._expanded}set expanded(e){if(this._expanded!==e){if(this._expanded=e,this.expandedChange.emit(e),e){this.opened.emit();let n=this.accordion?this.accordion.id:this.id;this._expansionDispatcher.notify(this.id,n)}else this.closed.emit();this._changeDetectorRef.markForCheck()}}_expanded=!1;get disabled(){return this._disabled()}set disabled(e){this._disabled.set(e)}_disabled=me(!1);_removeUniqueSelectionListener=()=>{};constructor(){}ngOnInit(){this._removeUniqueSelectionListener=this._expansionDispatcher.listen((e,n)=>{this.accordion&&!this.accordion.multi&&this.accordion.id===n&&this.id!==e&&(this.expanded=!1)}),this.accordion&&(this._openCloseAllSubscription=this._subscribeToOpenCloseAllActions())}ngOnDestroy(){this.opened.complete(),this.closed.complete(),this.destroyed.emit(),this.destroyed.complete(),this._removeUniqueSelectionListener(),this._openCloseAllSubscription.unsubscribe()}toggle(){this.disabled||(this.expanded=!this.expanded)}close(){this.disabled||(this.expanded=!1)}open(){this.disabled||(this.expanded=!0)}_subscribeToOpenCloseAllActions(){return this.accordion._openCloseAllActions.subscribe(e=>{this.disabled||(this.expanded=e)})}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["cdk-accordion-item"],["","cdkAccordionItem",""]],inputs:{expanded:[2,"expanded","expanded",dt],disabled:[2,"disabled","disabled",dt]},outputs:{closed:"closed",opened:"opened",destroyed:"destroyed",expandedChange:"expandedChange"},exportAs:["cdkAccordionItem"],features:[hn([{provide:H3,useValue:void 0}])]})}return t})(),Xy=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({})}return t})();var kse=["body"],Tse=["bodyWrapper"],Ese=[[["mat-expansion-panel-header"]],"*",[["mat-action-row"]]],Dse=["mat-expansion-panel-header","*","mat-action-row"];function Pse(t,i){}var Ise=[[["mat-panel-title"]],[["mat-panel-description"]],"*"],Ase=["mat-panel-title","mat-panel-description","*"];function Ose(t,i){t&1&&(_o(0,"span",1),Vn(),_o(1,"svg",2),jr(2,"path",3),wo()())}var U3=new kt("MAT_ACCORDION"),mV=new kt("MAT_EXPANSION_PANEL"),Nse=(()=>{class t{_template=f(So);_expansionPanel=f(mV,{optional:!0});constructor(){}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["ng-template","matExpansionPanelContent",""]]})}return t})(),pV=new kt("MAT_EXPANSION_PANEL_DEFAULT_OPTIONS"),Ud=(()=>{class t extends dV{_viewContainerRef=f(co);_animationsDisabled=Qi();_document=f(Pi);_ngZone=f(bi);_elementRef=f(Lt);_renderer=f(ii);_cleanupTransitionEnd;get hideToggle(){return this._hideToggle||this.accordion&&this.accordion.hideToggle}set hideToggle(e){this._hideToggle=e}_hideToggle=!1;get togglePosition(){return this._togglePosition||this.accordion&&this.accordion.togglePosition}set togglePosition(e){this._togglePosition=e}_togglePosition;afterExpand=new ve;afterCollapse=new ve;_inputChanges=new Le;accordion=f(U3,{optional:!0,skipSelf:!0});_lazyContent;_body;_bodyWrapper;_portal;_headerId=f(Oi).getId("mat-expansion-panel-header-");constructor(){super();let e=f(pV,{optional:!0});this._expansionDispatcher=f(Lh),e&&(this.hideToggle=e.hideToggle)}_hasSpacing(){return this.accordion?this.expanded&&this.accordion.displayMode==="default":!1}_getExpandedState(){return this.expanded?"expanded":"collapsed"}toggle(){this.expanded=!this.expanded}close(){this.expanded=!1}open(){this.expanded=!0}ngAfterContentInit(){this._lazyContent&&this._lazyContent._expansionPanel===this&&this.opened.pipe(li(null),Pn(()=>this.expanded&&!this._portal),wi(1)).subscribe(()=>{this._portal=new ol(this._lazyContent._template,this._viewContainerRef)}),this._setupAnimationEvents()}ngOnChanges(e){this._inputChanges.next(e)}ngOnDestroy(){super.ngOnDestroy(),this._cleanupTransitionEnd?.(),this._inputChanges.complete()}_containsFocus(){if(this._body){let e=this._document.activeElement,n=this._body.nativeElement;return e===n||n.contains(e)}return!1}_transitionEndListener=({target:e,propertyName:n})=>{e===this._bodyWrapper?.nativeElement&&n==="grid-template-rows"&&this._ngZone.run(()=>{this.expanded?this.afterExpand.emit():this.afterCollapse.emit()})};_setupAnimationEvents(){this._ngZone.runOutsideAngular(()=>{this._animationsDisabled?(this.opened.subscribe(()=>this._ngZone.run(()=>this.afterExpand.emit())),this.closed.subscribe(()=>this._ngZone.run(()=>this.afterCollapse.emit()))):setTimeout(()=>{let e=this._elementRef.nativeElement;this._cleanupTransitionEnd=this._renderer.listen(e,"transitionend",this._transitionEndListener),e.classList.add("mat-expansion-panel-animations-enabled")},200)})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-expansion-panel"]],contentQueries:function(n,o,r){if(n&1&&$i(r,Nse,5),n&2){let a;gt(a=_t())&&(o._lazyContent=a.first)}},viewQuery:function(n,o){if(n&1&&gn(kse,5)(Tse,5),n&2){let r;gt(r=_t())&&(o._body=r.first),gt(r=_t())&&(o._bodyWrapper=r.first)}},hostAttrs:[1,"mat-expansion-panel"],hostVars:4,hostBindings:function(n,o){n&2&&je("mat-expanded",o.expanded)("mat-expansion-panel-spacing",o._hasSpacing())},inputs:{hideToggle:[2,"hideToggle","hideToggle",dt],togglePosition:"togglePosition"},outputs:{afterExpand:"afterExpand",afterCollapse:"afterCollapse"},exportAs:["matExpansionPanel"],features:[hn([{provide:U3,useValue:void 0},{provide:mV,useExisting:t}]),xn,un],ngContentSelectors:Dse,decls:9,vars:4,consts:[["bodyWrapper",""],["body",""],[1,"mat-expansion-panel-content-wrapper"],["role","region",1,"mat-expansion-panel-content",3,"id"],[1,"mat-expansion-panel-body"],[3,"cdkPortalOutlet"]],template:function(n,o){n&1&&(En(Ese),Yt(0),s(1,"div",2,0)(3,"div",3,1)(5,"div",4),Yt(6,1),Ae(7,Pse,0,0,"ng-template",5),l(),Yt(8,2),l()()),n&2&&(u(),It("inert",o.expanded?null:""),u(2),x("id",o.id),It("aria-labelledby",o._headerId),u(4),x("cdkPortalOutlet",o._portal))},dependencies:[rs],styles:[`.mat-expansion-panel{box-sizing:content-box;display:block;margin:0;overflow:hidden}.mat-expansion-panel.mat-expansion-panel-animations-enabled{transition:margin 225ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel{position:relative;background:var(--mat-expansion-container-background-color, var(--mat-sys-surface));color:var(--mat-expansion-container-text-color, var(--mat-sys-on-surface));border-radius:var(--mat-expansion-container-shape, 12px)}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:var(--mat-expansion-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-accordion .mat-expansion-panel:not(.mat-expanded),.mat-accordion .mat-expansion-panel:not(.mat-expansion-panel-spacing){border-radius:0}.mat-accordion .mat-expansion-panel:first-of-type{border-top-right-radius:var(--mat-expansion-container-shape, 12px);border-top-left-radius:var(--mat-expansion-container-shape, 12px)}.mat-accordion .mat-expansion-panel:last-of-type{border-bottom-right-radius:var(--mat-expansion-container-shape, 12px);border-bottom-left-radius:var(--mat-expansion-container-shape, 12px)}@media(forced-colors: active){.mat-expansion-panel{outline:solid 1px}}.mat-expansion-panel-content-wrapper{display:grid;grid-template-rows:0fr;grid-template-columns:100%}.mat-expansion-panel-animations-enabled .mat-expansion-panel-content-wrapper{transition:grid-template-rows 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper{grid-template-rows:1fr}@supports not (grid-template-rows: 0fr){.mat-expansion-panel-content-wrapper{height:0}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper{height:auto}}@media print{.mat-expansion-panel-content-wrapper{height:0}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper{height:auto}}.mat-expansion-panel-content{display:flex;flex-direction:column;overflow:visible;min-height:0;visibility:hidden}.mat-expansion-panel-animations-enabled .mat-expansion-panel-content{transition:visibility 190ms linear}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper>.mat-expansion-panel-content{visibility:visible}.mat-expansion-panel-content{font-family:var(--mat-expansion-container-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-expansion-container-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-expansion-container-text-weight, var(--mat-sys-body-large-weight));line-height:var(--mat-expansion-container-text-line-height, var(--mat-sys-body-large-line-height));letter-spacing:var(--mat-expansion-container-text-tracking, var(--mat-sys-body-large-tracking))}.mat-expansion-panel-body{padding:0 24px 16px}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion>.mat-expansion-panel-spacing:first-child,.mat-accordion>*:first-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-top:0}.mat-accordion>.mat-expansion-panel-spacing:last-child,.mat-accordion>*:last-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px;border-top-color:var(--mat-expansion-actions-divider-color, var(--mat-sys-outline))}.mat-action-row .mat-button-base,.mat-action-row .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-action-row .mat-button-base,[dir=rtl] .mat-action-row .mat-mdc-button-base{margin-left:0;margin-right:8px}
|
||
`],encapsulation:2,changeDetection:0})}return t})();var Gd=(()=>{class t{panel=f(Ud,{host:!0});_element=f(Lt);_focusMonitor=f(xr);_changeDetectorRef=f(K);_parentChangeSubscription=so.EMPTY;constructor(){f(Go).load(yr);let e=this.panel,n=f(pV,{optional:!0}),o=f(new ka("tabindex"),{optional:!0}),r=e.accordion?e.accordion._stateChanges.pipe(Pn(a=>!!(a.hideToggle||a.togglePosition))):Zr;this.tabIndex=parseInt(o||"")||0,this._parentChangeSubscription=Dn(e.opened,e.closed,r,e._inputChanges.pipe(Pn(a=>!!(a.hideToggle||a.disabled||a.togglePosition)))).subscribe(()=>this._changeDetectorRef.markForCheck()),e.closed.pipe(Pn(()=>e._containsFocus())).subscribe(()=>this._focusMonitor.focusVia(this._element,"program")),n&&(this.expandedHeight=n.expandedHeight,this.collapsedHeight=n.collapsedHeight)}expandedHeight;collapsedHeight;tabIndex=0;get disabled(){return this.panel.disabled}_toggle(){this.disabled||this.panel.toggle()}_isExpanded(){return this.panel.expanded}_getExpandedState(){return this.panel._getExpandedState()}_getPanelId(){return this.panel.id}_getTogglePosition(){return this.panel.togglePosition}_showToggle(){return!this.panel.hideToggle&&!this.panel.disabled}_getHeaderHeight(){let e=this._isExpanded();return e&&this.expandedHeight?this.expandedHeight:!e&&this.collapsedHeight?this.collapsedHeight:null}_keydown(e){switch(e.keyCode){case 32:case 13:cr(e)||(e.preventDefault(),this._toggle());break;default:this.panel.accordion&&this.panel.accordion._handleHeaderKeydown(e);return}}focus(e,n){e?this._focusMonitor.focusVia(this._element,e,n):this._element.nativeElement.focus(n)}ngAfterViewInit(){this._focusMonitor.monitor(this._element).subscribe(e=>{e&&this.panel.accordion&&this.panel.accordion._handleHeaderFocus(this)})}ngOnDestroy(){this._parentChangeSubscription.unsubscribe(),this._focusMonitor.stopMonitoring(this._element)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-expansion-panel-header"]],hostAttrs:["role","button",1,"mat-expansion-panel-header","mat-focus-indicator"],hostVars:13,hostBindings:function(n,o){n&1&&v("click",function(){return o._toggle()})("keydown",function(a){return o._keydown(a)}),n&2&&(It("id",o.panel._headerId)("tabindex",o.disabled?-1:o.tabIndex)("aria-controls",o._getPanelId())("aria-expanded",o._isExpanded())("aria-disabled",o.panel.disabled),yn("height",o._getHeaderHeight()),je("mat-expanded",o._isExpanded())("mat-expansion-toggle-indicator-after",o._getTogglePosition()==="after")("mat-expansion-toggle-indicator-before",o._getTogglePosition()==="before"))},inputs:{expandedHeight:"expandedHeight",collapsedHeight:"collapsedHeight",tabIndex:[2,"tabIndex","tabIndex",e=>e==null?0:io(e)]},ngContentSelectors:Ase,decls:5,vars:3,consts:[[1,"mat-content"],[1,"mat-expansion-indicator"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-hidden","true","focusable","false"],["d","M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z"]],template:function(n,o){n&1&&(En(Ise),_o(0,"span",0),Yt(1),Yt(2,1),Yt(3,2),wo(),A(4,Ose,3,0,"span",1)),n&2&&(je("mat-content-hide-toggle",!o._showToggle()),u(4),O(o._showToggle()?4:-1))},styles:[`.mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit}.mat-expansion-panel-animations-enabled .mat-expansion-panel-header{transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header::before{border-radius:inherit}.mat-expansion-panel-header{height:var(--mat-expansion-header-collapsed-state-height, 48px);font-family:var(--mat-expansion-header-text-font, var(--mat-sys-title-medium-font));font-size:var(--mat-expansion-header-text-size, var(--mat-sys-title-medium-size));font-weight:var(--mat-expansion-header-text-weight, var(--mat-sys-title-medium-weight));line-height:var(--mat-expansion-header-text-line-height, var(--mat-sys-title-medium-line-height));letter-spacing:var(--mat-expansion-header-text-tracking, var(--mat-sys-title-medium-tracking))}.mat-expansion-panel-header.mat-expanded{height:var(--mat-expansion-header-expanded-state-height, 64px)}.mat-expansion-panel-header[aria-disabled=true]{color:var(--mat-expansion-header-disabled-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-header-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}@media(hover: none){.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-container-background-color, var(--mat-sys-surface))}}.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-keyboard-focused,.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-program-focused{background:var(--mat-expansion-header-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-content.mat-content-hide-toggle{margin-right:8px}[dir=rtl] .mat-content.mat-content-hide-toggle{margin-right:0;margin-left:8px}.mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-left:24px;margin-right:0}[dir=rtl] .mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-right:24px;margin-left:0}.mat-expansion-panel-header-title{color:var(--mat-expansion-header-text-color, var(--mat-sys-on-surface))}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;flex-basis:0;margin-right:16px;align-items:center}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header-description{flex-grow:2;color:var(--mat-expansion-header-description-color, var(--mat-sys-on-surface-variant))}.mat-expansion-panel-animations-enabled .mat-expansion-indicator{transition:transform 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header.mat-expanded .mat-expansion-indicator{transform:rotate(180deg)}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:"";padding:3px;transform:rotate(45deg);vertical-align:middle;color:var(--mat-expansion-header-indicator-color, var(--mat-sys-on-surface-variant));display:var(--mat-expansion-legacy-header-indicator-display, none)}.mat-expansion-indicator svg{width:24px;height:24px;margin:0 -8px;vertical-align:middle;fill:var(--mat-expansion-header-indicator-color, var(--mat-sys-on-surface-variant));display:var(--mat-expansion-header-indicator-display, inline-block)}@media(forced-colors: active){.mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),Qy=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["mat-panel-description"]],hostAttrs:[1,"mat-expansion-panel-header-description"]})}return t})(),ip=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["mat-panel-title"]],hostAttrs:[1,"mat-expansion-panel-header-title"]})}return t})(),op=(()=>{class t extends cV{_keyManager;_ownHeaders=new Ql;_headers;hideToggle=!1;displayMode="default";togglePosition="after";ngAfterContentInit(){this._headers.changes.pipe(li(this._headers)).subscribe(e=>{this._ownHeaders.reset(e.filter(n=>n.panel.accordion===this)),this._ownHeaders.notifyOnChanges()}),this._keyManager=new Cm(this._ownHeaders).withWrap().withHomeAndEnd()}_handleHeaderKeydown(e){this._keyManager.onKeydown(e)}_handleHeaderFocus(e){this._keyManager.updateActiveItem(e)}ngOnDestroy(){super.ngOnDestroy(),this._keyManager?.destroy(),this._ownHeaders.destroy()}static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["mat-accordion"]],contentQueries:function(n,o,r){if(n&1&&$i(r,Gd,5),n&2){let a;gt(a=_t())&&(o._headers=a)}},hostAttrs:[1,"mat-accordion"],hostVars:2,hostBindings:function(n,o){n&2&&je("mat-accordion-multi",o.multi)},inputs:{hideToggle:[2,"hideToggle","hideToggle",dt],displayMode:"displayMode",togglePosition:"togglePosition"},exportAs:["matAccordion"],features:[hn([{provide:U3,useExisting:t}]),xn]})}return t})(),wl=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[Xy,Fs,wn]})}return t})();var Ky=(()=>{class t{httpClient=f(os);sanitizer=f(lr);thirdpartylicenses=me("");releasenotes=me("");ngOnInit(){this.httpClient.get(window.location.href+"/3rdpartylicenses.txt",{responseType:"text"}).subscribe(e=>{let n=e.replace(new RegExp(`
|
||
`,"g"),"<br />");this.thirdpartylicenses.set(this.sanitizer.bypassSecurityTrustHtml(n))},e=>{e.status===404&&this.thirdpartylicenses.set("Download Solar-PuTTY")}),this.httpClient.get("ReleaseNotes.txt",{responseType:"text"}).subscribe(e=>{let n=e.replace(new RegExp(`
|
||
`,"g"),"<br />");this.releasenotes.set(this.sanitizer.bypassSecurityTrustHtml(n))})}goToDocumentation(){window.location.href="https://docs.gns3.com/docs/"}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-help"]],decls:39,vars:2,consts:[[1,"help"],[1,"help__header"],[1,"help__title"],[1,"help__content"],[1,"help__card"],["href","https://downloads.solarwinds.com/solarwinds/GNS3/Solar-PuTTY/Solar-PuTTY-Optional.exe",1,"help__link"],[3,"innerHTML"],["mat-button","","color","primary",1,"help__doc-button",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1)(2,"h1",2),d(3,"Help"),l()(),s(4,"main",3)(5,"section",4)(6,"mat-accordion")(7,"mat-expansion-panel")(8,"mat-expansion-panel-header")(9,"mat-panel-title"),d(10," Useful shortcuts "),l()(),s(11,"mat-list")(12,"mat-list-item"),d(13," ctrl + + to zoom in "),l(),s(14,"mat-list-item"),d(15," ctrl + - to zoom out "),l(),s(16,"mat-list-item"),d(17," ctrl + 0 to reset zoom "),l(),s(18,"mat-list-item"),d(19," ctrl + h to hide toolbar "),l(),s(20,"mat-list-item"),d(21," ctrl + a to select all items on map "),l(),s(22,"mat-list-item"),d(23," ctrl + shift + a to deselect all items on map "),l(),s(24,"mat-list-item"),d(25," ctrl + shift + s to go to preferences "),l()()(),s(26,"mat-expansion-panel")(27,"mat-expansion-panel-header")(28,"mat-panel-title"),d(29," Third party components "),l()(),s(30,"a",5),F(31,"div",6),l()(),s(32,"mat-expansion-panel")(33,"mat-expansion-panel-header")(34,"mat-panel-title"),d(35," Release notes "),l()(),F(36,"div",6),l()()(),s(37,"button",7),v("click",function(){return o.goToDocumentation()}),d(38," Go to documentation "),l()()()),n&2&&(u(31),x("innerHTML",o.thirdpartylicenses(),Zp),u(5),x("innerHTML",o.releasenotes(),Zp))},dependencies:[$,le,wl,op,Ud,Gd,ip,Ri,YC,Mc],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.help__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.help__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.help__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.help__card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.mat-expansion-panel[_ngcontent-%COMP%]{box-shadow:none;border-bottom:1px solid var(--mat-sys-outline-variant)}.mat-expansion-panel[_ngcontent-%COMP%]:first-of-type{border-top:none}.mat-expansion-panel-header[_ngcontent-%COMP%]{font-weight:500;color:var(--mat-sys-on-surface)}.mat-expansion-panel-header-title[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface)}.help__doc-button[_ngcontent-%COMP%]{display:block;width:100%;margin-top:20px;height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}.help__link[_ngcontent-%COMP%]{color:var(--mat-sys-primary);text-decoration:none;font-size:14px;font-weight:400}.help__link[_ngcontent-%COMP%]:hover{text-decoration:underline}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.help__header[_ngcontent-%COMP%]{padding:24px 16px 12px}.help__title[_ngcontent-%COMP%]{font-size:24px}.help__content[_ngcontent-%COMP%]{padding:0 16px 16px}.help__doc-button[_ngcontent-%COMP%]{height:44px;font-size:15px}}"],changeDetection:0})}return t})();var Zy=(()=>{class t{constructor(){}isWindows(){return navigator.platform.indexOf("Win")>-1}isLinux(){return navigator.platform.indexOf("Linux")>-1}isDarwin(){return navigator.platform.indexOf("Mac")>-1}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Jy=(()=>{class t{platformService;constructor(e){this.platformService=e}get(){return this.platformService.isWindows()?this.getForWindows():this.platformService.isDarwin()?this.getForDarwin():this.getForLinux()}getForWindows(){let e=[{name:"Wireshark",locations:["C:\\Program Files\\Wireshark\\Wireshark.exe"],type:"web",resource:"https://1.na.dl.wireshark.org/win64/all-versions/Wireshark-win64-2.6.3.exe",binary:"Wireshark.exe",sudo:!0,installation_arguments:[],installed:!1,installer:!0}],n={name:"SolarPuTTY",locations:["SolarPuTTY.exe","external\\SolarPuTTY.exe"],type:"web",resource:"",binary:"SolarPuTTY.exe",sudo:!1,installation_arguments:["--only-ask"],installed:!1,installer:!1};return Ai.solarputty_download_url&&(n.resource=Ai.solarputty_download_url,e.push(n)),e}getForLinux(){return[]}getForDarwin(){return[]}static \u0275fac=function(n){return new(n||t)(ge(Zy))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var eS=(()=>{class t{externalSoftwareDefinition;constructor(e){this.externalSoftwareDefinition=e}list(){return this.externalSoftwareDefinition.get().map(n=>(n.installed=!1,n))}static \u0275fac=function(n){return new(n||t)(ge(Jy))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Lse=(t,i)=>({hidden:t,lightTheme:i}),Bse=/<a href="(.*)">(.*)<\/a><br\/>(.*)<br\/>\s*<button><a .*>(.*)<\/a>\s*<\/button>/i,tS=(()=>{class t{httpClient=f(os);themeService=f(yi);location=f(yc);isVisible=me(!1);isLightThemeEnabled=me(!1);adUrl=me("https://try.solarwinds.com/gns3-free-toolset-giveaway?CMP=LEC-HAD-GNS3-SW_NA_X_NP_X_X_EN_STSGA_SW-ST-20200901_ST_OF1_TRY-NWSLTR");adBody=me("Network Config Generator makes it easy configure network devices, including VLANs without opening the CLI");buttonLabel=me("Check it out!");hide(){this.isVisible.set(!1)}ngOnInit(){this.location.path().includes("nodes")||(this.httpClient.get("https://servedbyadbutler.com/adserve/;ID=165803;size=0x0;setID=371476;type=json;").subscribe(e=>{if(e?.placements?.placement_1?.body)try{let n=e.placements.placement_1.body.replace(/(\r\n|\n|\r)/gm,""),o=Bse.exec(n);this.adUrl.set(o[1].trim()),this.adBody.set(o[3].trim()),this.buttonLabel.set(o[4].trim())}catch{}this.isVisible.set(!0)},e=>{}),this.themeService.getActualTheme()==="light"?this.isLightThemeEnabled.set(!0):this.isLightThemeEnabled.set(!1),this.themeService.themeChanged.subscribe(()=>{this.themeService.getActualTheme()==="light"?this.isLightThemeEnabled.set(!0):this.isLightThemeEnabled.set(!1)}))}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-adbutler"]],decls:10,vars:8,consts:[[1,"ad",3,"ngClass"],[1,"adInnerContainer"],[1,"adBody"],["target","_blank",3,"href"],[1,"close-button",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"span",2)(3,"a",3),d(4),l()(),s(5,"button")(6,"a",3),d(7),l()()(),s(8,"mat-icon",4),v("click",function(){return o.hide()}),d(9,"close"),l()()),n&2&&(x("ngClass",il(5,Lse,!o.isVisible(),o.isLightThemeEnabled())),u(3),x("href",o.adUrl(),$a),u(),U(o.adBody()),u(2),x("href",o.adUrl(),$a),u(),U(o.buttonLabel()))},dependencies:[Z,Zi,te,se],styles:[".ad[_ngcontent-%COMP%]{position:fixed;left:0;right:0;bottom:0;background-color:var(--mat-sys-primary-container);padding-top:10px;padding-bottom:10px;font-size:12px;font-weight:700;opacity:.8}.adInnerContainer[_ngcontent-%COMP%]{margin:auto;text-align:center}.adBody[_ngcontent-%COMP%]{padding-right:16px}.close-button[_ngcontent-%COMP%]{position:absolute;top:15px;right:15px;color:var(--mat-sys-on-surface)}.lightTheme[_ngcontent-%COMP%]{background-color:var(--mat-sys-surface)}.hidden[_ngcontent-%COMP%]{visibility:hidden}button[_ngcontent-%COMP%]{background-color:var(--mat-sys-primary);margin-top:2px;border:none;outline:none;color:var(--mat-sys-on-primary);font-weight:700;font-size:11px;padding:5px 15px;border-radius:6px}button[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary)}a[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface)}"],changeDetection:0})}return t})();function Vse(t,i){if(t&1&&(qe(0),d(1),Xe()),t&2){let e=b();u(),U(e.buttonText())}}var nS=(()=>{class t{software;installedChanged=new ve;disabled=me(!1);readyToInstall=me(!0);buttonText=me("");constructor(){}ngOnInit(){this.updateButton()}ngOnChanges(){this.updateButton()}install(){this.disabled.set(!0),this.buttonText.set("Not supported")}updateButton(){this.disabled.set(this.software.installed),this.software.installed?this.buttonText.set("Installed"):this.buttonText.set("Install")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-install-software"]],inputs:{software:"software"},outputs:{installedChanged:"installedChanged"},features:[un],decls:2,vars:2,consts:[["mat-button","","color","primary",3,"click","disabled"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.install()}),A(1,Vse,2,1,"ng-container"),l()),n&2&&(x("disabled",o.disabled()),u(),O(o.readyToInstall()?1:-1))},dependencies:[Z,$,le],encapsulation:2,changeDetection:0})}return t})();function zse(t,i){t&1&&(s(0,"mat-header-cell"),d(1," Name "),l())}function jse(t,i){if(t&1&&(qe(0),d(1),Xe()),t&2){let e=b().$implicit;u(),X(" ",e.name," ")}}function $se(t,i){t&1&&(qe(0),F(1,"app-adbutler",13),Xe())}function Hse(t,i){if(t&1&&(s(0,"mat-cell"),A(1,jse,2,1,"ng-container"),A(2,$se,2,0,"ng-container"),l()),t&2){let e=i.$implicit;u(),O(e.type!=="adbutler"?1:-1),u(),O(e.type==="adbutler"?2:-1)}}function Use(t,i){t&1&&F(0,"mat-header-cell")}function Gse(t,i){if(t&1){let e=j();s(0,"app-install-software",16),v("installedChanged",function(o){D(e);let r=b(2);return P(r.onInstalled(o))}),l()}if(t&2){let e=b().$implicit;x("software",e)}}function Wse(t,i){if(t&1&&(s(0,"mat-cell",14),A(1,Gse,1,1,"app-install-software",15),l()),t&2){let e=i.$implicit;u(),O(e.type!=="adbutler"?1:-1)}}function qse(t,i){t&1&&F(0,"mat-header-row")}function Xse(t,i){t&1&&F(0,"mat-row")}var iS=(()=>{class t{dataSource=me(null);displayedColumns=me(["name","actions"]);installedSoftwareService=f(eS);changeDetectorRef=f(K);constructor(){}ngOnInit(){this.dataSource.set(new G3(this.installedSoftwareService))}onInstalled(e){this.dataSource()?.refresh(),this.changeDetectorRef.detectChanges()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-installed-software"]],decls:16,vars:3,consts:[["table",""],[1,"content"],[1,"default-header"],[1,"default-content"],[1,"container","mat-elevation-z8"],[3,"dataSource"],["matColumnDef","name"],[4,"matHeaderCellDef"],[4,"matCellDef"],["matColumnDef","actions"],["style","text-align: right",4,"matCellDef"],[4,"matHeaderRowDef"],[4,"matRowDef","matRowDefColumns"],["theme","dark"],[2,"text-align","right"],[3,"software"],[3,"installedChanged","software"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"div",2)(2,"h1"),d(3,"Installed software"),l()(),s(4,"div",3)(5,"div",4)(6,"mat-table",5,0),qe(8,6),Ae(9,zse,2,0,"mat-header-cell",7)(10,Hse,3,2,"mat-cell",8),Xe(),qe(11,9),Ae(12,Use,1,0,"mat-header-cell",7)(13,Wse,2,1,"mat-cell",10),Xe(),Ae(14,qse,1,0,"mat-header-row",11)(15,Xse,1,0,"mat-row",12),l()()()()),n&2&&(u(6),x("dataSource",o.dataSource()),u(8),x("matHeaderRowDef",o.displayedColumns()),u(),x("matRowDefColumns",o.displayedColumns()))},dependencies:[Z,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,tS,nS],encapsulation:2,changeDetection:0})}return t})(),G3=class extends Kl{installedSoftwareService;installed=new qt([]);constructor(i){super(),this.installedSoftwareService=i}connect(){return this.refresh(),this.installed}disconnect(){}refresh(){let i=this.installedSoftwareService.list();i.push({type:"adbutler"}),this.installed.next(i)}};var Qse=["input"],Yse=["label"],Kse=["*"],W3={color:"accent",clickAction:"check-indeterminate",disabledInteractive:!1},Zse=new kt("mat-checkbox-default-options",{providedIn:"root",factory:()=>W3}),Oa=(function(t){return t[t.Init=0]="Init",t[t.Checked=1]="Checked",t[t.Unchecked=2]="Unchecked",t[t.Indeterminate=3]="Indeterminate",t})(Oa||{}),q3=class{source;checked},Ht=(()=>{class t{_elementRef=f(Lt);_changeDetectorRef=f(K);_ngZone=f(bi);_animationsDisabled=Qi();_options=f(Zse,{optional:!0});focus(){this._inputElement.nativeElement.focus()}_createChangeEvent(e){let n=new q3;return n.source=this,n.checked=e,n}_getAnimationTargetElement(){return this._inputElement?.nativeElement}_animationClasses={uncheckedToChecked:"mdc-checkbox--anim-unchecked-checked",uncheckedToIndeterminate:"mdc-checkbox--anim-unchecked-indeterminate",checkedToUnchecked:"mdc-checkbox--anim-checked-unchecked",checkedToIndeterminate:"mdc-checkbox--anim-checked-indeterminate",indeterminateToChecked:"mdc-checkbox--anim-indeterminate-checked",indeterminateToUnchecked:"mdc-checkbox--anim-indeterminate-unchecked"};ariaLabel="";ariaLabelledby=null;ariaDescribedby;ariaExpanded;ariaControls;ariaOwns;_uniqueId;id;get inputId(){return`${this.id||this._uniqueId}-input`}required=!1;labelPosition="after";name=null;change=new ve;indeterminateChange=new ve;value;disableRipple=!1;_inputElement;_labelElement;tabIndex;color;disabledInteractive;_onTouched=()=>{};_currentAnimationClass="";_currentCheckState=Oa.Init;_controlValueAccessorChangeFn=()=>{};_validatorChangeFn=()=>{};constructor(){f(Go).load(yr);let e=f(new ka("tabindex"),{optional:!0});this._options=this._options||W3,this.color=this._options.color||W3.color,this.tabIndex=e==null?0:parseInt(e)||0,this.id=this._uniqueId=f(Oi).getId("mat-mdc-checkbox-"),this.disabledInteractive=this._options?.disabledInteractive??!1}ngOnChanges(e){e.required&&this._validatorChangeFn()}ngAfterViewInit(){this._syncIndeterminate(this.indeterminate)}get checked(){return this._checked}set checked(e){e!=this.checked&&(this._checked=e,this._changeDetectorRef.markForCheck())}_checked=!1;get disabled(){return this._disabled}set disabled(e){e!==this.disabled&&(this._disabled=e,this._changeDetectorRef.markForCheck())}_disabled=!1;get indeterminate(){return this._indeterminate()}set indeterminate(e){let n=e!=this._indeterminate();this._indeterminate.set(e),n&&(e?this._transitionCheckState(Oa.Indeterminate):this._transitionCheckState(this.checked?Oa.Checked:Oa.Unchecked),this.indeterminateChange.emit(e)),this._syncIndeterminate(e)}_indeterminate=me(!1);_isRippleDisabled(){return this.disableRipple||this.disabled}_onLabelTextChange(){this._changeDetectorRef.detectChanges()}writeValue(e){this.checked=!!e}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}validate(e){return this.required&&e.value!==!0?{required:!0}:null}registerOnValidatorChange(e){this._validatorChangeFn=e}_transitionCheckState(e){let n=this._currentCheckState,o=this._getAnimationTargetElement();if(!(n===e||!o)&&(this._currentAnimationClass&&o.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(n,e),this._currentCheckState=e,this._currentAnimationClass.length>0)){o.classList.add(this._currentAnimationClass);let r=this._currentAnimationClass;this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{o.classList.remove(r)},1e3)})}}_emitChangeEvent(){this._controlValueAccessorChangeFn(this.checked),this.change.emit(this._createChangeEvent(this.checked)),this._inputElement&&(this._inputElement.nativeElement.checked=this.checked)}toggle(){this.checked=!this.checked,this._controlValueAccessorChangeFn(this.checked)}_handleInputClick(){let e=this._options?.clickAction;!this.disabled&&e!=="noop"?(this.indeterminate&&e!=="check"&&Promise.resolve().then(()=>{this._indeterminate.set(!1),this.indeterminateChange.emit(!1)}),this._checked=!this._checked,this._transitionCheckState(this._checked?Oa.Checked:Oa.Unchecked),this._emitChangeEvent()):(this.disabled&&this.disabledInteractive||!this.disabled&&e==="noop")&&(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate)}_onInteractionEvent(e){e.stopPropagation()}_onBlur(){Promise.resolve().then(()=>{this._onTouched(),this._changeDetectorRef.markForCheck()})}_getAnimationClassForCheckStateTransition(e,n){if(this._animationsDisabled)return"";switch(e){case Oa.Init:if(n===Oa.Checked)return this._animationClasses.uncheckedToChecked;if(n==Oa.Indeterminate)return this._checked?this._animationClasses.checkedToIndeterminate:this._animationClasses.uncheckedToIndeterminate;break;case Oa.Unchecked:return n===Oa.Checked?this._animationClasses.uncheckedToChecked:this._animationClasses.uncheckedToIndeterminate;case Oa.Checked:return n===Oa.Unchecked?this._animationClasses.checkedToUnchecked:this._animationClasses.checkedToIndeterminate;case Oa.Indeterminate:return n===Oa.Checked?this._animationClasses.indeterminateToChecked:this._animationClasses.indeterminateToUnchecked}return""}_syncIndeterminate(e){let n=this._inputElement;n&&(n.nativeElement.indeterminate=e)}_onInputClick(){this._handleInputClick()}_onTouchTargetClick(){this._handleInputClick(),this.disabled||this._inputElement.nativeElement.focus()}_preventBubblingFromLabel(e){e.target&&this._labelElement.nativeElement.contains(e.target)&&e.stopPropagation()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-checkbox"]],viewQuery:function(n,o){if(n&1&&gn(Qse,5)(Yse,5),n&2){let r;gt(r=_t())&&(o._inputElement=r.first),gt(r=_t())&&(o._labelElement=r.first)}},hostAttrs:[1,"mat-mdc-checkbox"],hostVars:16,hostBindings:function(n,o){n&2&&(No("id",o.id),It("tabindex",null)("aria-label",null)("aria-labelledby",null),Mo(o.color?"mat-"+o.color:"mat-accent"),je("_mat-animation-noopable",o._animationsDisabled)("mdc-checkbox--disabled",o.disabled)("mat-mdc-checkbox-disabled",o.disabled)("mat-mdc-checkbox-checked",o.checked)("mat-mdc-checkbox-disabled-interactive",o.disabledInteractive))},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],ariaExpanded:[2,"aria-expanded","ariaExpanded",dt],ariaControls:[0,"aria-controls","ariaControls"],ariaOwns:[0,"aria-owns","ariaOwns"],id:"id",required:[2,"required","required",dt],labelPosition:"labelPosition",name:"name",value:"value",disableRipple:[2,"disableRipple","disableRipple",dt],tabIndex:[2,"tabIndex","tabIndex",e=>e==null?void 0:io(e)],color:"color",disabledInteractive:[2,"disabledInteractive","disabledInteractive",dt],checked:[2,"checked","checked",dt],disabled:[2,"disabled","disabled",dt],indeterminate:[2,"indeterminate","indeterminate",dt]},outputs:{change:"change",indeterminateChange:"indeterminateChange"},exportAs:["matCheckbox"],features:[hn([{provide:Zl,useExisting:ql(()=>t),multi:!0},{provide:LC,useExisting:t,multi:!0}]),un],ngContentSelectors:Kse,decls:15,vars:23,consts:[["checkbox",""],["input",""],["label",""],["mat-internal-form-field","",3,"click","labelPosition"],[1,"mdc-checkbox"],["aria-hidden","true",1,"mat-mdc-checkbox-touch-target",3,"click"],["type","checkbox",1,"mdc-checkbox__native-control",3,"blur","click","change","checked","indeterminate","disabled","id","required","tabIndex"],["aria-hidden","true",1,"mdc-checkbox__ripple"],["aria-hidden","true",1,"mdc-checkbox__background"],["focusable","false","viewBox","0 0 24 24",1,"mdc-checkbox__checkmark"],["fill","none","d","M1.73,12.91 8.1,19.28 22.79,4.59",1,"mdc-checkbox__checkmark-path"],[1,"mdc-checkbox__mixedmark"],["mat-ripple","","aria-hidden","true",1,"mat-mdc-checkbox-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-label",3,"for"]],template:function(n,o){if(n&1&&(En(),s(0,"div",3),v("click",function(a){return o._preventBubblingFromLabel(a)}),s(1,"div",4,0)(3,"div",5),v("click",function(){return o._onTouchTargetClick()}),l(),s(4,"input",6,1),v("blur",function(){return o._onBlur()})("click",function(){return o._onInputClick()})("change",function(a){return o._onInteractionEvent(a)}),l(),F(6,"div",7),s(7,"div",8),Vn(),s(8,"svg",9),F(9,"path",10),l(),vr(),F(10,"div",11),l(),F(11,"div",12),l(),s(12,"label",13,2),Yt(14),l()()),n&2){let r=Re(2);x("labelPosition",o.labelPosition),u(4),je("mdc-checkbox--selected",o.checked),x("checked",o.checked)("indeterminate",o.indeterminate)("disabled",o.disabled&&!o.disabledInteractive)("id",o.inputId)("required",o.required)("tabIndex",o.disabled&&!o.disabledInteractive?-1:o.tabIndex),It("aria-label",o.ariaLabel||null)("aria-labelledby",o.ariaLabelledby)("aria-describedby",o.ariaDescribedby)("aria-checked",o.indeterminate?"mixed":null)("aria-controls",o.ariaControls)("aria-disabled",o.disabled&&o.disabledInteractive?!0:null)("aria-expanded",o.ariaExpanded)("aria-owns",o.ariaOwns)("name",o.name)("value",o.value),u(7),x("matRippleTrigger",r)("matRippleDisabled",o.disableRipple||o.disabled)("matRippleCentered",!0),u(),x("for",o.inputId)}},dependencies:[as,Vh],styles:[`.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom;padding:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);margin:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox:hover>.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity));background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:hover>.mat-mdc-checkbox-ripple>.mat-ripple-element{background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity));background-color:var(--mat-checkbox-unselected-focus-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-unselected-focus-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:active>.mdc-checkbox__native-control+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));background-color:var(--mat-checkbox-unselected-pressed-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:active>.mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-unselected-pressed-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity));background-color:var(--mat-checkbox-selected-hover-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-hover-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity));background-color:var(--mat-checkbox-selected-focus-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-focus-state-layer-color, var(--mat-sys-primary))}.mdc-checkbox:active>.mdc-checkbox__native-control:checked+.mdc-checkbox__ripple{opacity:var(--mat-checkbox-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));background-color:var(--mat-checkbox-selected-pressed-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox:active>.mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mat-checkbox-selected-pressed-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control+.mdc-checkbox__ripple{background-color:var(--mat-checkbox-unselected-hover-state-layer-color, var(--mat-sys-on-surface))}.mdc-checkbox .mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1;width:var(--mat-checkbox-state-layer-size, 40px);height:var(--mat-checkbox-state-layer-size, 40px);top:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);right:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - var(--mat-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms cubic-bezier(0.4, 0, 0.6, 1);-webkit-print-color-adjust:exact;color-adjust:exact;border-color:var(--mat-checkbox-unselected-icon-color, var(--mat-sys-on-surface-variant));top:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2);left:calc((var(--mat-checkbox-state-layer-size, 40px) - 18px)/2)}.mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-icon-color, var(--mat-sys-primary))}.mdc-checkbox--disabled .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}@media(forced-colors: active){.mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox:hover>.mdc-checkbox__native-control:not(:checked)~.mdc-checkbox__background,.mdc-checkbox:hover>.mdc-checkbox__native-control:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-hover-icon-color, var(--mat-sys-on-surface));background-color:rgba(0,0,0,0)}.mdc-checkbox:hover>.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox:hover>.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-hover-icon-color, var(--mat-sys-primary))}.mdc-checkbox__native-control:focus:focus:not(:checked)~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mat-checkbox-unselected-focus-icon-color, var(--mat-sys-on-surface))}.mdc-checkbox__native-control:focus:focus:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:indeterminate~.mdc-checkbox__background{border-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary));background-color:var(--mat-checkbox-selected-focus-icon-color, var(--mat-sys-primary))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover>.mdc-checkbox__native-control~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:var(--mat-checkbox-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover>.mdc-checkbox__native-control~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:GrayText}}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{background-color:var(--mat-checkbox-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-color:rgba(0,0,0,0)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms cubic-bezier(0.4, 0, 0.6, 1);color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mdc-checkbox__checkmark{color:CanvasText}}.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:GrayText}}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);border-color:var(--mat-checkbox-selected-checkmark-color, var(--mat-sys-on-primary))}@media(forced-colors: active){.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:var(--mat-checkbox-disabled-selected-checkmark-color, var(--mat-sys-surface))}@media(forced-colors: active){.mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:GrayText}}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__checkmark{transition:opacity 180ms cubic-bezier(0, 0, 0.2, 1),transform 180ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background>.mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mat-mdc-checkbox{display:inline-block;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mat-mdc-checkbox-touch-target,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__native-control,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__ripple,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mat-mdc-checkbox-ripple::before,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__checkmark>.mdc-checkbox__checkmark-path,.mat-mdc-checkbox._mat-animation-noopable>.mat-internal-form-field>.mdc-checkbox>.mdc-checkbox__background>.mdc-checkbox__mixedmark{transition:none !important;animation:none !important}.mat-mdc-checkbox label{cursor:pointer}.mat-mdc-checkbox .mat-internal-form-field{color:var(--mat-checkbox-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-checkbox-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-checkbox-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-checkbox-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-checkbox-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-checkbox-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive{pointer-events:auto}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive input{cursor:default}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{cursor:default;color:var(--mat-checkbox-disabled-label-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:GrayText}}.mat-mdc-checkbox label:empty{display:none}.mat-mdc-checkbox .mdc-checkbox__ripple{opacity:0}.mat-mdc-checkbox .mat-mdc-checkbox-ripple,.mdc-checkbox__ripple{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-checkbox .mat-mdc-checkbox-ripple:not(:empty),.mdc-checkbox__ripple:not(:empty){transform:translateZ(0)}.mat-mdc-checkbox-ripple .mat-ripple-element{opacity:.1}.mat-mdc-checkbox-touch-target{position:absolute;top:50%;left:50%;height:var(--mat-checkbox-touch-target-size, 48px);width:var(--mat-checkbox-touch-target-size, 48px);transform:translate(-50%, -50%);display:var(--mat-checkbox-touch-target-display, block)}.mat-mdc-checkbox .mat-mdc-checkbox-ripple::before{border-radius:50%}.mdc-checkbox__native-control:focus-visible~.mat-focus-indicator::before{content:""}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),Ot=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[Ht,wn]})}return t})();var Ml=(()=>{class t{httpController;controller_id="";constructor(e){this.httpController=e}login(e,n,o){let r=new q5().set("username",n).set("password",o),a={headers:new Ph().set("Content-Type","application/x-www-form-urlencoded")};return this.httpController.post(e,"/access/users/login",r,a)}getLoggedUser(e){return this.httpController.get(e,"/access/users/me").toPromise()}async getLoggedUserRefToken(e,n){return await this.httpController.post(e,"/access/users/authenticate",{username:n.username,password:n.password}).toPromise()}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var oS=(()=>{class t{httpController;constructor(e){this.httpController=e}get(e){return this.httpController.get(e,"/version")}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var rp=(()=>{class t{notificationService;currentController=null;constructor(e){this.notificationService=e}establishConnection(e){this.currentController&&this.currentController.id===e.id||(this.currentController&&this.disconnect(),this.notificationService.connectToComputeNotifications(e),this.currentController=e)}disconnect(){this.notificationService.disconnect(),this.currentController=null}getCurrentController(){return this.currentController}isConnectedTo(e){return this.currentController&&this.currentController.id===e.id}static \u0275fac=function(n){return new(n||t)(ge(wc))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Jse=["usernameInput"];function ele(t,i){t&1&&F(0,"mat-icon",3)}function tle(t,i){t&1&&F(0,"mat-icon",4)}function nle(t,i){t&1&&F(0,"mat-icon",9)}function ile(t,i){t&1&&F(0,"mat-icon",10)}function ole(t,i){if(t&1&&(s(0,"div",12)(1,"mat-icon",32),d(2,"storage"),l(),s(3,"div",33)(4,"span",34),d(5),l(),s(6,"span",35),d(7),l()()()),t&2){let e=b();u(5),U(e.controllerName),u(2),U(e.controllerAddress)}}function rle(t,i){t&1&&(s(0,"mat-error"),d(1," Username is required "),l())}function ale(t,i){t&1&&(s(0,"mat-error"),d(1," Password is required "),l())}function sle(t,i){t&1&&(s(0,"div",19)(1,"mat-icon",36),d(2,"warning"),l(),s(3,"span"),d(4,"Caps Lock is on"),l()())}function lle(t,i){t&1&&F(0,"mat-progress-spinner",24)}function cle(t,i){t&1&&(s(0,"span"),d(1,"Login"),l())}function dle(t,i){t&1&&F(0,"mat-icon",29)}function mle(t,i){t&1&&F(0,"mat-icon",30)}var rS=(()=>{class t{loginService=f(Ml);controllerService=f(We);controllerDatabase=f(np);route=f(Ye);router=f(ut);toasterService=f(fe);versionService=f(oS);themeService=f(yi);connectionManager=f(rp);controller;returnUrl=me("");usernameInput;version=me("");isLoading=me(!1);hidePassword=me(!0);isCapsLockOn=me(!1);isRememberMeChecked=me(!1);currentYear=new Date().getFullYear();isLightThemeEnabled=ri(()=>this.themeService.getActualTheme()==="light");loginForm=new VC({username:new Nh("",{nonNullable:!0,validators:[be.required]}),password:new Nh("",{nonNullable:!0,validators:[be.required]})});constructor(){}ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.returnUrl.set(this.route.snapshot.queryParams.returnUrl||"/"),this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,n.authToken&&this.router.navigate(["/controller",this.controller.id,"projects"]),this.versionService.get(this.controller).subscribe(o=>{this.version.set(o.version)})}),this.loadRememberMeData(),setTimeout(()=>{this.usernameInput&&this.usernameInput.nativeElement.focus()},100)}loadRememberMeData(){let e=localStorage.getItem("isRememberMe");if(e)try{let n=JSON.parse(e);n.isRememberMe&&(this.loginForm.controls.username.setValue(n.username),this.isRememberMeChecked.set(!0))}catch(n){console.error("Failed to parse remember me data",n)}}togglePasswordVisibility(){this.hidePassword.update(e=>!e)}onCapsLock(e){this.isCapsLockOn.set(e.getModifierState&&e.getModifierState("CapsLock"))}login(){if(this.loginForm.invalid){this.toasterService.error("Please enter username and password");return}let e=this.loginForm.value.username,n=this.loginForm.value.password;this.isLoading.set(!0),this.loginService.login(this.controller,e,n).subscribe(async o=>{let r=this.controller;r.authToken=o.access_token,r.username=e,r.password=n,r.tokenExpired=!1,await this.controllerService.update(r),this.connectionManager.establishConnection(r),this.handleRememberMe(e),this.isLoading.set(!1),this.returnUrl().length<=1?this.router.navigate(["/controller",this.controller.id,"projects"]):this.router.navigateByUrl(this.returnUrl())},o=>{this.isLoading.set(!1),this.toasterService.error("Authentication was unsuccessful. The default username and password is admin")})}handleRememberMe(e){if(this.isRememberMeChecked()){let n={username:e,isRememberMe:!0};localStorage.setItem("isRememberMe",JSON.stringify(n))}else localStorage.removeItem("isRememberMe")}onRememberMeChange(e){this.isRememberMeChecked.set(e)}get controllerName(){return this.controller?.name||""}get controllerAddress(){return this.controller?`${this.controller.host}:${this.controller.port}`:""}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-login"]],viewQuery:function(n,o){if(n&1&&gn(Jse,5),n&2){let r;gt(r=_t())&&(o.usernameInput=r.first)}},decls:46,vars:19,consts:[["usernameInput",""],[1,"login-wrapper"],["routerLink","/controllers",1,"login-back-btn"],["svgIcon","gns3",1,"login-back-btn__icon"],["svgIcon","gns3black",1,"login-back-btn__icon"],[1,"login-card"],[1,"login-card__mat-card"],[1,"login-card__header"],[1,"login-card__logo"],["svgIcon","gns3",1,"login-card__icon"],["svgIcon","gns3black",1,"login-card__icon"],[1,"login-card__title"],[1,"login-card__controller-info"],[1,"login-card__form",3,"ngSubmit","formGroup"],[1,"login-card__form-field"],["matPrefix","",1,"login-card__field-icon"],["matInput","","formControlName","username","placeholder","Username"],["matInput","","formControlName","password","placeholder","Password",3,"keyup","type"],["matSuffix","",1,"login-card__visibility-icon",3,"click"],[1,"login-card__caps-lock-warning"],[1,"login-card__checkbox"],["color","primary",3,"change","checked"],[1,"login-card__actions"],["type","submit","mat-raised-button","","color","primary",1,"login-card__submit-btn",3,"disabled"],["diameter","20","mode","indeterminate",1,"login-card__spinner"],[1,"login-card__social"],["href","https://github.com/GNS3","target","_blank","rel","noopener noreferrer","matTooltip","GitHub",1,"login-card__social-link"],["svgIcon","github",1,"login-card__social-icon"],["href","https://www.gns3.com/","target","_blank","rel","noopener noreferrer","matTooltip","Website",1,"login-card__social-link"],["svgIcon","gns3",1,"login-card__social-icon"],["svgIcon","gns3black",1,"login-card__social-icon"],[1,"login-card__footer"],[1,"login-card__controller-icon"],[1,"login-card__controller-details"],[1,"login-card__controller-name"],[1,"login-card__controller-address"],[1,"login-card__warning-icon"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"a",2),A(2,ele,1,0,"mat-icon",3),A(3,tle,1,0,"mat-icon",4),l(),s(4,"div",5)(5,"mat-card",6)(6,"div",7)(7,"div",8),A(8,nle,1,0,"mat-icon",9),A(9,ile,1,0,"mat-icon",10),s(10,"div",11)(11,"h1"),d(12,"GNS3"),l(),s(13,"h6"),d(14),l()()()(),A(15,ole,8,2,"div",12),s(16,"form",13),v("ngSubmit",function(){return o.login()}),s(17,"mat-form-field",14)(18,"mat-icon",15),d(19,"person"),l(),F(20,"input",16,0),A(22,rle,2,0,"mat-error"),l(),s(23,"mat-form-field",14)(24,"mat-icon",15),d(25,"lock"),l(),s(26,"input",17),v("keyup",function(a){return o.onCapsLock(a)}),l(),s(27,"mat-icon",18),v("click",function(){return o.togglePasswordVisibility()}),d(28),l(),A(29,ale,2,0,"mat-error"),l(),A(30,sle,5,0,"div",19),s(31,"div",20)(32,"mat-checkbox",21),v("change",function(a){return o.onRememberMeChange(a.checked)}),d(33," Remember me "),l()(),s(34,"div",22)(35,"button",23),A(36,lle,1,0,"mat-progress-spinner",24)(37,cle,2,0,"span"),l()()()(),s(38,"div",25)(39,"a",26),F(40,"mat-icon",27),l(),s(41,"a",28),A(42,dle,1,0,"mat-icon",29),A(43,mle,1,0,"mat-icon",30),l()(),s(44,"div",31),d(45),l()()()),n&2&&(u(2),O(o.isLightThemeEnabled()?-1:2),u(),O(o.isLightThemeEnabled()?3:-1),u(5),O(o.isLightThemeEnabled()?-1:8),u(),O(o.isLightThemeEnabled()?9:-1),u(5),X("v",o.version()),u(),O(o.controllerName?15:-1),u(),x("formGroup",o.loginForm),u(6),O(o.loginForm.controls.username.hasError("required")?22:-1),u(4),x("type",o.hidePassword()?"password":"text"),u(2),X(" ",o.hidePassword()?"visibility_off":"visibility"," "),u(),O(o.loginForm.controls.password.hasError("required")?29:-1),u(),O(o.isCapsLockOn()?30:-1),u(2),x("checked",o.isRememberMeChecked()),u(3),x("disabled",o.isLoading()),u(),O(o.isLoading()?36:37),u(6),O(o.isLightThemeEnabled()?-1:42),u(),O(o.isLightThemeEnabled()?43:-1),u(2),Hi("GNS3 Web-UI \xA92018-",o.currentYear," v",o.version()))},dependencies:[Z,ct,Ue,vt,mt,He,pt,bt,at,cn,Dt,Tn,Me,ke,Ni,al,Fo,we,Te,Ot,Ht,$,le,te,se,Si,Xo],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100vh;background:var(--mat-sys-background)}.login-back-btn[_ngcontent-%COMP%]{position:fixed;top:24px;left:24px;display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:12px;background:var(--mat-sys-surface);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-shadow) 15%,transparent);transition:all .2s cubic-bezier(.4,0,.2,1);text-decoration:none;z-index:100;animation:_ngcontent-%COMP%_fadeIn .3s ease-out}.login-back-btn[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container);box-shadow:0 6px 16px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent);transform:translateY(-2px)}.login-back-btn[_ngcontent-%COMP%]:active{transform:translateY(0);box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.login-back-btn__icon[_ngcontent-%COMP%]{font-size:28px;width:28px;height:28px;color:var(--mat-sys-on-surface);display:flex;align-items:center;justify-content:center;line-height:1;overflow:visible}.login-wrapper[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:20px;background:linear-gradient(135deg,var(--mat-sys-primary-container) 0%,var(--mat-sys-background) 100%)}.login-card[_ngcontent-%COMP%]{width:100%;max-width:480px;animation:_ngcontent-%COMP%_slideInUp .4s cubic-bezier(.4,0,.2,1)}.login-card__mat-card[_ngcontent-%COMP%]{padding:32px;border-radius:16px;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);background:var(--mat-sys-surface);transition:box-shadow .3s cubic-bezier(.4,0,.2,1)}.login-card__mat-card[_ngcontent-%COMP%]:hover{box-shadow:0 12px 40px color-mix(in srgb,var(--mat-sys-shadow) 25%,transparent),0 4px 12px color-mix(in srgb,var(--mat-sys-shadow) 12%,transparent)}.login-card__header[_ngcontent-%COMP%]{margin-bottom:24px}.login-card__logo[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:16px;padding:16px 0}.login-card__icon[_ngcontent-%COMP%]{height:72px;width:72px;font-size:72px;display:flex;align-items:center;justify-content:center;line-height:1;overflow:visible}.login-card__title[_ngcontent-%COMP%]{text-align:left}.login-card__title[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:36px;font-weight:500;margin:0;color:var(--mat-sys-on-surface);line-height:1.2}.login-card__title[_ngcontent-%COMP%] h6[_ngcontent-%COMP%]{font-size:14px;font-weight:400;margin:4px 0 0;color:var(--mat-sys-on-surface-variant);opacity:.8}.login-card__controller-info[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:12px 16px;margin-bottom:24px;border-radius:12px;background:color-mix(in srgb,var(--mat-sys-primary) 8%,transparent);border:1px solid color-mix(in srgb,var(--mat-sys-primary) 20%,transparent);animation:_ngcontent-%COMP%_fadeIn .3s ease-in}.login-card__controller-icon[_ngcontent-%COMP%]{font-size:24px;width:24px;height:24px;color:var(--mat-sys-primary)}.login-card__controller-details[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;flex:1}.login-card__controller-name[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:var(--mat-sys-on-surface)}.login-card__controller-address[_ngcontent-%COMP%]{font-size:12px;color:var(--mat-sys-on-surface-variant);opacity:.8}.login-card__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.login-card__form-field[_ngcontent-%COMP%]{width:100%}.login-card__form-field[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.login-card__field-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;margin-right:8px}.login-card__visibility-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;cursor:pointer;color:var(--mat-sys-on-surface-variant);transition:color .2s ease,transform .2s ease}.login-card__visibility-icon[_ngcontent-%COMP%]:hover{color:var(--mat-sys-primary);transform:scale(1.1)}.login-card__visibility-icon[_ngcontent-%COMP%]:active{transform:scale(.95)}.login-card__caps-lock-warning[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:8px 12px;margin-top:-8px;border-radius:8px;background:color-mix(in srgb,var(--mat-sys-error) 10%,transparent);color:var(--mat-sys-error);font-size:13px;animation:_ngcontent-%COMP%_shake .4s cubic-bezier(.4,0,.2,1)}.login-card__warning-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.login-card__checkbox[_ngcontent-%COMP%]{display:flex;align-items:center;margin-top:8px}.login-card__actions[_ngcontent-%COMP%]{margin-top:16px}.login-card__submit-btn[_ngcontent-%COMP%]{width:100%;height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative}.login-card__submit-btn[_ngcontent-%COMP%]:hover:not([disabled]){transform:translateY(-2px);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.login-card__submit-btn[_ngcontent-%COMP%]:active:not([disabled]){transform:translateY(0)}.login-card__submit-btn[disabled][_ngcontent-%COMP%]{opacity:.6}.login-card__spinner[_ngcontent-%COMP%]{display:inline-flex;margin:0 auto;--mat-progress-spinner-indeterminate-circle-size: 20px}@keyframes _ngcontent-%COMP%_slideInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0}to{opacity:1}}@keyframes _ngcontent-%COMP%_shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@media(max-width:600px){.login-back-btn[_ngcontent-%COMP%]{top:16px;left:16px;width:40px;height:40px}.login-back-btn__icon[_ngcontent-%COMP%]{font-size:24px;width:24px;height:24px}.login-wrapper[_ngcontent-%COMP%]{padding:16px}.login-card__mat-card[_ngcontent-%COMP%]{padding:24px}.login-card__icon[_ngcontent-%COMP%]{height:56px;width:56px;font-size:56px}.login-card__title[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:28px}.login-card__submit-btn[_ngcontent-%COMP%]{height:44px;font-size:15px}}.login-card__social[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:24px}.login-card__social-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;color:var(--mat-sys-on-surface-variant);background-color:var(--mat-sys-surface-container);transition:all .2s cubic-bezier(.4,0,.2,1);text-decoration:none}.login-card__social-link[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);color:var(--mat-sys-primary);transform:translateY(-2px);box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.login-card__social-link[_ngcontent-%COMP%]:active{transform:translateY(0)}.login-card__social-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;line-height:1;overflow:visible}.login-card__footer[_ngcontent-%COMP%]{text-align:center;margin-top:24px;font-size:12px;color:var(--mat-sys-on-surface-variant);opacity:.7}"],changeDetection:0})}return t})();var uV=(()=>{class t{constructor(){}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-page-not-found"]],decls:7,vars:0,consts:[[1,"content"],[1,"default-header"],["mat-button","","routerLink","/controllers"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1),F(2,"br"),s(3,"h1"),d(4,"404 Page not found"),l(),s(5,"button",2),d(6,"Navigate to homepage"),l()()())},dependencies:[cn],styles:["div[_ngcontent-%COMP%]{text-align:center}"],changeDetection:0})}return t})();var aS=(()=>{class t{route=f(Ye);controllerId=me("");ngOnInit(){this.controllerId.set(this.route.snapshot.paramMap.get("controller_id")??"")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-built-in-preferences"]],decls:21,vars:4,consts:[[1,"builtin-prefs"],[1,"builtin-prefs__header"],["mat-icon-button","",1,"builtin-prefs__back-btn",3,"routerLink"],[1,"builtin-prefs__title"],[1,"builtin-prefs__content"],[1,"builtin-prefs__nav-list"],["mat-list-item","",1,"builtin-prefs__nav-item",3,"routerLink"],[1,"builtin-prefs__nav-icon"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1)(2,"button",2)(3,"mat-icon"),d(4,"arrow_back"),l()(),s(5,"h1",3),d(6,"Built-in templates"),l()(),s(7,"main",4)(8,"nav",5)(9,"a",6)(10,"mat-icon",7),d(11,"device_hub"),l(),d(12," Ethernet hub templates "),l(),s(13,"a",6)(14,"mat-icon",7),d(15,"settings_ethernet"),l(),d(16," Ethernet switch templates "),l(),s(17,"a",6)(18,"mat-icon",7),d(19,"cloud"),l(),d(20," Cloud node templates "),l()()()()),n&2&&(u(2),x("routerLink","/controller/"+o.controllerId()+"/preferences"),u(7),x("routerLink","/controller/"+o.controllerId()+"/preferences/builtin/ethernet-hubs"),u(4),x("routerLink","/controller/"+o.controllerId()+"/preferences/builtin/ethernet-switches"),u(4),x("routerLink","/controller/"+o.controllerId()+"/preferences/builtin/cloud-nodes"))},dependencies:[Z,at,cn,$,ze,te,se,Ri,Mc],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.builtin-prefs__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.builtin-prefs__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.builtin-prefs__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.builtin-prefs__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.builtin-prefs__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.builtin-prefs__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.builtin-prefs__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.builtin-prefs__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.builtin-prefs__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.builtin-prefs__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.builtin-prefs__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.builtin-prefs__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.builtin-prefs__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.builtin-prefs__title[_ngcontent-%COMP%]{font-size:24px}.builtin-prefs__content[_ngcontent-%COMP%]{padding:0 16px 16px}.builtin-prefs__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}}"],changeDetection:0})}return t})();var ple=["input"],ule=["formField"],hle=["*"],sS=class{source;value;constructor(i,e){this.source=i,this.value=e}},fle={provide:Zl,useExisting:ql(()=>Io),multi:!0},hV=new kt("MatRadioGroup"),gle=new kt("mat-radio-default-options",{providedIn:"root",factory:()=>({color:"accent",disabledInteractive:!1})}),Io=(()=>{class t{_changeDetector=f(K);_value=null;_name=f(Oi).getId("mat-radio-group-");_selected=null;_isInitialized=!1;_labelPosition="after";_disabled=!1;_required=!1;_buttonChanges;_controlValueAccessorChangeFn=()=>{};onTouched=()=>{};change=new ve;_radios;color;get name(){return this._name}set name(e){this._name=e,this._updateRadioButtonNames()}get labelPosition(){return this._labelPosition}set labelPosition(e){this._labelPosition=e==="before"?"before":"after",this._markRadiosForCheck()}get value(){return this._value}set value(e){this._value!==e&&(this._value=e,this._updateSelectedRadioFromValue(),this._checkSelectedRadioButton())}_checkSelectedRadioButton(){this._selected&&!this._selected.checked&&(this._selected.checked=!0)}get selected(){return this._selected}set selected(e){this._selected=e,this.value=e?e.value:null,this._checkSelectedRadioButton()}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._markRadiosForCheck()}get required(){return this._required}set required(e){this._required=e,this._markRadiosForCheck()}get disabledInteractive(){return this._disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e,this._markRadiosForCheck()}_disabledInteractive=!1;constructor(){}ngAfterContentInit(){this._isInitialized=!0,this._buttonChanges=this._radios.changes.subscribe(()=>{this.selected&&!this._radios.find(e=>e===this.selected)&&(this._selected=null)})}ngOnDestroy(){this._buttonChanges?.unsubscribe()}_touch(){this.onTouched&&this.onTouched()}_updateRadioButtonNames(){this._radios&&this._radios.forEach(e=>{e.name=this.name,e._markForCheck()})}_updateSelectedRadioFromValue(){let e=this._selected!==null&&this._selected.value===this._value;this._radios&&!e&&(this._selected=null,this._radios.forEach(n=>{n.checked=this.value===n.value,n.checked&&(this._selected=n)}))}_emitChangeEvent(){this._isInitialized&&this.change.emit(new sS(this._selected,this._value))}_markRadiosForCheck(){this._radios&&this._radios.forEach(e=>e._markForCheck())}writeValue(e){this.value=e,this._changeDetector.markForCheck()}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetector.markForCheck()}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["mat-radio-group"]],contentQueries:function(n,o,r){if(n&1&&$i(r,ko,5),n&2){let a;gt(a=_t())&&(o._radios=a)}},hostAttrs:["role","radiogroup",1,"mat-mdc-radio-group"],inputs:{color:"color",name:"name",labelPosition:"labelPosition",value:"value",selected:"selected",disabled:[2,"disabled","disabled",dt],required:[2,"required","required",dt],disabledInteractive:[2,"disabledInteractive","disabledInteractive",dt]},outputs:{change:"change"},exportAs:["matRadioGroup"],features:[hn([fle,{provide:hV,useExisting:t}])]})}return t})(),ko=(()=>{class t{_elementRef=f(Lt);_changeDetector=f(K);_focusMonitor=f(xr);_radioDispatcher=f(Lh);_defaultOptions=f(gle,{optional:!0});_ngZone=f(bi);_renderer=f(ii);_uniqueId=f(Oi).getId("mat-radio-");_cleanupClick;id=this._uniqueId;name;ariaLabel;ariaLabelledby;ariaDescribedby;disableRipple=!1;tabIndex=0;get checked(){return this._checked}set checked(e){this._checked!==e&&(this._checked=e,e&&this.radioGroup&&this.radioGroup.value!==this.value?this.radioGroup.selected=this:!e&&this.radioGroup&&this.radioGroup.value===this.value&&(this.radioGroup.selected=null),e&&this._radioDispatcher.notify(this.id,this.name),this._changeDetector.markForCheck())}get value(){return this._value}set value(e){this._value!==e&&(this._value=e,this.radioGroup!==null&&(this.checked||(this.checked=this.radioGroup.value===e),this.checked&&(this.radioGroup.selected=this)))}get labelPosition(){return this._labelPosition||this.radioGroup&&this.radioGroup.labelPosition||"after"}set labelPosition(e){this._labelPosition=e}_labelPosition;get disabled(){return this._disabled||this.radioGroup!==null&&this.radioGroup.disabled}set disabled(e){this._setDisabled(e)}get required(){return this._required||this.radioGroup&&this.radioGroup.required}set required(e){e!==this._required&&this._changeDetector.markForCheck(),this._required=e}get color(){return this._color||this.radioGroup&&this.radioGroup.color||this._defaultOptions&&this._defaultOptions.color||"accent"}set color(e){this._color=e}_color;get disabledInteractive(){return this._disabledInteractive||this.radioGroup!==null&&this.radioGroup.disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e}_disabledInteractive;change=new ve;radioGroup;get inputId(){return`${this.id||this._uniqueId}-input`}_checked=!1;_disabled=!1;_required=!1;_value=null;_removeUniqueSelectionListener=()=>{};_previousTabIndex;_inputElement;_rippleTrigger;_noopAnimations=Qi();_injector=f(Di);constructor(){f(Go).load(yr);let e=f(hV,{optional:!0}),n=f(new ka("tabindex"),{optional:!0});this.radioGroup=e,this._disabledInteractive=this._defaultOptions?.disabledInteractive??!1,n&&(this.tabIndex=io(n,0))}focus(e,n){n?this._focusMonitor.focusVia(this._inputElement,n,e):this._inputElement.nativeElement.focus(e)}_markForCheck(){this._changeDetector.markForCheck()}ngOnInit(){this.radioGroup&&(this.checked=this.radioGroup.value===this._value,this.checked&&(this.radioGroup.selected=this),this.name=this.radioGroup.name),this._removeUniqueSelectionListener=this._radioDispatcher.listen((e,n)=>{e!==this.id&&n===this.name&&(this.checked=!1)})}ngDoCheck(){this._updateTabIndex()}ngAfterViewInit(){this._updateTabIndex(),this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{!e&&this.radioGroup&&this.radioGroup._touch()}),this._ngZone.runOutsideAngular(()=>{this._cleanupClick=this._renderer.listen(this._inputElement.nativeElement,"click",this._onInputClick)})}ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring(this._elementRef),this._removeUniqueSelectionListener()}_emitChangeEvent(){this.change.emit(new sS(this,this._value))}_isRippleDisabled(){return this.disableRipple||this.disabled}_onInputInteraction(e){if(e.stopPropagation(),!this.checked&&!this.disabled){let n=this.radioGroup&&this.value!==this.radioGroup.value;this.checked=!0,this._emitChangeEvent(),this.radioGroup&&(this.radioGroup._controlValueAccessorChangeFn(this.value),n&&this.radioGroup._emitChangeEvent())}}_onTouchTargetClick(e){this._onInputInteraction(e),(!this.disabled||this.disabledInteractive)&&this._inputElement?.nativeElement.focus()}_setDisabled(e){this._disabled!==e&&(this._disabled=e,this._changeDetector.markForCheck())}_onInputClick=e=>{this.disabled&&this.disabledInteractive&&e.preventDefault()};_updateTabIndex(){let e=this.radioGroup,n;if(!e||!e.selected||this.disabled?n=this.tabIndex:n=e.selected===this?this.tabIndex:-1,n!==this._previousTabIndex){let o=this._inputElement?.nativeElement;o&&(o.setAttribute("tabindex",n+""),this._previousTabIndex=n,ar(()=>{queueMicrotask(()=>{e&&e.selected&&e.selected!==this&&document.activeElement===o&&(e.selected?._inputElement.nativeElement.focus(),document.activeElement===o&&this._inputElement.nativeElement.blur())})},{injector:this._injector}))}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-radio-button"]],viewQuery:function(n,o){if(n&1&&gn(ple,5)(ule,7,Lt),n&2){let r;gt(r=_t())&&(o._inputElement=r.first),gt(r=_t())&&(o._rippleTrigger=r.first)}},hostAttrs:[1,"mat-mdc-radio-button"],hostVars:19,hostBindings:function(n,o){n&1&&v("focus",function(){return o._inputElement.nativeElement.focus()}),n&2&&(It("id",o.id)("tabindex",null)("aria-label",null)("aria-labelledby",null)("aria-describedby",null),je("mat-primary",o.color==="primary")("mat-accent",o.color==="accent")("mat-warn",o.color==="warn")("mat-mdc-radio-checked",o.checked)("mat-mdc-radio-disabled",o.disabled)("mat-mdc-radio-disabled-interactive",o.disabledInteractive)("_mat-animation-noopable",o._noopAnimations))},inputs:{id:"id",name:"name",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],disableRipple:[2,"disableRipple","disableRipple",dt],tabIndex:[2,"tabIndex","tabIndex",e=>e==null?0:io(e)],checked:[2,"checked","checked",dt],value:"value",labelPosition:"labelPosition",disabled:[2,"disabled","disabled",dt],required:[2,"required","required",dt],color:"color",disabledInteractive:[2,"disabledInteractive","disabledInteractive",dt]},outputs:{change:"change"},exportAs:["matRadioButton"],ngContentSelectors:hle,decls:13,vars:17,consts:[["formField",""],["input",""],["mat-internal-form-field","",3,"labelPosition"],[1,"mdc-radio"],["aria-hidden","true",1,"mat-mdc-radio-touch-target",3,"click"],["type","radio","aria-invalid","false",1,"mdc-radio__native-control",3,"change","id","checked","disabled","required"],["aria-hidden","true",1,"mdc-radio__background"],[1,"mdc-radio__outer-circle"],[1,"mdc-radio__inner-circle"],["mat-ripple","","aria-hidden","true",1,"mat-radio-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mat-ripple-element","mat-radio-persistent-ripple"],[1,"mdc-label",3,"for"]],template:function(n,o){n&1&&(En(),s(0,"div",2,0)(2,"div",3)(3,"div",4),v("click",function(a){return o._onTouchTargetClick(a)}),l(),s(4,"input",5,1),v("change",function(a){return o._onInputInteraction(a)}),l(),s(6,"div",6),F(7,"div",7)(8,"div",8),l(),s(9,"div",9),F(10,"div",10),l()(),s(11,"label",11),Yt(12),l()()),n&2&&(x("labelPosition",o.labelPosition),u(2),je("mdc-radio--disabled",o.disabled),u(2),x("id",o.inputId)("checked",o.checked)("disabled",o.disabled&&!o.disabledInteractive)("required",o.required),It("name",o.name)("value",o.value)("aria-label",o.ariaLabel)("aria-labelledby",o.ariaLabelledby)("aria-describedby",o.ariaDescribedby)("aria-disabled",o.disabled&&o.disabledInteractive?"true":null),u(5),x("matRippleTrigger",o._rippleTrigger.nativeElement)("matRippleDisabled",o._isRippleDisabled())("matRippleCentered",!0),u(2),x("for",o.inputId))},dependencies:[as,Vh],styles:[`.mat-mdc-radio-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-radio-button .mdc-radio{display:inline-block;position:relative;flex:0 0 auto;box-sizing:content-box;width:20px;height:20px;cursor:pointer;will-change:opacity,transform,border-color,color;padding:calc((var(--mat-radio-state-layer-size, 40px) - 20px)/2)}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:not([disabled]):not(:focus)~.mdc-radio__background::before{opacity:.04;transform:scale(1)}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:not([disabled])~.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-hover-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-selected-hover-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-selected-hover-icon-color, var(--mat-sys-primary, currentColor))}.mat-mdc-radio-button .mdc-radio:active>.mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-pressed-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mdc-radio:active>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-selected-pressed-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio:active>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-selected-pressed-icon-color, var(--mat-sys-primary, currentColor))}.mat-mdc-radio-button .mdc-radio__background{display:inline-block;position:relative;box-sizing:border-box;width:20px;height:20px}.mat-mdc-radio-button .mdc-radio__background::before{position:absolute;transform:scale(0, 0);border-radius:50%;opacity:0;pointer-events:none;content:"";transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);width:var(--mat-radio-state-layer-size, 40px);height:var(--mat-radio-state-layer-size, 40px);top:calc(-1*(var(--mat-radio-state-layer-size, 40px) - 20px)/2);left:calc(-1*(var(--mat-radio-state-layer-size, 40px) - 20px)/2)}.mat-mdc-radio-button .mdc-radio__outer-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;border-width:2px;border-style:solid;border-radius:50%;transition:border-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-radio-button .mdc-radio__inner-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;transform:scale(0);border-radius:50%;transition:transform 90ms cubic-bezier(0.4, 0, 0.6, 1),background-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}@media(forced-colors: active){.mat-mdc-radio-button .mdc-radio__inner-circle{background-color:CanvasText !important}}.mat-mdc-radio-button .mdc-radio__native-control{position:absolute;margin:0;padding:0;opacity:0;top:0;right:0;left:0;cursor:inherit;z-index:1;width:var(--mat-radio-state-layer-size, 40px);height:var(--mat-radio-state-layer-size, 40px)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background{transition:opacity 90ms cubic-bezier(0, 0, 0.2, 1),transform 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__outer-circle{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__inner-circle{transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:focus+.mdc-radio__background::before{transform:scale(1);opacity:.12;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 1),transform 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-unselected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-unselected-icon-opacity, 0.38)}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background{cursor:default}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface, currentColor));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-selected-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-selected-icon-color, var(--mat-sys-primary, currentColor))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:focus:checked+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-selected-focus-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:focus:checked+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-selected-focus-icon-color, var(--mat-sys-primary, currentColor))}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle{transform:scale(0.5);transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled{pointer-events:auto}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-unselected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-unselected-icon-opacity, 0.38)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled:hover .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:checked:focus+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled:hover .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:checked:focus+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface, currentColor));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__background::before,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__outer-circle,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__inner-circle{transition:none !important}.mat-mdc-radio-button label{cursor:pointer}.mat-mdc-radio-button label:empty{display:none}.mat-mdc-radio-button .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button.mat-mdc-radio-checked .mat-ripple-element,.mat-mdc-radio-button.mat-mdc-radio-checked .mdc-radio__background::before{background-color:var(--mat-radio-checked-ripple-color, var(--mat-sys-primary))}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mat-ripple-element,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mat-internal-form-field{color:var(--mat-radio-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-radio-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-radio-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-radio-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-radio-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-radio-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-radio-button .mdc-radio--disabled+label{color:var(--mat-radio-disabled-label-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-radio-button .mat-radio-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:50%}.mat-mdc-radio-button .mat-radio-ripple>.mat-ripple-element{opacity:.14}.mat-mdc-radio-button .mat-radio-ripple::before{border-radius:50%}.mat-mdc-radio-button .mdc-radio>.mdc-radio__native-control:focus:enabled:not(:checked)~.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-focus-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button.cdk-focused .mat-focus-indicator::before{content:""}.mat-mdc-radio-disabled{cursor:default;pointer-events:none}.mat-mdc-radio-disabled.mat-mdc-radio-disabled-interactive{pointer-events:auto}.mat-mdc-radio-touch-target{position:absolute;top:50%;left:50%;height:var(--mat-radio-touch-target-size, 48px);width:var(--mat-radio-touch-target-size, 48px);transform:translate(-50%, -50%);display:var(--mat-radio-touch-target-display, block)}[dir=rtl] .mat-mdc-radio-touch-target{left:auto;right:50%;transform:translate(50%, -50%)}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),go=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[ss,ko,wn]})}return t})();var Ca=[];for(let t=0;t<256;++t)Ca.push((t+256).toString(16).slice(1));function fV(t,i=0){return(Ca[t[i+0]]+Ca[t[i+1]]+Ca[t[i+2]]+Ca[t[i+3]]+"-"+Ca[t[i+4]]+Ca[t[i+5]]+"-"+Ca[t[i+6]]+Ca[t[i+7]]+"-"+Ca[t[i+8]]+Ca[t[i+9]]+"-"+Ca[t[i+10]]+Ca[t[i+11]]+Ca[t[i+12]]+Ca[t[i+13]]+Ca[t[i+14]]+Ca[t[i+15]]).toLowerCase()}var Q3,_le=new Uint8Array(16);function Y3(){if(!Q3){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Q3=crypto.getRandomValues.bind(crypto)}return Q3(_le)}var vle=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),K3={randomUUID:vle};function ble(t,i,e){if(K3.randomUUID&&!i&&!t)return K3.randomUUID();t=t||{};let n=t.random??t.rng?.()??Y3();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,i){if(e=e||0,e<0||e+16>i.length)throw new RangeError(`UUID byte range ${e}:${e+15} is out of buffer bounds`);for(let o=0;o<16;++o)i[e+o]=n[o];return i}return fV(n)}var Ti=ble;var Rr=(()=>{class t{httpController;constructor(e){this.httpController=e}getTemplates(e){return this.httpController.get(e,"/templates")}getTemplate(e,n){return this.httpController.get(e,`/templates/${n}`)}addTemplate(e,n){return this.httpController.post(e,"/templates",n)}saveTemplate(e,n){return this.httpController.put(e,`/templates/${n.template_id}`,n)}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Fr=(()=>{class t{getQemuTemplate(){return xt({adapter_type:"e1000",adapters:4,bios_image:"",boot_priority:"c",builtin:!1,category:"guest",cdrom_image:"",compute_id:"local",console_auto_start:!1,console_type:"telnet",aux_type:"none",cpu_throttling:0,cpus:1,custom_adapters:[],default_name_format:"{name}-{0}",first_port_name:"",hda_disk_image:"",hda_disk_interface:"ide",hdb_disk_image:"",hdb_disk_interface:"ide",hdc_disk_image:"",hdc_disk_interface:"ide",hdd_disk_image:"",hdd_disk_interface:"ide",initrd:"",kernel_command_line:"",kernel_image:"",linked_clone:!0,mac_address:"",name:"",on_close:"power_off",options:"-nographic",platform:"",port_name_format:"Ethernet{0}",port_segment_size:0,process_priority:"normal",qemu_path:"",ram:256,symbol:"qemu_guest",template_id:"",template_type:"qemu",usage:"",replicate_network_connection_state:!0,tpm:!1,uefi:!1,tags:[]})}getVpcsTemplate(){return xt({base_script_file:"vpcs_base_config.txt",builtin:!1,category:"guest",compute_id:"local",console_auto_start:!1,console_type:"telnet",default_name_format:"PC{0}",name:"",symbol:"vpcs_guest",template_id:"",template_type:"vpcs",tags:[]})}getVirtualBoxTemplate(){return xt({adapter_type:"Intel PRO/1000 MT Desktop (82540EM)",adapters:1,builtin:!1,category:"guest",compute_id:"local",console_auto_start:!1,console_type:"none",custom_adapters:[],default_name_format:"{name}-{0}",first_port_name:"",headless:!1,linked_clone:!1,name:"",on_close:"power_off",port_name_format:"Ethernet{0}",port_segment_size:0,ram:0,symbol:"vbox_guest",template_id:"",template_type:"virtualbox",usage:"",use_any_adapter:!1,vmname:"",tags:[]})}getCloudNodeTemplate(){return xt({builtin:!1,category:"guest",compute_id:"local",default_name_format:"Cloud{0}",name:"",ports_mapping:[],remote_console_type:"none",symbol:"cloud",template_id:"",template_type:"cloud",tags:[]})}getEthernetHubTemplate(){return xt({builtin:!1,category:"switch",compute_id:"local",default_name_format:"Hub{0}",name:"",ports_mapping:[],symbol:"hub",template_id:"",template_type:"ethernet_hub",tags:[]})}getEthernetSwitchTemplate(){return xt({builtin:!1,category:"switch",compute_id:"local",console_type:"telnet",default_name_format:"Switch{0}",name:"",ports_mapping:[],symbol:"ethernet_switch",template_id:"",template_type:"ethernet_switch",tags:[]})}getIosTemplate(){return xt({auto_delete_disks:!0,builtin:!1,category:"router",compute_id:"local",console_auto_start:!1,console_type:"telnet",aux_type:"none",default_name_format:"R{0}",disk0:0,disk1:0,exec_area:64,idlemax:500,idlepc:"",idlesleep:30,image:"",mac_addr:"",mmap:!0,name:"",nvram:128,platform:"",private_config:"",ram:128,sparsemem:!0,startup_config:"ios_base_startup-config.txt",symbol:"router",system_id:"FTX0945W0MY",template_id:"",template_type:"dynamips",usage:"",tags:[]})}getVmwareTemplate(){return xt({adapter_type:"e1000",adapters:1,builtin:!1,category:"guest",compute_id:"local",console_auto_start:!1,console_type:"none",custom_adapters:[],default_name_format:"{name}-{0}",first_port_name:"",headless:!1,linked_clone:!1,name:"",on_close:"power_off",port_name_format:"Ethernet{0}",port_segment_size:0,symbol:"vmware_guest",template_id:"",template_type:"vmware",usage:"",use_any_adapter:!1,vmx_path:"",tags:[]})}getDockerTemplate(){return xt({adapters:1,builtin:!1,category:"guest",compute_id:"vm",console_auto_start:!1,console_http_path:"/",console_http_port:80,console_resolution:"1024x768",console_type:"telnet",aux_type:"none",mac_address:"",custom_adapters:[],default_name_format:"{name}-{0}",environment:"",extra_hosts:"",image:"",name:"",start_command:"",symbol:"docker_guest",template_id:"",template_type:"docker",usage:"",tags:[]})}getIouTemplate(){return xt({builtin:!1,category:"switch",compute_id:"vm",console_auto_start:!1,console_type:"telnet",default_name_format:"IOU{0}",ethernet_adapters:1,l1_keepalives:!1,name:"",nvram:128,path:"",private_config:"",ram:256,serial_adapters:0,startup_config:"iou_l2_base_startup-config.txt",symbol:"multilayer_switch",template_id:"",template_type:"iou",usage:"",use_default_iou_values:!0,tags:[]})}list(){return xt([])}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function Cle(t,i){if(t&1){let e=j();s(0,"button",14),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}var lS=(()=>{class t{route=f(Ye);controllerService=f(We);builtInTemplatesService=f(Rr);router=f(ut);toasterService=f(fe);templateMocksService=f(Fr);formBuilder=f(jt);computeService=f(Lo);cd=f(K);controller;templateName="";formGroup;isLocalComputerChosen=!0;constructor(){this.formGroup=this.formBuilder.group({templateName:new re("",be.required)})}ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck()})}setControllerType(e){e==="local"&&(this.isLocalComputerChosen=!0)}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","builtin","cloud-nodes"])}addTemplate(){if(this.formGroup.invalid)this.toasterService.error("Fill all required fields");else{let e;this.templateMocksService.getCloudNodeTemplate().subscribe(n=>{e=n}),e.template_id=Ti(),e.name=this.formGroup.get("templateName").value,e.compute_id="local",this.builtInTemplatesService.addTemplate(this.controller,e).subscribe({next:n=>{this.goBack()},error:n=>{let o=n.error?.message||n.message||"Failed to Cloud node add template";this.toasterService.error(o),this.cd.markForCheck()}})}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-cloud-nodes-add-template"]],decls:20,vars:3,consts:[[1,"cloud-nodes-add"],[1,"cloud-nodes-add__header"],["mat-icon-button","",1,"cloud-nodes-add__back-btn"],[1,"cloud-nodes-add__title"],[1,"cloud-nodes-add__content"],[1,"cloud-nodes-add__form-card"],[1,"cloud-nodes-add__radio-group"],["value","1",1,"cloud-nodes-add__radio",3,"click","checked"],[1,"cloud-nodes-add__form",3,"formGroup"],["appearance","fill",1,"cloud-nodes-add__field"],["formControlName","templateName","matInput","","type","text","placeholder","Template name"],[1,"cloud-nodes-add__actions"],["mat-button","",1,"cloud-nodes-add__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"cloud-nodes-add__submit-btn",3,"click"],["mat-icon-button","",1,"cloud-nodes-add__back-btn",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1),A(2,Cle,3,0,"button",2),s(3,"h1",3),d(4,"New cloud node template"),l()(),s(5,"main",4)(6,"section",5)(7,"mat-radio-group",6)(8,"mat-radio-button",7),v("click",function(){return o.setControllerType("local")}),d(9," Run the cloud node locally "),l()(),s(10,"form",8)(11,"mat-form-field",9)(12,"mat-label"),d(13,"Template name"),l(),F(14,"input",10),l()()(),s(15,"div",11)(16,"button",12),v("click",function(){return o.goBack()}),d(17,"Cancel"),l(),s(18,"button",13),v("click",function(){return o.addTemplate()}),d(19," Add template "),l()()()()),n&2&&(u(2),O(o.controller?2:-1),u(6),x("checked",!0),u(2),x("formGroup",o.formGroup))},dependencies:[Z,nt,Ue,vt,mt,He,ct,pt,bt,at,te,se,$,le,ze,Dt,go,Io,ko,Me,ke,lt,we,Te],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.cloud-nodes-add__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.cloud-nodes-add__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.cloud-nodes-add__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.cloud-nodes-add__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.cloud-nodes-add__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.cloud-nodes-add__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);padding:24px}.cloud-nodes-add__radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.cloud-nodes-add__radio[_ngcontent-%COMP%]{font-size:16px}.cloud-nodes-add__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.cloud-nodes-add__field[_ngcontent-%COMP%]{width:100%}.cloud-nodes-add__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.cloud-nodes-add__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.cloud-nodes-add__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.cloud-nodes-add__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.cloud-nodes-add__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.cloud-nodes-add__title[_ngcontent-%COMP%]{font-size:24px}.cloud-nodes-add__content[_ngcontent-%COMP%]{padding:0 16px 16px}.cloud-nodes-add__form-card[_ngcontent-%COMP%]{padding:16px}.cloud-nodes-add__actions[_ngcontent-%COMP%]{flex-direction:column}.cloud-nodes-add__cancel-btn[_ngcontent-%COMP%], .cloud-nodes-add__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var yle=["*",[["mat-chip-avatar"],["","matChipAvatar",""]],[["mat-chip-trailing-icon"],["","matChipRemove",""],["","matChipTrailingIcon",""]]],Sle=["*","mat-chip-avatar, [matChipAvatar]","mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]"];function wle(t,i){t&1&&(s(0,"span",3),Yt(1,1),l())}function Mle(t,i){t&1&&(s(0,"span",6),Yt(1,2),l())}var kle=`.mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}@media(forced-colors: active){.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{forced-color-adjust:none}}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mat-chip-outline-width, 1px);border-radius:var(--mat-chip-container-shape-radius, 8px);box-sizing:border-box;content:"";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mat-chip-outline-color, var(--mat-sys-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mat-chip-focus-outline-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mat-chip-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mat-chip-flat-selected-outline-width, 0)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-leading-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-leading-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-leading-action.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--secondary{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--secondary{color:var(--mat-chip-with-trailing-icon-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--secondary{color:var(--mat-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-sys-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mat-chip-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-chip-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-chip-label-text-size, var(--mat-sys-label-large-size));font-weight:var(--mat-chip-label-text-weight, var(--mat-sys-label-large-weight));letter-spacing:var(--mat-chip-label-text-tracking, var(--mat-sys-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mat-chip-label-text-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mat-chip-selected-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mat-chip-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mat-chip-with-avatar-avatar-size, 24px);height:var(--mat-chip-with-avatar-avatar-size, 24px);font-size:var(--mat-chip-with-avatar-avatar-size, 24px)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-leading-action .mdc-evolution-chip__graphic{padding-left:0}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mat-chip-with-icon-selected-icon-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mat-chip-with-icon-disabled-icon-color, var(--mat-sys-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}@media(forced-colors: active){.mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity, 1)*var(--mat-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity, 1)*var(--mat-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38))}.mat-mdc-standard-chip{border-radius:var(--mat-chip-container-shape-radius, 8px);height:var(--mat-chip-container-height, 32px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mat-chip-elevated-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mat-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mat-chip-elevated-selected-container-color, var(--mat-sys-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mat-chip-flat-disabled-selected-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}@media(forced-colors: active){.mat-mdc-standard-chip{outline:solid 1px}}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mat-chip-with-avatar-avatar-shape-radius, 24px);width:var(--mat-chip-with-icon-icon-size, 18px);height:var(--mat-chip-with-icon-icon-size, 18px);font-size:var(--mat-chip-with-icon-icon-size, 18px)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mat-chip-with-icon-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mat-chip-with-icon-disabled-icon-color, var(--mat-sys-on-surface))}.mat-mdc-chip-highlighted{--mat-chip-with-icon-icon-color: var(--mat-chip-with-icon-selected-icon-color, var(--mat-sys-on-secondary-container));--mat-chip-elevated-container-color: var(--mat-chip-elevated-selected-container-color, var(--mat-sys-secondary-container));--mat-chip-label-text-color: var(--mat-chip-selected-label-text-color, var(--mat-sys-on-secondary-container));--mat-chip-outline-width: var(--mat-chip-flat-selected-outline-width, 0)}.mat-mdc-chip-focus-overlay{background:var(--mat-chip-focus-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mat-chip-selected-focus-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mat-chip-hover-state-layer-color, var(--mat-sys-on-surface-variant));opacity:var(--mat-chip-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mat-chip-selected-hover-state-layer-color, var(--mat-sys-on-secondary-container));opacity:var(--mat-chip-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mat-chip-focus-state-layer-color, var(--mat-sys-on-surface-variant));opacity:var(--mat-chip-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mat-chip-selected-focus-state-layer-color, var(--mat-sys-on-secondary-container));opacity:var(--mat-chip-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mat-chip-with-avatar-disabled-avatar-opacity, 0.38)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mat-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mat-chip-with-icon-disabled-icon-opacity, 0.38)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity, 1)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-sys-on-surface))}.mat-mdc-chip-edit,.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity, 1)}.mat-mdc-chip-edit:focus,.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity, 1)}.mat-mdc-chip-edit::after,.mat-mdc-chip-remove::after{background-color:var(--mat-chip-trailing-action-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-chip-edit:hover::after,.mat-mdc-chip-remove:hover::after{opacity:calc(var(--mat-chip-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)) + var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)))}.mat-mdc-chip-edit:focus::after,.mat-mdc-chip-remove:focus::after{opacity:calc(var(--mat-chip-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)) + var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background-color:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-edit:focus::after,.mat-mdc-chip.cdk-focused .mat-mdc-chip-remove:focus::after{opacity:calc(var(--mat-chip-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)) + var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-edit:hover::after,.mat-mdc-chip.cdk-focused .mat-mdc-chip-remove:hover::after{opacity:calc(var(--mat-chip-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)) + var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mat-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-edit::before,.mat-mdc-chip-remove::before{margin:calc(var(--mat-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-edit::after,.mat-mdc-chip-remove::after{content:"";display:block;opacity:0;position:absolute;top:-3px;bottom:-3px;left:5px;right:5px;border-radius:50%;box-sizing:border-box;padding:12px;margin:-12px;background-clip:content-box}.mat-mdc-chip-edit .mat-icon,.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}@media(forced-colors: active){.mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}}.mat-mdc-chip-action:focus-visible .mat-focus-indicator::before{content:""}.mdc-evolution-chip__icon,.mat-mdc-chip-edit .mat-icon,.mat-mdc-chip-remove .mat-icon{min-height:fit-content}img.mdc-evolution-chip__icon{min-height:0}
|
||
`,Tle=[[["","matChipEdit",""]],[["mat-chip-avatar"],["","matChipAvatar",""]],[["","matChipEditInput",""]],"*",[["mat-chip-trailing-icon"],["","matChipRemove",""],["","matChipTrailingIcon",""]]],Ele=["[matChipEdit]","mat-chip-avatar, [matChipAvatar]","[matChipEditInput]","*","mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]"];function Dle(t,i){t&1&&F(0,"span",0)}function Ple(t,i){t&1&&(s(0,"span",1),Yt(1),l())}function Ile(t,i){t&1&&(s(0,"span",3),Yt(1,1),l())}function Ale(t,i){t&1&&Yt(0,2)}function Ole(t,i){t&1&&F(0,"span",7)}function Nle(t,i){if(t&1&&A(0,Ale,1,0)(1,Ole,1,0,"span",7),t&2){let e=b();O(e.contentEditInput?0:1)}}function Rle(t,i){t&1&&Yt(0,3)}function Fle(t,i){t&1&&(s(0,"span",6),Yt(1,4),l())}var CV=["*"],Lle=`.mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input::placeholder{opacity:1}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input::-moz-placeholder{opacity:1}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input::-webkit-input-placeholder{opacity:1}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input:-ms-input-placeholder{opacity:1}.mat-mdc-chip-set+input.mat-mdc-chip-input{margin-left:0;margin-right:0}
|
||
`,xV=new kt("mat-chips-default-options",{providedIn:"root",factory:()=>({separatorKeyCodes:[13]})}),gV=new kt("MatChipAvatar"),_V=new kt("MatChipTrailingIcon"),vV=new kt("MatChipEdit"),J3=new kt("MatChipRemove"),nA=new kt("MatChip"),yV=(()=>{class t{_elementRef=f(Lt);_parentChip=f(nA);_isPrimary=!0;_isLeading=!1;get disabled(){return this._disabled||this._parentChip?.disabled||!1}set disabled(e){this._disabled=e}_disabled=!1;tabIndex=-1;_allowFocusWhenDisabled=!1;_getDisabledAttribute(){return this.disabled&&!this._allowFocusWhenDisabled?"":null}constructor(){f(Go).load(yr),this._elementRef.nativeElement.nodeName==="BUTTON"&&this._elementRef.nativeElement.setAttribute("type","button")}focus(){this._elementRef.nativeElement.focus()}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","matChipContent",""]],hostAttrs:[1,"mat-mdc-chip-action","mdc-evolution-chip__action","mdc-evolution-chip__action--presentational"],hostVars:8,hostBindings:function(n,o){n&2&&(It("disabled",o._getDisabledAttribute())("aria-disabled",o.disabled),je("mdc-evolution-chip__action--primary",o._isPrimary)("mdc-evolution-chip__action--secondary",!o._isPrimary)("mdc-evolution-chip__action--trailing",!o._isPrimary&&!o._isLeading))},inputs:{disabled:[2,"disabled","disabled",dt],tabIndex:[2,"tabIndex","tabIndex",e=>e==null?-1:io(e)],_allowFocusWhenDisabled:"_allowFocusWhenDisabled"}})}return t})(),iA=(()=>{class t extends yV{_getTabindex(){return this.disabled&&!this._allowFocusWhenDisabled?null:this.tabIndex.toString()}_handleClick(e){!this.disabled&&this._isPrimary&&(e.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}_handleKeydown(e){(e.keyCode===13||e.keyCode===32)&&!this.disabled&&this._isPrimary&&!this._parentChip._isEditing&&(e.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["","matChipAction",""]],hostVars:3,hostBindings:function(n,o){n&1&&v("click",function(a){return o._handleClick(a)})("keydown",function(a){return o._handleKeydown(a)}),n&2&&(It("tabindex",o._getTabindex()),je("mdc-evolution-chip__action--presentational",!1))},features:[xn]})}return t})();var di=(()=>{class t extends iA{_isPrimary=!1;_handleClick(e){this.disabled||(e.stopPropagation(),e.preventDefault(),this._parentChip.remove())}_handleKeydown(e){(e.keyCode===13||e.keyCode===32)&&!this.disabled&&(e.stopPropagation(),e.preventDefault(),this._parentChip.remove())}static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["","matChipRemove",""]],hostAttrs:["role","button",1,"mat-mdc-chip-remove","mat-mdc-chip-trailing-icon","mat-focus-indicator","mdc-evolution-chip__icon","mdc-evolution-chip__icon--trailing"],hostVars:1,hostBindings:function(n,o){n&2&&It("aria-hidden",null)},features:[hn([{provide:J3,useExisting:t}]),xn]})}return t})(),zn=(()=>{class t{_changeDetectorRef=f(K);_elementRef=f(Lt);_tagName=f(F5);_ngZone=f(bi);_focusMonitor=f(xr);_globalRippleOptions=f(CR,{optional:!0});_document=f(Pi);_onFocus=new Le;_onBlur=new Le;_isBasicChip=!1;role=null;_hasFocusInternal=!1;_pendingFocus=!1;_actionChanges;_animationsDisabled=Qi();_allLeadingIcons;_allTrailingIcons;_allEditIcons;_allRemoveIcons;_hasFocus(){return this._hasFocusInternal}id=f(Oi).getId("mat-mdc-chip-");ariaLabel=null;ariaDescription=null;_chipListDisabled=!1;_hadFocusOnRemove=!1;_textElement;get value(){return this._value!==void 0?this._value:this._textElement.textContent.trim()}set value(e){this._value=e}_value;color;removable=!0;highlighted=!1;disableRipple=!1;get disabled(){return this._disabled||this._chipListDisabled}set disabled(e){this._disabled=e}_disabled=!1;removed=new ve;destroyed=new ve;basicChipAttrName="mat-basic-chip";leadingIcon;editIcon;trailingIcon;removeIcon;primaryAction;_rippleLoader=f(WC);_injector=f(Di);constructor(){let e=f(Go);e.load(yr),e.load(jC),this._monitorFocus(),this._rippleLoader?.configureRipple(this._elementRef.nativeElement,{className:"mat-mdc-chip-ripple",disabled:this._isRippleDisabled()})}ngOnInit(){this._isBasicChip=this._elementRef.nativeElement.hasAttribute(this.basicChipAttrName)||this._tagName.toLowerCase()===this.basicChipAttrName}ngAfterViewInit(){this._textElement=this._elementRef.nativeElement.querySelector(".mat-mdc-chip-action-label"),this._pendingFocus&&(this._pendingFocus=!1,this.focus())}ngAfterContentInit(){this._actionChanges=Dn(this._allLeadingIcons.changes,this._allTrailingIcons.changes,this._allEditIcons.changes,this._allRemoveIcons.changes).subscribe(()=>this._changeDetectorRef.markForCheck())}ngDoCheck(){this._rippleLoader.setDisabled(this._elementRef.nativeElement,this._isRippleDisabled())}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement),this._actionChanges?.unsubscribe(),this.destroyed.emit({chip:this}),this.destroyed.complete()}remove(){this.removable&&(this._hadFocusOnRemove=this._hasFocus(),this.removed.emit({chip:this}))}_isRippleDisabled(){return this.disabled||this.disableRipple||this._animationsDisabled||this._isBasicChip||!this._hasInteractiveActions()||!!this._globalRippleOptions?.disabled}_hasTrailingIcon(){return!!(this.trailingIcon||this.removeIcon)}_handleKeydown(e){(e.keyCode===8&&!e.repeat||e.keyCode===46)&&(e.preventDefault(),this.remove())}focus(){this.disabled||(this.primaryAction?this.primaryAction.focus():this._pendingFocus=!0)}_getSourceAction(e){return this._getActions().find(n=>{let o=n._elementRef.nativeElement;return o===e||o.contains(e)})}_getActions(){let e=[];return this.editIcon&&e.push(this.editIcon),this.primaryAction&&e.push(this.primaryAction),this.removeIcon&&e.push(this.removeIcon),e}_handlePrimaryActionInteraction(){}_hasInteractiveActions(){return this._getActions().length>0}_edit(e){}_monitorFocus(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{let n=e!==null;n!==this._hasFocusInternal&&(this._hasFocusInternal=n,n?this._onFocus.next({chip:this}):(this._changeDetectorRef.markForCheck(),setTimeout(()=>this._ngZone.run(()=>this._onBlur.next({chip:this})))))})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-basic-chip"],["","mat-basic-chip",""],["mat-chip"],["","mat-chip",""]],contentQueries:function(n,o,r){if(n&1&&$i(r,gV,5)(r,vV,5)(r,_V,5)(r,J3,5)(r,gV,5)(r,_V,5)(r,vV,5)(r,J3,5),n&2){let a;gt(a=_t())&&(o.leadingIcon=a.first),gt(a=_t())&&(o.editIcon=a.first),gt(a=_t())&&(o.trailingIcon=a.first),gt(a=_t())&&(o.removeIcon=a.first),gt(a=_t())&&(o._allLeadingIcons=a),gt(a=_t())&&(o._allTrailingIcons=a),gt(a=_t())&&(o._allEditIcons=a),gt(a=_t())&&(o._allRemoveIcons=a)}},viewQuery:function(n,o){if(n&1&&gn(iA,5),n&2){let r;gt(r=_t())&&(o.primaryAction=r.first)}},hostAttrs:[1,"mat-mdc-chip"],hostVars:31,hostBindings:function(n,o){n&1&&v("keydown",function(a){return o._handleKeydown(a)}),n&2&&(No("id",o.id),It("role",o.role)("aria-label",o.ariaLabel),Mo("mat-"+(o.color||"primary")),je("mdc-evolution-chip",!o._isBasicChip)("mdc-evolution-chip--disabled",o.disabled)("mdc-evolution-chip--with-trailing-action",o._hasTrailingIcon())("mdc-evolution-chip--with-primary-graphic",o.leadingIcon)("mdc-evolution-chip--with-primary-icon",o.leadingIcon)("mdc-evolution-chip--with-avatar",o.leadingIcon)("mat-mdc-chip-with-avatar",o.leadingIcon)("mat-mdc-chip-highlighted",o.highlighted)("mat-mdc-chip-disabled",o.disabled)("mat-mdc-basic-chip",o._isBasicChip)("mat-mdc-standard-chip",!o._isBasicChip)("mat-mdc-chip-with-trailing-icon",o._hasTrailingIcon())("_mat-animation-noopable",o._animationsDisabled))},inputs:{role:"role",id:"id",ariaLabel:[0,"aria-label","ariaLabel"],ariaDescription:[0,"aria-description","ariaDescription"],value:"value",color:"color",removable:[2,"removable","removable",dt],highlighted:[2,"highlighted","highlighted",dt],disableRipple:[2,"disableRipple","disableRipple",dt],disabled:[2,"disabled","disabled",dt]},outputs:{removed:"removed",destroyed:"destroyed"},exportAs:["matChip"],features:[hn([{provide:nA,useExisting:t}])],ngContentSelectors:Sle,decls:8,vars:2,consts:[[1,"mat-mdc-chip-focus-overlay"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--primary"],["matChipContent",""],[1,"mdc-evolution-chip__graphic","mat-mdc-chip-graphic"],[1,"mdc-evolution-chip__text-label","mat-mdc-chip-action-label"],[1,"mat-mdc-chip-primary-focus-indicator","mat-focus-indicator"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--trailing"]],template:function(n,o){n&1&&(En(yle),F(0,"span",0),s(1,"span",1)(2,"span",2),A(3,wle,2,0,"span",3),s(4,"span",4),Yt(5),F(6,"span",5),l()()(),A(7,Mle,2,0,"span",6)),n&2&&(u(3),O(o.leadingIcon?3:-1),u(4),O(o._hasTrailingIcon()?7:-1))},dependencies:[yV],styles:[`.mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}@media(forced-colors: active){.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{forced-color-adjust:none}}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mat-chip-outline-width, 1px);border-radius:var(--mat-chip-container-shape-radius, 8px);box-sizing:border-box;content:"";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mat-chip-outline-color, var(--mat-sys-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mat-chip-focus-outline-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mat-chip-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mat-chip-flat-selected-outline-width, 0)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-leading-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-leading-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-leading-action.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--secondary{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--secondary{color:var(--mat-chip-with-trailing-icon-trailing-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--secondary{color:var(--mat-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-sys-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--secondary{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mat-chip-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-chip-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-chip-label-text-size, var(--mat-sys-label-large-size));font-weight:var(--mat-chip-label-text-weight, var(--mat-sys-label-large-weight));letter-spacing:var(--mat-chip-label-text-tracking, var(--mat-sys-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mat-chip-label-text-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mat-chip-selected-label-text-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mat-chip-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mat-chip-with-avatar-avatar-size, 24px);height:var(--mat-chip-with-avatar-avatar-size, 24px);font-size:var(--mat-chip-with-avatar-avatar-size, 24px)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-leading-action .mdc-evolution-chip__graphic{padding-left:0}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mat-chip-with-icon-selected-icon-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mat-chip-with-icon-disabled-icon-color, var(--mat-sys-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}@media(forced-colors: active){.mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity, 1)*var(--mat-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity, 1)*var(--mat-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38))}.mat-mdc-standard-chip{border-radius:var(--mat-chip-container-shape-radius, 8px);height:var(--mat-chip-container-height, 32px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mat-chip-elevated-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mat-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mat-chip-elevated-selected-container-color, var(--mat-sys-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mat-chip-flat-disabled-selected-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}@media(forced-colors: active){.mat-mdc-standard-chip{outline:solid 1px}}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mat-chip-with-avatar-avatar-shape-radius, 24px);width:var(--mat-chip-with-icon-icon-size, 18px);height:var(--mat-chip-with-icon-icon-size, 18px);font-size:var(--mat-chip-with-icon-icon-size, 18px)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mat-chip-with-icon-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mat-chip-with-icon-disabled-icon-color, var(--mat-sys-on-surface))}.mat-mdc-chip-highlighted{--mat-chip-with-icon-icon-color: var(--mat-chip-with-icon-selected-icon-color, var(--mat-sys-on-secondary-container));--mat-chip-elevated-container-color: var(--mat-chip-elevated-selected-container-color, var(--mat-sys-secondary-container));--mat-chip-label-text-color: var(--mat-chip-selected-label-text-color, var(--mat-sys-on-secondary-container));--mat-chip-outline-width: var(--mat-chip-flat-selected-outline-width, 0)}.mat-mdc-chip-focus-overlay{background:var(--mat-chip-focus-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mat-chip-selected-focus-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mat-chip-hover-state-layer-color, var(--mat-sys-on-surface-variant));opacity:var(--mat-chip-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mat-chip-selected-hover-state-layer-color, var(--mat-sys-on-secondary-container));opacity:var(--mat-chip-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mat-chip-focus-state-layer-color, var(--mat-sys-on-surface-variant));opacity:var(--mat-chip-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mat-chip-selected-focus-state-layer-color, var(--mat-sys-on-secondary-container));opacity:var(--mat-chip-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mat-chip-with-avatar-disabled-avatar-opacity, 0.38)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mat-chip-with-trailing-icon-disabled-trailing-icon-opacity, 0.38)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mat-chip-with-icon-disabled-icon-opacity, 0.38)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity, 1)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-sys-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-sys-on-surface))}.mat-mdc-chip-edit,.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity, 1)}.mat-mdc-chip-edit:focus,.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity, 1)}.mat-mdc-chip-edit::after,.mat-mdc-chip-remove::after{background-color:var(--mat-chip-trailing-action-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-chip-edit:hover::after,.mat-mdc-chip-remove:hover::after{opacity:calc(var(--mat-chip-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)) + var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)))}.mat-mdc-chip-edit:focus::after,.mat-mdc-chip-remove:focus::after{opacity:calc(var(--mat-chip-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)) + var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background-color:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-sys-on-secondary-container))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-edit:focus::after,.mat-mdc-chip.cdk-focused .mat-mdc-chip-remove:focus::after{opacity:calc(var(--mat-chip-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)) + var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-edit:hover::after,.mat-mdc-chip.cdk-focused .mat-mdc-chip-remove:hover::after{opacity:calc(var(--mat-chip-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)) + var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mat-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-focus-indicator::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-edit::before,.mat-mdc-chip-remove::before{margin:calc(var(--mat-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-edit::after,.mat-mdc-chip-remove::after{content:"";display:block;opacity:0;position:absolute;top:-3px;bottom:-3px;left:5px;right:5px;border-radius:50%;box-sizing:border-box;padding:12px;margin:-12px;background-clip:content-box}.mat-mdc-chip-edit .mat-icon,.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}@media(forced-colors: active){.mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}}.mat-mdc-chip-action:focus-visible .mat-focus-indicator::before{content:""}.mdc-evolution-chip__icon,.mat-mdc-chip-edit .mat-icon,.mat-mdc-chip-remove .mat-icon{min-height:fit-content}img.mdc-evolution-chip__icon{min-height:0}
|
||
`],encapsulation:2,changeDetection:0})}return t})();var Z3=(()=>{class t{_elementRef=f(Lt);_document=f(Pi);constructor(){}initialize(e){this.getNativeElement().focus(),this.setValue(e)}getNativeElement(){return this._elementRef.nativeElement}setValue(e){this.getNativeElement().textContent=e,this._moveCursorToEndOfInput()}getValue(){return this.getNativeElement().textContent||""}_moveCursorToEndOfInput(){let e=this._document.createRange();e.selectNodeContents(this.getNativeElement()),e.collapse(!1);let n=window.getSelection();n.removeAllRanges(),n.addRange(e)}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["span","matChipEditInput",""]],hostAttrs:["role","textbox","tabindex","-1","contenteditable","true",1,"mat-chip-edit-input"]})}return t})(),Ble=(()=>{class t extends zn{basicChipAttrName="mat-basic-chip-row";_renderer=f(ii);_cleanupMousedown;_editStartPending=!1;editable=!1;edited=new ve;defaultEditInput;contentEditInput;_alreadyFocused=!1;_isEditing=!1;constructor(){super(),this.role="row",this._onBlur.pipe(rt(this.destroyed)).subscribe(()=>{this._isEditing&&!this._editStartPending&&this._onEditFinish(),this._alreadyFocused=!1})}ngAfterViewInit(){super.ngAfterViewInit(),this._cleanupMousedown=this._ngZone.runOutsideAngular(()=>this._renderer.listen(this._elementRef.nativeElement,"mousedown",()=>{this._alreadyFocused=this._hasFocus()}))}ngOnDestroy(){super.ngOnDestroy(),this._cleanupMousedown?.()}_hasLeadingActionIcon(){return!this._isEditing&&!!this.editIcon}_hasTrailingIcon(){return!this._isEditing&&super._hasTrailingIcon()}_handleFocus(){!this._isEditing&&!this.disabled&&this.focus()}_handleKeydown(e){e.keyCode===13&&!this.disabled?this._isEditing?(e.preventDefault(),this._onEditFinish()):this.editable&&this._startEditing(e):this._isEditing?e.stopPropagation():super._handleKeydown(e)}_handleClick(e){!this.disabled&&this.editable&&!this._isEditing&&this._alreadyFocused&&(e.preventDefault(),e.stopPropagation(),this._startEditing(e))}_handleDoubleclick(e){!this.disabled&&this.editable&&this._startEditing(e)}_edit(){this._changeDetectorRef.markForCheck(),this._startEditing()}_startEditing(e){if(!this.primaryAction||this.removeIcon&&e&&this._getSourceAction(e.target)===this.removeIcon)return;let n=this.value;this._isEditing=this._editStartPending=!0,ar(()=>{this._getEditInput().initialize(n),setTimeout(()=>this._ngZone.run(()=>this._editStartPending=!1))},{injector:this._injector})}_onEditFinish(){this._isEditing=this._editStartPending=!1,this.edited.emit({chip:this,value:this._getEditInput().getValue()}),(this._document.activeElement===this._getEditInput().getNativeElement()||this._document.activeElement===this._document.body)&&this.primaryAction.focus()}_isRippleDisabled(){return super._isRippleDisabled()||this._isEditing}_getEditInput(){return this.contentEditInput||this.defaultEditInput}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-chip-row"],["","mat-chip-row",""],["mat-basic-chip-row"],["","mat-basic-chip-row",""]],contentQueries:function(n,o,r){if(n&1&&$i(r,Z3,5),n&2){let a;gt(a=_t())&&(o.contentEditInput=a.first)}},viewQuery:function(n,o){if(n&1&&gn(Z3,5),n&2){let r;gt(r=_t())&&(o.defaultEditInput=r.first)}},hostAttrs:[1,"mat-mdc-chip","mat-mdc-chip-row","mdc-evolution-chip"],hostVars:29,hostBindings:function(n,o){n&1&&v("focus",function(){return o._handleFocus()})("click",function(a){return o._hasInteractiveActions()?o._handleClick(a):null})("dblclick",function(a){return o._handleDoubleclick(a)}),n&2&&(No("id",o.id),It("tabindex",o.disabled?null:-1)("aria-label",null)("aria-description",null)("role",o.role),je("mat-mdc-chip-with-avatar",o.leadingIcon)("mat-mdc-chip-disabled",o.disabled)("mat-mdc-chip-editing",o._isEditing)("mat-mdc-chip-editable",o.editable)("mdc-evolution-chip--disabled",o.disabled)("mdc-evolution-chip--with-leading-action",o._hasLeadingActionIcon())("mdc-evolution-chip--with-trailing-action",o._hasTrailingIcon())("mdc-evolution-chip--with-primary-graphic",o.leadingIcon)("mdc-evolution-chip--with-primary-icon",o.leadingIcon)("mdc-evolution-chip--with-avatar",o.leadingIcon)("mat-mdc-chip-highlighted",o.highlighted)("mat-mdc-chip-with-trailing-icon",o._hasTrailingIcon()))},inputs:{editable:"editable"},outputs:{edited:"edited"},features:[hn([{provide:zn,useExisting:t},{provide:nA,useExisting:t}]),xn],ngContentSelectors:Ele,decls:9,vars:8,consts:[[1,"mat-mdc-chip-focus-overlay"],["role","gridcell",1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--leading"],["role","gridcell","matChipAction","",1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--primary",3,"disabled"],[1,"mdc-evolution-chip__graphic","mat-mdc-chip-graphic"],[1,"mdc-evolution-chip__text-label","mat-mdc-chip-action-label"],["aria-hidden","true",1,"mat-mdc-chip-primary-focus-indicator","mat-focus-indicator"],["role","gridcell",1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--trailing"],["matChipEditInput",""]],template:function(n,o){n&1&&(En(Tle),A(0,Dle,1,0,"span",0),A(1,Ple,2,0,"span",1),s(2,"span",2),A(3,Ile,2,0,"span",3),s(4,"span",4),A(5,Nle,2,1)(6,Rle,1,0),F(7,"span",5),l()(),A(8,Fle,2,0,"span",6)),n&2&&(O(o._isEditing?-1:0),u(),O(o._hasLeadingActionIcon()?1:-1),u(),x("disabled",o.disabled),It("aria-description",o.ariaDescription)("aria-label",o.ariaLabel),u(),O(o.leadingIcon?3:-1),u(2),O(o._isEditing?5:6),u(3),O(o._hasTrailingIcon()?8:-1))},dependencies:[iA,Z3],styles:[kle],encapsulation:2,changeDetection:0})}return t})(),Vle=(()=>{class t{_elementRef=f(Lt);_changeDetectorRef=f(K);_dir=f(Hr,{optional:!0});_lastDestroyedFocusedChipIndex=null;_keyManager;_destroyed=new Le;_defaultRole="presentation";get chipFocusChanges(){return this._getChipStream(e=>e._onFocus)}get chipDestroyedChanges(){return this._getChipStream(e=>e.destroyed)}get chipRemovedChanges(){return this._getChipStream(e=>e.removed)}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._syncChipsState()}_disabled=!1;get empty(){return!this._chips||this._chips.length===0}get role(){return this._explicitRole?this._explicitRole:this.empty?null:this._defaultRole}tabIndex=0;set role(e){this._explicitRole=e}_explicitRole=null;get focused(){return this._hasFocusedChip()}_chips;_chipActions=new Ql;constructor(){}ngAfterViewInit(){this._setUpFocusManagement(),this._trackChipSetChanges(),this._trackDestroyedFocusedChip()}ngOnDestroy(){this._keyManager?.destroy(),this._chipActions.destroy(),this._destroyed.next(),this._destroyed.complete()}_hasFocusedChip(){return this._chips&&this._chips.some(e=>e._hasFocus())}_syncChipsState(){this._chips?.forEach(e=>{e._chipListDisabled=this._disabled,e._changeDetectorRef.markForCheck()})}focus(){}_handleKeydown(e){this._originatesFromChip(e)&&this._keyManager.onKeydown(e)}_isValidIndex(e){return e>=0&&e<this._chips.length}_allowFocusEscape(){let e=this._elementRef.nativeElement.tabIndex;e!==-1&&(this._elementRef.nativeElement.tabIndex=-1,setTimeout(()=>this._elementRef.nativeElement.tabIndex=e))}_getChipStream(e){return this._chips.changes.pipe(li(null),fn(()=>Dn(...this._chips.map(e))))}_originatesFromChip(e){let n=e.target;for(;n&&n!==this._elementRef.nativeElement;){if(n.classList.contains("mat-mdc-chip"))return!0;n=n.parentElement}return!1}_setUpFocusManagement(){this._chips.changes.pipe(li(this._chips)).subscribe(e=>{let n=[];e.forEach(o=>o._getActions().forEach(r=>n.push(r))),this._chipActions.reset(n),this._chipActions.notifyOnChanges()}),this._keyManager=new Cm(this._chipActions).withVerticalOrientation().withHorizontalOrientation(this._dir?this._dir.value:"ltr").withHomeAndEnd().skipPredicate(e=>this._skipPredicate(e)),this.chipFocusChanges.pipe(rt(this._destroyed)).subscribe(({chip:e})=>{let n=e._getSourceAction(document.activeElement);n&&this._keyManager.updateActiveItem(n)}),this._dir?.change.pipe(rt(this._destroyed)).subscribe(e=>this._keyManager.withHorizontalOrientation(e))}_skipPredicate(e){return e.disabled}_trackChipSetChanges(){this._chips.changes.pipe(li(null),rt(this._destroyed)).subscribe(()=>{this.disabled&&Promise.resolve().then(()=>this._syncChipsState()),this._redirectDestroyedChipFocus()})}_trackDestroyedFocusedChip(){this.chipDestroyedChanges.pipe(rt(this._destroyed)).subscribe(e=>{let o=this._chips.toArray().indexOf(e.chip),r=e.chip._hasFocus(),a=e.chip._hadFocusOnRemove&&this._keyManager.activeItem&&e.chip._getActions().includes(this._keyManager.activeItem),c=r||a;this._isValidIndex(o)&&c&&(this._lastDestroyedFocusedChipIndex=o)})}_redirectDestroyedChipFocus(){if(this._lastDestroyedFocusedChipIndex!=null){if(this._chips.length){let e=Math.min(this._lastDestroyedFocusedChipIndex,this._chips.length-1),n=this._chips.toArray()[e];n.disabled?this._chips.length===1?this.focus():this._keyManager.setPreviousItemActive():n.focus()}else this.focus();this._lastDestroyedFocusedChipIndex=null}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-chip-set"]],contentQueries:function(n,o,r){if(n&1&&$i(r,zn,5),n&2){let a;gt(a=_t())&&(o._chips=a)}},hostAttrs:[1,"mat-mdc-chip-set","mdc-evolution-chip-set"],hostVars:1,hostBindings:function(n,o){n&1&&v("keydown",function(a){return o._handleKeydown(a)}),n&2&&It("role",o.role)},inputs:{disabled:[2,"disabled","disabled",dt],role:"role",tabIndex:[2,"tabIndex","tabIndex",e=>e==null?0:io(e)]},ngContentSelectors:CV,decls:2,vars:0,consts:[["role","presentation",1,"mdc-evolution-chip-set__chips"]],template:function(n,o){n&1&&(En(),_o(0,"div",0),Yt(1),wo())},styles:[`.mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input::placeholder{opacity:1}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input::-moz-placeholder{opacity:1}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input::-webkit-input-placeholder{opacity:1}.mat-mdc-form-field:not(.mat-form-field-hide-placeholder) input.mat-mdc-chip-input:-ms-input-placeholder{opacity:1}.mat-mdc-chip-set+input.mat-mdc-chip-input{margin-left:0;margin-right:0}
|
||
`],encapsulation:2,changeDetection:0})}return t})();var eA=class{source;value;constructor(i,e){this.source=i,this.value=e}},mi=(()=>{class t extends Vle{ngControl=f(BC,{optional:!0,self:!0});controlType="mat-chip-grid";_chipInput;_defaultRole="grid";_errorStateTracker;_uid=f(Oi).getId("mat-chip-grid-");_ariaDescribedbyIds=[];_onTouched=()=>{};_onChange=()=>{};get disabled(){return this.ngControl?!!this.ngControl.disabled:this._disabled}set disabled(e){this._disabled=e,this._syncChipsState(),this.stateChanges.next()}get id(){return this._chipInput?this._chipInput.id:this._uid}get empty(){return(!this._chipInput||this._chipInput.empty)&&(!this._chips||this._chips.length===0)}get placeholder(){return this._chipInput?this._chipInput.placeholder:this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}_placeholder="";get focused(){return this._chipInput?.focused||this._hasFocusedChip()}get required(){return this._required??this.ngControl?.control?.hasValidator(be.required)??!1}set required(e){this._required=e,this.stateChanges.next()}_required;get shouldLabelFloat(){return!this.empty||this.focused}get value(){return this._value}set value(e){this._value=e}_value=[];get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}get chipBlurChanges(){return this._getChipStream(e=>e._onBlur)}change=new ve;valueChange=new ve;_chips=void 0;stateChanges=new Le;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}constructor(){super();let e=f(Ci,{optional:!0}),n=f(pt,{optional:!0}),o=f(kd);this.ngControl&&(this.ngControl.valueAccessor=this),this._errorStateTracker=new QC(o,this.ngControl,n,e,this.stateChanges)}ngAfterContentInit(){this.chipBlurChanges.pipe(rt(this._destroyed)).subscribe(()=>{this._blur(),this.stateChanges.next()}),Dn(this.chipFocusChanges,this._chips.changes).pipe(rt(this._destroyed)).subscribe(()=>this.stateChanges.next())}ngDoCheck(){this.ngControl&&this.updateErrorState()}ngOnDestroy(){super.ngOnDestroy(),this.stateChanges.complete()}registerInput(e){this._chipInput=e,this._chipInput.setDescribedByIds(this._ariaDescribedbyIds),this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(e){!this.disabled&&!this._originatesFromChip(e)&&this.focus()}focus(){if(!(this.disabled||this._chipInput?.focused)){if(!this._chips.length||this._chips.first.disabled){if(!this._chipInput)return;Promise.resolve().then(()=>this._chipInput.focus())}else{let e=this._keyManager.activeItem;e?e.focus():this._keyManager.setFirstItemActive()}this.stateChanges.next()}}get describedByIds(){if(this._chipInput)return this._chipInput.describedByIds||[];let e=this._elementRef.nativeElement.getAttribute("aria-describedby");return e?e.split(" "):[]}setDescribedByIds(e){this._ariaDescribedbyIds=e,this._chipInput?this._chipInput.setDescribedByIds(e):e.length?this._elementRef.nativeElement.setAttribute("aria-describedby",e.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}writeValue(e){this._value=e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this.stateChanges.next()}updateErrorState(){this._errorStateTracker.updateErrorState()}_blur(){this.disabled||setTimeout(()=>{this.focused||(this._propagateChanges(),this._markAsTouched())})}_allowFocusEscape(){this._chipInput?.focused||super._allowFocusEscape()}_handleKeydown(e){let n=e.keyCode,o=this._keyManager.activeItem;if(n===9)this._chipInput?.focused&&cr(e,"shiftKey")&&this._chips.length&&!this._chips.last.disabled?(e.preventDefault(),o?this._keyManager.setActiveItem(o):this._focusLastChip()):super._allowFocusEscape();else if(!this._chipInput?.focused)if((n===38||n===40)&&o){let r=this._chipActions.filter(m=>m._isPrimary===o._isPrimary&&!this._skipPredicate(m)),a=r.indexOf(o),c=e.keyCode===38?-1:1;e.preventDefault(),a>-1&&this._isValidIndex(a+c)&&this._keyManager.setActiveItem(r[a+c])}else super._handleKeydown(e);this.stateChanges.next()}_focusLastChip(){this._chips.length&&this._chips.last.focus()}_propagateChanges(){let e=this._chips.length?this._chips.toArray().map(n=>n.value):[];this._value=e,this.change.emit(new eA(this,e)),this.valueChange.emit(e),this._onChange(e),this._changeDetectorRef.markForCheck()}_markAsTouched(){this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-chip-grid"]],contentQueries:function(n,o,r){if(n&1&&$i(r,Ble,5),n&2){let a;gt(a=_t())&&(o._chips=a)}},hostAttrs:[1,"mat-mdc-chip-set","mat-mdc-chip-grid","mdc-evolution-chip-set"],hostVars:10,hostBindings:function(n,o){n&1&&v("focus",function(){return o.focus()})("blur",function(){return o._blur()}),n&2&&(It("role",o.role)("tabindex",o.disabled||o._chips&&o._chips.length===0?-1:o.tabIndex)("aria-disabled",o.disabled.toString())("aria-invalid",o.errorState),je("mat-mdc-chip-list-disabled",o.disabled)("mat-mdc-chip-list-invalid",o.errorState)("mat-mdc-chip-list-required",o.required))},inputs:{disabled:[2,"disabled","disabled",dt],placeholder:"placeholder",required:[2,"required","required",dt],value:"value",errorStateMatcher:"errorStateMatcher"},outputs:{change:"change",valueChange:"valueChange"},features:[hn([{provide:XC,useExisting:t}]),xn],ngContentSelectors:CV,decls:2,vars:0,consts:[["role","presentation",1,"mdc-evolution-chip-set__chips"]],template:function(n,o){n&1&&(En(),_o(0,"div",0),Yt(1),wo())},styles:[Lle],encapsulation:2,changeDetection:0})}return t})(),pi=(()=>{class t{_elementRef=f(Lt);focused=!1;get chipGrid(){return this._chipGrid}set chipGrid(e){e&&(this._chipGrid=e,this._chipGrid.registerInput(this))}_chipGrid;addOnBlur=!1;separatorKeyCodes;chipEnd=new ve;placeholder="";id=f(Oi).getId("mat-mdc-chip-list-input-");get disabled(){return this._disabled||this._chipGrid&&this._chipGrid.disabled}set disabled(e){this._disabled=e}_disabled=!1;readonly=!1;disabledInteractive;get empty(){return!this.inputElement.value}inputElement;constructor(){let e=f(xV),n=f(Bh,{optional:!0});this.inputElement=this._elementRef.nativeElement,this.separatorKeyCodes=e.separatorKeyCodes,this.disabledInteractive=e.inputDisabledInteractive??!1,n&&this.inputElement.classList.add("mat-mdc-form-field-input-control")}ngOnChanges(){this._chipGrid.stateChanges.next()}ngOnDestroy(){this.chipEnd.complete()}_keydown(e){this.empty&&e.keyCode===8?(e.repeat||this._chipGrid._focusLastChip(),e.preventDefault()):this._emitChipEnd(e)}_blur(){this.addOnBlur&&this._emitChipEnd(),this.focused=!1,this._chipGrid.focused||this._chipGrid._blur(),this._chipGrid.stateChanges.next()}_focus(){this.focused=!0,this._chipGrid.stateChanges.next()}_emitChipEnd(e){(!e||this._isSeparatorKey(e)&&!e.repeat)&&(this.chipEnd.emit({input:this.inputElement,value:this.inputElement.value,chipInput:this}),e?.preventDefault())}_onInput(){this._chipGrid.stateChanges.next()}focus(){this.inputElement.focus()}clear(){this.inputElement.value=""}get describedByIds(){return this._elementRef.nativeElement.getAttribute("aria-describedby")?.split(" ")||[]}setDescribedByIds(e){let n=this._elementRef.nativeElement;e.length?n.setAttribute("aria-describedby",e.join(" ")):n.removeAttribute("aria-describedby")}_isSeparatorKey(e){if(!this.separatorKeyCodes)return!1;for(let n of this.separatorKeyCodes){let o,r;typeof n=="number"?(o=n,r=null):(o=n.keyCode,r=n.modifiers);let a=r?.length?cr(e,...r):!cr(e);if(o===e.keyCode&&a)return!0}return!1}_getReadonlyAttribute(){return this.readonly||this.disabled&&this.disabledInteractive?"true":null}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["input","matChipInputFor",""]],hostAttrs:[1,"mat-mdc-chip-input","mat-mdc-input-element","mdc-text-field__input","mat-input-element"],hostVars:8,hostBindings:function(n,o){n&1&&v("keydown",function(a){return o._keydown(a)})("blur",function(){return o._blur()})("focus",function(){return o._focus()})("input",function(){return o._onInput()}),n&2&&(No("id",o.id),It("disabled",o.disabled&&!o.disabledInteractive?"":null)("placeholder",o.placeholder||null)("aria-invalid",o._chipGrid&&o._chipGrid.ngControl?o._chipGrid.ngControl.invalid:null)("aria-required",o._chipGrid&&o._chipGrid.required||null)("aria-disabled",o.disabled&&o.disabledInteractive?"true":null)("readonly",o._getReadonlyAttribute())("required",o._chipGrid&&o._chipGrid.required||null))},inputs:{chipGrid:[0,"matChipInputFor","chipGrid"],addOnBlur:[2,"matChipInputAddOnBlur","addOnBlur",dt],separatorKeyCodes:[0,"matChipInputSeparatorKeyCodes","separatorKeyCodes"],placeholder:"placeholder",id:"id",disabled:[2,"disabled","disabled",dt],readonly:[2,"readonly","readonly",dt],disabledInteractive:[2,"matChipInputDisabledInteractive","disabledInteractive",dt]},outputs:{chipEnd:"matChipInputTokenEnd"},exportAs:["matChipInput","matChipInputFor"],features:[un]})}return t})();var ti=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({providers:[kd,{provide:xV,useValue:{separatorKeyCodes:[13]}}],imports:[ss,wn]})}return t})();var Na=(()=>{class t{getCategoriesForCloudNodes(){return[["Default","guest"],["Routers","router"],["Switches","switch"],["End devices","guest"],["Security devices","firewall"]]}getConsoleTypesForCloudNodes(){return["telnet","vnc","spice","http","https","none"]}getCategoriesForEthernetHubs(){return[["Default","guest"],["Routers","router"],["Switches","switch"],["End devices","guest"],["Security devices","firewall"]]}getCategoriesForEthernetSwitches(){return[["Default","guest"],["Routers","router"],["Switches","switch"],["End devices","guest"],["Security devices","firewall"]]}getConsoleTypesForEthernetSwitches(){return["telnet","none"]}getPortTypesForEthernetSwitches(){return["access","dot1q","qinq"]}getEtherTypesForEthernetSwitches(){return["0x8100","0x88A8","0x9100","0x9200"]}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var zle=1,kl=(()=>{class t{httpController;symbols=new qt([]);cache;cachedControllerKey="";builtinCache;builtinControllerKey="";dimensionsCache=new Map;blobUrlCache=new Map;maximumSymbolSize=80;constructor(e){this.httpController=e}getMaximumSymbolSize(){return this.maximumSymbolSize}get(e){return this.symbols.getValue().find(n=>n.symbol_id===e)}getDimensions(e,n){let o=`${e.host}:${e.port}:${n}`;if(!this.dimensionsCache.has(o)){let r=encodeURI(n);this.dimensionsCache.set(o,this.httpController.get(e,`/symbols/${r}/dimensions`).pipe(Kp(1)))}return this.dimensionsCache.get(o)}getSymbolBlobUrl(e,n){return this.blobUrlCache.has(n)||this.blobUrlCache.set(n,this.httpController.getBlob(e,n).pipe(yt(o=>URL.createObjectURL(o)),Kp(1))),this.blobUrlCache.get(n)}scaleDimensionsForNode(e){let n=e.width>e.height?this.maximumSymbolSize/e.width:this.maximumSymbolSize/e.height;return{width:e.width*n,height:e.height*n}}getByFilename(e){return this.symbols.getValue().find(n=>n.filename===e)}add(e,n,o){return this.cache=null,this.cachedControllerKey="",this.httpController.post(e,`/symbols/${n}/raw`,o)}addFile(e,n,o){return this.cache=null,this.cachedControllerKey="",this.httpController.postBlob(e,`/symbols/${n}/raw`,o)}delete(e,n){this.cache=null,this.cachedControllerKey="";let o=encodeURI(n);return this.httpController.delete(e,`/symbols/${o}`)}load(e){return this.httpController.get(e,"/symbols")}list(e){let n=`${e.host}:${e.port}`;return(!this.cache||this.cachedControllerKey!==n)&&(this.cachedControllerKey=n,this.cache=this.load(e).pipe(Kp(zle))),this.cache}listBuiltinSymbols(e){let n=`${e.host}:${e.port}`;return(!this.builtinCache||this.builtinControllerKey!==n)&&(this.builtinControllerKey=n,this.builtinCache=this.load(e).pipe(yt(o=>o.filter(r=>r.builtin)),Kp(1))),this.builtinCache}listCustomSymbols(e){return this.load(e).pipe(yt(n=>n.filter(o=>!o.builtin)))}raw(e,n){let o=encodeURI(n);return this.httpController.getText(e,`/symbols/${o}/raw`)}getSymbolFromTemplate(e,n){return`${e.protocol}//${e.host}:${e.port}/${Ai.current_version}/symbols/${n.symbol}/raw`}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var SV=(()=>{class t{transform(e,n){return e?n?(n=n.toLowerCase(),e.filter(o=>o.filename.toLowerCase().includes(n))):e:[]}static \u0275fac=function(n){return new(n||t)};static \u0275pipe=Cr({name:"filenamefilter",type:t,pure:!0})}return t})();var nb=(()=>{class t{dialogRef;data;constructor(e,n){this.dialogRef=e,this.data=n}get title(){return this.data.title||"Confirm Delete"}get confirmButtonText(){return this.data.confirmButtonText||"Yes"}get cancelButtonText(){return this.data.cancelButtonText||"No"}onNoClick(){this.dialogRef.close(!1)}onYesClick(){this.dialogRef.close(!0)}static \u0275fac=function(n){return new(n||t)(st(Pe),st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-confirmation-dialog"]],decls:20,vars:4,consts:[[1,"dialog-container"],[1,"dialog-header"],[1,"dialog-icon","warning-icon"],[1,"dialog-title"],[1,"dialog-content"],[1,"dialog-message"],[1,"dialog-actions"],["mat-button","",1,"cancel-button",3,"click"],[1,"button-icon"],["mat-raised-button","","color","warn",1,"confirm-button",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"mat-icon",2),d(3,"warning"),l(),s(4,"h2",3),d(5),l()(),s(6,"div",4)(7,"p",5),d(8),l()(),s(9,"div",6)(10,"button",7),v("click",function(){return o.onNoClick()}),s(11,"mat-icon",8),d(12,"close"),l(),s(13,"span"),d(14),l()(),s(15,"button",9),v("click",function(){return o.onYesClick()}),s(16,"mat-icon",8),d(17,"check_circle"),l(),s(18,"span"),d(19),l()()()()),n&2&&(u(5),U(o.title),u(3),U(o.data.message),u(6),U(o.cancelButtonText),u(5),U(o.confirmButtonText))},dependencies:[Z,te,se,$,le],styles:['.dialog-container[_ngcontent-%COMP%]{position:relative;overflow:hidden;animation:_ngcontent-%COMP%_dialogSlideIn .2s ease-out;border-radius:16px;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 30%,transparent);background-color:var(--mat-sys-surface)}@keyframes _ngcontent-%COMP%_dialogSlideIn{0%{opacity:0;transform:scale(.9) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.dialog-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:24px 30px 16px;background:var(--mat-sys-error-container);border-bottom:1px solid var(--mat-sys-outline-variant);margin-bottom:4px;border-radius:16px 16px 0 0}.dialog-icon[_ngcontent-%COMP%]{width:28px;height:28px;font-size:28px;display:flex;align-items:center;justify-content:center}.warning-icon[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.dialog-title[_ngcontent-%COMP%]{font-size:18px;font-weight:600;color:var(--mat-sys-on-surface);margin:0;letter-spacing:-.2px}.dialog-content[_ngcontent-%COMP%]{padding:10px 30px 24px}.dialog-message[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface-variant);margin:0;line-height:1.5;letter-spacing:-.1px}.dialog-actions[_ngcontent-%COMP%]{padding:16px 30px 30px;display:flex;justify-content:center;gap:10px}.cancel-button[_ngcontent-%COMP%], .confirm-button[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:7px 24px;border-radius:8px;font-weight:500;font-size:14px;transition:all .1s ease;position:relative;overflow:hidden;min-width:70px;justify-content:center}.cancel-button[_ngcontent-%COMP%]{color:var(--mat-sys-primary);background:transparent;border:1px solid var(--mat-sys-outline)}.cancel-button[_ngcontent-%COMP%]:hover{background:var(--mat-sys-primary-container);border-color:var(--mat-sys-primary);transform:translateY(-1px);box-shadow:0 3px 10px color-mix(in srgb,var(--mat-sys-primary) 12%,transparent)}.cancel-button[_ngcontent-%COMP%]:active{transform:translateY(0)}.cancel-button[_ngcontent-%COMP%] .button-icon[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px}.confirm-button[_ngcontent-%COMP%]{background:var(--mat-sys-error);color:var(--mat-sys-on-error);border:none;box-shadow:0 2px 6px color-mix(in srgb,var(--mat-sys-error) 25%,transparent)}.confirm-button[_ngcontent-%COMP%]:hover{background:var(--mat-sys-error);opacity:.9;transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-error) 35%,transparent)}.confirm-button[_ngcontent-%COMP%]:active{transform:translateY(0)}.confirm-button[_ngcontent-%COMP%]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--mat-sys-on-error) 20%,transparent),transparent);transition:left .5s}.confirm-button[_ngcontent-%COMP%]:hover:before{left:100%}.confirm-button[_ngcontent-%COMP%] .button-icon[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px}.cancel-button[_ngcontent-%COMP%]:after, .confirm-button[_ngcontent-%COMP%]:after{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:currentColor;opacity:.4;transform:translate(-50%,-50%);transition:width .6s,height .6s}.cancel-button[_ngcontent-%COMP%]:active:after, .confirm-button[_ngcontent-%COMP%]:active:after{width:200px;height:200px;opacity:0;transition:0s}.cancel-button[_ngcontent-%COMP%]:focus-visible, .confirm-button[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--mat-sys-primary);outline-offset:2px}'],changeDetection:0})}return t})();var jle=(t,i)=>i.symbol_id;function $le(t,i){if(t&1&&(s(0,"p",16),d(1),l()),t&2){let e=b(2);je("success",e.uploadSuccess())("error",!e.uploadSuccess()),u(),X(" ",e.uploadStatus()," ")}}function Hle(t,i){if(t&1){let e=j();s(0,"div",9)(1,"p",10),d(2,"Select an image file to upload as a new symbol."),l(),s(3,"p",11)(4,"strong"),d(5,"Supported formats:"),l(),d(6," SVG, PNG, JPG, JPEG, GIF"),l(),s(7,"p",12)(8,"strong"),d(9,"Recommended size:"),l(),d(10," 128\xD7128 pixels (max 256\xD7256)"),l(),s(11,"input",13,0),v("change",function(o){D(e);let r=b();return P(r.uploadSymbolFile(o))}),l(),s(13,"button",14),v("click",function(){D(e);let o=Re(12);return P(o.click())}),s(14,"mat-icon"),d(15,"add"),l(),d(16," Choose File to Upload "),l(),A(17,$le,2,5,"p",15),l()}if(t&2){let e=b();u(17),O(e.uploadStatus()?17:-1)}}function Ule(t,i){t&1&&(s(0,"div",23),d(1,"Loading symbols..."),l())}function Gle(t,i){t&1&&(s(0,"div",24)(1,"mat-icon"),d(2,"info"),l(),s(3,"p"),d(4,'No custom symbols found. Upload symbols using the "Add Symbol" tab.'),l()())}function Wle(t,i){if(t&1){let e=j();s(0,"div",27),v("click",function(){let o=D(e).$implicit,r=b(3);return P(r.toggleSelection(o.symbol_id))}),F(1,"img",28),s(2,"span",29),d(3),l()()}if(t&2){let e=i.$implicit,n=b(3);je("selected",n.isSymbolSelected(e.symbol_id)),u(),x("src",n.getImageSource(e.symbol_id),$a)("alt",e.symbol_id),u(2),U(e.symbol_id)}}function qle(t,i){if(t&1&&(s(0,"div",25),J(1,Wle,4,5,"div",26,jle),l()),t&2){let e=b(2);u(),ee(e.customSymbols())}}function Xle(t,i){if(t&1){let e=j();s(0,"div",17)(1,"div",18)(2,"p",10),d(3,"Select custom symbols to delete:"),l(),s(4,"div",19)(5,"button",20),v("click",function(){D(e);let o=b();return P(o.deleteSelectedSymbols())}),s(6,"mat-icon"),d(7,"delete"),l(),d(8),l(),s(9,"button",21),v("click",function(){D(e);let o=b();return P(o.selectAllCustom())}),d(10,"Select all"),l(),s(11,"button",22),v("click",function(){D(e);let o=b();return P(o.clearSelection())}),d(12,"Clear"),l()()(),A(13,Ule,2,0,"div",23)(14,Gle,5,0,"div",24)(15,qle,3,0,"div",25),l()}if(t&2){let e=b();u(5),x("disabled",!e.hasSelectedSymbols()),u(3),X(" Delete (",e.selectedForDeletion().size,") "),u(5),O(e.isLoading()?13:e.customSymbols().length===0?14:15)}}var wV=(()=>{class t{dialogRef=f(Pe);cd=f(K);symbolService=f(kl);data=f(Nt);controller=me(void 0);activeTab=me(0);symbolsUpdated=new ve;uploadStatus=me("");uploadSuccess=me(!1);customSymbols=me([]);selectedForDeletion=me(new Set);isLoading=me(!1);symbolBlobUrls=new Map;constructor(){this.data?.controller&&(this.controller.set(this.data.controller),this.loadCustomSymbols())}onCloseClick(){this.dialogRef.close()}onTabChange(e){this.activeTab.set(e),e===1&&this.loadCustomSymbols(),this.cd.markForCheck()}loadCustomSymbols(){this.controller()&&this.symbolService.list(this.controller()).subscribe(e=>{let n=e.filter(o=>!o.builtin);this.customSymbols.set(n),this.loadSymbolBlobs(n),this.cd.markForCheck()})}loadSymbolBlobs(e){let n=new Map;e.forEach(r=>{let a=`/symbols/${r.symbol_id}/raw`;n.set(r.symbol_id,a)});let o=Array.from(n.values());lo(o.map(r=>this.symbolService.getSymbolBlobUrl(this.controller(),r))).subscribe(r=>{o.forEach((a,c)=>{for(let[m,p]of n.entries())if(p===a){this.symbolBlobUrls.set(m,r[c]);break}}),this.cd.markForCheck()})}getImageSource(e){return this.symbolBlobUrls.get(e)||""}toggleSelection(e){let n=this.selectedForDeletion(),o=new Set(n);o.has(e)?o.delete(e):o.add(e),this.selectedForDeletion.set(o),this.cd.markForCheck()}isSymbolSelected(e){return this.selectedForDeletion().has(e)}selectAllCustom(){let e=new Set(this.customSymbols().map(n=>n.symbol_id));this.selectedForDeletion.set(e),this.cd.markForCheck()}clearSelection(){this.selectedForDeletion.set(new Set),this.cd.markForCheck()}hasSelectedSymbols(){return this.selectedForDeletion().size>0}deleteSelectedSymbols(){let e=this.customSymbols().filter(o=>this.selectedForDeletion().has(o.symbol_id));if(e.length===0)return;let n=e.map(o=>this.symbolService.delete(this.controller(),o.symbol_id));lo(n).subscribe(()=>{this.selectedForDeletion.set(new Set),this.loadCustomSymbols(),this.symbolsUpdated.emit()})}uploadSymbolFile(e){let n=e.target,o=n.files[0];if(!o)return;let r=o.name,a=r.split(".").pop()?.toLowerCase();if(this.uploadStatus.set(`Uploading ${r}...`),this.uploadSuccess.set(!1),this.cd.markForCheck(),a==="svg"||a==="svgz"){let c=new FileReader;c.onloadend=()=>{let m=c.result;this.symbolService.add(this.controller(),r,m).subscribe({next:()=>{this.uploadStatus.set(`Successfully uploaded ${r}`),this.uploadSuccess.set(!0),this.symbolsUpdated.emit(),this.cd.markForCheck(),setTimeout(()=>{this.uploadStatus.set(""),this.cd.markForCheck()},3e3)},error:p=>{this.uploadStatus.set(`Failed to upload ${r}: ${p.message||"Unknown error"}`),this.uploadSuccess.set(!1),this.cd.markForCheck()}})},c.readAsText(o)}else if(a==="png"||a==="jpg"||a==="jpeg"||a==="gif"){let c=new Blob([o],{type:o.type});this.symbolService.addFile(this.controller(),r,c).subscribe({next:()=>{this.uploadStatus.set(`Successfully uploaded ${r}`),this.uploadSuccess.set(!0),this.symbolsUpdated.emit(),this.cd.markForCheck(),setTimeout(()=>{this.uploadStatus.set(""),this.cd.markForCheck()},3e3)},error:m=>{this.uploadStatus.set(`Failed to upload ${r}: ${m.message||"Unknown error"}`),this.uploadSuccess.set(!1),this.cd.markForCheck()}})}else{let c=new Blob([o],{type:o.type||"application/octet-stream"});this.symbolService.addFile(this.controller(),r,c).subscribe({next:()=>{this.uploadStatus.set(`Successfully uploaded ${r}`),this.uploadSuccess.set(!0),this.symbolsUpdated.emit(),this.cd.markForCheck(),setTimeout(()=>{this.uploadStatus.set(""),this.cd.markForCheck()},3e3)},error:m=>{this.uploadStatus.set(`Failed to upload ${r}: ${m.message||"Unknown error"}`),this.uploadSuccess.set(!1),this.cd.markForCheck()}})}n.value=""}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-symbols-manager-dialog"]],decls:11,vars:1,consts:[["file",""],["mat-dialog-title",""],[1,"symbols-manager-content"],[3,"selectedIndexChange","selectedIndex"],["label","Add Symbol"],["matTabContent",""],["label","Manage Symbols"],["align","end"],["mat-button","",3,"click"],[1,"add-symbol-section"],[1,"instructions"],[1,"supported-formats"],[1,"recommended-size"],["type","file","accept",".svg,.svgz,.png,.jpg,.jpeg,.gif",1,"non-visible",3,"change"],["mat-raised-button","","color","primary",3,"click"],[1,"upload-status",3,"success","error"],[1,"upload-status"],[1,"manage-symbols-section"],[1,"manage-header"],[1,"delete-actions"],["mat-button","","color","warn","mat-raised-button","",3,"click","disabled"],["mat-button","","matTooltip","Select all custom symbols",3,"click"],["mat-button","","matTooltip","Clear selection",3,"click"],[1,"loading-message"],[1,"empty-message"],[1,"symbols-grid"],[1,"symbol-item",3,"selected"],[1,"symbol-item",3,"click"],[3,"src","alt"],[1,"symbol-name"]],template:function(n,o){n&1&&(s(0,"h2",1),d(1,"Symbols Manager"),l(),s(2,"mat-dialog-content",2)(3,"mat-tab-group",3),Dh("selectedIndexChange",function(a){return Eh(o.activeTab,a)||(o.activeTab=a),a}),v("selectedIndexChange",function(a){return o.onTabChange(a)}),s(4,"mat-tab",4),Ae(5,Hle,18,1,"ng-template",5),l(),s(6,"mat-tab",6),Ae(7,Xle,16,3,"ng-template",5),l()()(),s(8,"mat-dialog-actions",7)(9,"button",8),v("click",function(){return o.onCloseClick()}),d(10,"Close"),l()()),n&2&&(u(3),Th("selectedIndex",o.activeTab))},dependencies:[Z,$,le,te,se,Ce,Ve,Be,Wt,mo,DR,Bo,Vo,Gt,Kt],styles:[".symbols-manager-content[_ngcontent-%COMP%]{overflow:auto}.manage-symbols-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px;padding:20px}.manage-symbols-section[_ngcontent-%COMP%] .manage-header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px;margin-bottom:16px}.manage-symbols-section[_ngcontent-%COMP%] .manage-header[_ngcontent-%COMP%] .instructions[_ngcontent-%COMP%]{font-size:16px;color:var(--mat-sys-on-surface);margin:0}.manage-symbols-section[_ngcontent-%COMP%] .manage-header[_ngcontent-%COMP%] .delete-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.manage-symbols-section[_ngcontent-%COMP%] .loading-message[_ngcontent-%COMP%], .manage-symbols-section[_ngcontent-%COMP%] .empty-message[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:60px 20px;color:var(--mat-sys-on-surface-variant);text-align:center}.manage-symbols-section[_ngcontent-%COMP%] .loading-message[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], .manage-symbols-section[_ngcontent-%COMP%] .empty-message[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:48px;width:48px;height:48px;color:var(--mat-sys-primary)}.manage-symbols-section[_ngcontent-%COMP%] .loading-message[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .manage-symbols-section[_ngcontent-%COMP%] .empty-message[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:16px}.manage-symbols-section[_ngcontent-%COMP%] .symbols-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:12px;padding:16px 0;max-height:400px;overflow-y:auto}.add-symbol-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:40px 20px}.add-symbol-section[_ngcontent-%COMP%] .instructions[_ngcontent-%COMP%]{font-size:16px;color:var(--mat-sys-on-surface);text-align:center;margin:0}.add-symbol-section[_ngcontent-%COMP%] .supported-formats[_ngcontent-%COMP%], .add-symbol-section[_ngcontent-%COMP%] .recommended-size[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface-variant);text-align:center;margin:0}.add-symbol-section[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-top:16px}.add-symbol-section[_ngcontent-%COMP%] .upload-status[_ngcontent-%COMP%]{margin-top:16px;padding:12px 16px;border-radius:8px;font-size:14px;text-align:center}.add-symbol-section[_ngcontent-%COMP%] .upload-status.success[_ngcontent-%COMP%]{background-color:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container)}.add-symbol-section[_ngcontent-%COMP%] .upload-status.error[_ngcontent-%COMP%]{background-color:var(--mat-sys-error-container);color:var(--mat-sys-on-error-container)}.symbol-item[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;border:2px solid transparent;border-radius:8px;cursor:pointer;transition:all .2s ease;background-color:var(--mat-sys-surface-container)}.symbol-item[_ngcontent-%COMP%]:hover{background-color:var(--mat-sys-surface-container-high);border-color:var(--mat-sys-outline)}.symbol-item.selected[_ngcontent-%COMP%]{border-color:var(--mat-sys-error);background-color:var(--mat-sys-error-container);box-shadow:0 0 0 2px var(--mat-sys-error)}.symbol-item[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:48px;height:48px;object-fit:contain}.symbol-item[_ngcontent-%COMP%] .symbol-name[_ngcontent-%COMP%]{font-size:12px;color:var(--mat-sys-on-surface);text-align:center;word-break:break-all;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.non-visible[_ngcontent-%COMP%]{display:none}"],changeDetection:0})}return t})();var Ji=(()=>{class t{configs=new Map;constructor(){this.registerDefaultConfigs()}registerDefaultConfigs(){let e={panelClass:["base-dialog-panel"]},n={panelClass:["base-dialog-panel","configurator-dialog-panel"]},o={panelClass:["base-dialog-panel","simple-dialog-panel"]};this.configs.set("changeSymbol",tt(H({},n),{panelClass:["base-dialog-panel","configurator-dialog-panel","change-symbol-dialog-panel"]})),this.configs.set("templateSymbol",tt(H({},n),{panelClass:["base-dialog-panel","configurator-dialog-panel","change-symbol-dialog-panel"]})),this.configs.set("symbolsManager",tt(H({},n),{panelClass:["base-dialog-panel","configurator-dialog-panel"]})),this.configs.set("confirmation",{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"]}),this.configs.set("editController",tt(H({},e),{panelClass:["base-dialog-panel","edit-controller-dialog-panel"]})),this.configs.set("addController",tt(H({},e),{panelClass:["base-dialog-panel","add-controller-dialog-panel"]})),this.configs.set("customAdapters",{panelClass:["base-dialog-panel","custom-adapters-dialog-panel"]}),this.configs.set("editProject",tt(H({},n),{panelClass:["base-dialog-panel","configurator-dialog-panel","edit-project-dialog-panel"]})),this.configs.set("addAce",tt(H({},n),{panelClass:["base-dialog-panel","configurator-dialog-panel","add-ace-dialog-panel"]})),this.configs.set("newTemplate",tt(H({},n),{panelClass:["base-dialog-panel","configurator-dialog-panel","new-template-dialog-panel"]})),this.configs.set("nodesMenuConfirmation",tt(H({},o),{panelClass:["base-dialog-panel","simple-dialog-panel","nodes-menu-confirmation-dialog-panel"]})),this.configs.set("startCapture",tt(H({},o),{panelClass:["base-dialog-panel","simple-dialog-panel"]})),this.configs.set("linkStyleEditor",tt(H({},o),{panelClass:["base-dialog-panel","simple-dialog-panel"]})),this.configs.set("packetFilters",tt(H({},o),{panelClass:["base-dialog-panel","simple-dialog-panel"]})),this.configs.set("helpDialog",tt(H({},o),{panelClass:["base-dialog-panel","simple-dialog-panel"]}))}getConfig(e){let n=this.configs.get(e);return n?H({},n):(console.warn(`DialogConfigService: No config found for "${e}", using base config`),{panelClass:["base-dialog-panel"]})}openConfig(e,n){let o=this.getConfig(e);return n?H(H({},o),n):o}registerConfig(e,n){this.configs.set(e,n)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Qle=(t,i,e)=>({buttonSelected:t,"in-delete-mode":i,"delete-selected":e}),Yle=t=>({imageSelected:t}),Kle=(t,i)=>i.theme,Zle=(t,i)=>i.symbol_id;function Jle(t,i){if(t&1){let e=j();s(0,"mat-radio-group",12)(1,"mat-radio-button",13),v("click",function(){D(e);let o=b();return P(o.setFilter("all"))}),d(2,"All symbols"),l(),s(3,"mat-radio-button",14),v("click",function(){D(e);let o=b();return P(o.setFilter("builtin"))}),d(4,"Built-in symbols"),l(),s(5,"mat-radio-button",15),v("click",function(){D(e);let o=b();return P(o.setFilter("custom"))}),d(6,"Custom symbols"),l()(),s(7,"button",16),v("click",function(){D(e);let o=b();return P(o.openSymbolsManager())}),s(8,"mat-icon"),d(9,"settings"),l(),d(10," Symbols Manager "),l()}}function ece(t,i){if(t&1){let e=j();s(0,"div",1)(1,"button",17),v("click",function(){D(e);let o=b();return P(o.deleteSelectedSymbols())}),s(2,"mat-icon"),d(3,"delete"),l(),d(4),l(),s(5,"span",18),d(6),l(),s(7,"button",19),v("click",function(){D(e);let o=b();return P(o.selectAllVisible())}),d(8,"Select all"),l(),s(9,"button",20),v("click",function(){D(e);let o=b();return P(o.clearSelection())}),d(10,"Clear"),l(),s(11,"button",16),v("click",function(){D(e);let o=b();return P(o.toggleDeleteMode())}),d(12,"Cancel"),l()()}if(t&2){let e=b();u(),x("disabled",!e.hasSelectedSymbols()),u(3),X(" Delete (",e.selectedForDeletion().size,") "),u(2),X("",e.selectedForDeletion().size," selected")}}function tce(t,i){if(t&1){let e=j();s(0,"div",23)(1,"div",24)(2,"button",25),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.isDeleteMode()&&r.canDeleteSymbol(o)?r.toggleSelection(o.symbol_id):r.setSelected(o.symbol_id))}),F(3,"img",26),l()()()}if(t&2){let e=i.$implicit,n=b(2);u(),je("delete-mode",n.isDeleteMode()),u(),x("ngClass",TC(5,Qle,n.isSelected===e.symbol_id,n.isDeleteMode(),n.isDeleteMode()&&n.isSymbolSelected(e.symbol_id))),u(),x("ngClass",ln(9,Yle,n.isSelected===e.symbol_id))("src",n.getImageSourceForTemplate(e.symbol_id),$a)}}function nce(t,i){if(t&1){let e=j();s(0,"mat-expansion-panel",11)(1,"mat-expansion-panel-header",21),v("click",function(){let o=D(e).$implicit,r=b();return P(r.toggleTheme(o.theme))}),s(2,"mat-panel-title"),d(3),l(),s(4,"mat-panel-description"),d(5),l()(),s(6,"div",22),J(7,tce,4,11,"div",23,Zle),on(9,"filenamefilter"),l()()}if(t&2){let e=i.$implicit,n=b();x("expanded",n.isThemeExpanded(e.theme)),u(3),X(" ",e.theme," "),u(2),X(" ",e.symbols.length," symbols "),u(2),ee($r(9,3,e.symbols,n.searchText()))}}var ap=(()=>{class t{symbolService=f(kl);cd=f(K);dialog=f(Je);dialogConfig=f(Ji);controller=oe(void 0);symbol=oe(void 0);symbolChanged=new ve;symbols=[];filteredSymbols=[];symbolGroups=[];isSelected="";selectedForDeletion=me(new Set);searchText=ae("");expandedThemes=me([]);zoomLevel=me(1);isDeleteMode=me(!1);previousFilter="";symbolBlobUrls=new Map;Math=Math;ngOnInit(){this.isSelected=this.symbol(),this.loadSymbols()}toggleTheme(e){let n=this.expandedThemes();n.includes(e)?this.expandedThemes.set(n.filter(o=>o!==e)):this.expandedThemes.set([...n,e])}isThemeExpanded(e){return this.expandedThemes().includes(e)}setFilter(e){e==="all"?this.filteredSymbols=this.symbols:e==="builtin"?this.filteredSymbols=this.symbols.filter(n=>n.builtin):this.filteredSymbols=this.symbols.filter(n=>!n.builtin),this.updateSymbolGroups()}setSelected(e){this.isSelected=e,this.symbolChanged.emit(this.isSelected)}loadSymbols(){this.symbolService.list(this.controller()).subscribe(e=>{this.symbols=e,this.filteredSymbols=e,this.loadSymbolBlobs(e),this.updateSymbolGroups(),this.cd.markForCheck()})}loadSymbolBlobs(e){let n=new Map;e.forEach(r=>{let a=`/symbols/${r.symbol_id}/raw`;n.set(r.symbol_id,a)});let o=Array.from(n.values());lo(o.map(r=>this.symbolService.getSymbolBlobUrl(this.controller(),r))).subscribe(r=>{o.forEach((a,c)=>{for(let[m,p]of n.entries())if(p===a){this.symbolBlobUrls.set(m,r[c]);break}}),this.cd.markForCheck()})}updateSymbolGroups(){let e=new Map;for(let n of this.filteredSymbols){let o=n.theme||"Other";e.has(o)||e.set(o,[]),e.get(o).push(n)}this.symbolGroups=Array.from(e.entries()).map(([n,o])=>({theme:n,symbols:o})).sort((n,o)=>n.theme.localeCompare(o.theme))}getImageSourceForTemplate(e){return this.symbolBlobUrls.get(e)||""}canDeleteSymbol(e){return!e.builtin}deleteSymbol(e,n){n.stopPropagation();let o={title:"Delete Symbol",message:`Are you sure you want to delete the symbol "${e.symbol_id}"?`,confirmButtonText:"Delete",cancelButtonText:"Cancel"};this.dialog.open(nb,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:o}).afterClosed().subscribe(a=>{a&&this.symbolService.delete(this.controller(),e.symbol_id).subscribe(()=>{this.loadSymbols()})})}zoomIn(){let e=this.zoomLevel();e<2&&this.zoomLevel.set(Math.min(2,e+.1))}zoomOut(){let e=this.zoomLevel();e>.5&&this.zoomLevel.set(Math.max(.5,e-.1))}resetZoom(){this.zoomLevel.set(1)}toggleSelection(e){let n=this.selectedForDeletion(),o=new Set(n);o.has(e)?o.delete(e):o.add(e),this.selectedForDeletion.set(o),this.cd.markForCheck()}isSymbolSelected(e){return this.selectedForDeletion().has(e)}toggleDeleteMode(){let e=this.isDeleteMode();this.isDeleteMode.update(n=>!n),!e&&this.isDeleteMode()?(this.previousFilter="all",this.setFilter("custom")):e&&!this.isDeleteMode()&&(this.selectedForDeletion.set(new Set),this.previousFilter&&this.setFilter(this.previousFilter)),this.cd.markForCheck()}selectAllVisible(){let e=this.filteredSymbols.filter(o=>!o.builtin),n=new Set(e.map(o=>o.symbol_id));this.selectedForDeletion.set(n),this.cd.markForCheck()}clearSelection(){this.selectedForDeletion.set(new Set),this.cd.markForCheck()}hasSelectedSymbols(){return this.selectedForDeletion().size>0}deleteSelectedSymbols(){let e=this.filteredSymbols.filter(a=>this.selectedForDeletion().has(a.symbol_id));if(e.length===0)return;let o={title:"Delete Symbols",message:e.length===1?`Are you sure you want to delete the symbol "${e[0].symbol_id}"?`:`Are you sure you want to delete ${e.length} symbols?`,confirmButtonText:"Delete",cancelButtonText:"Cancel"};this.dialog.open(nb,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:o}).afterClosed().subscribe(a=>{if(a){let c=e.map(m=>this.symbolService.delete(this.controller(),m.symbol_id));lo(c).subscribe(()=>{this.selectedForDeletion.set(new Set),this.loadSymbols()})}})}openSymbolsManager(){let e=this.dialogConfig.openConfig("symbolsManager",{data:{controller:this.controller()}});this.dialog.open(wV,e).afterClosed().subscribe(()=>{this.loadSymbols()})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-symbols"]],inputs:{controller:[1,"controller"],symbol:[1,"symbol"],searchText:[1,"searchText"]},outputs:{symbolChanged:"symbolChanged",searchText:"searchTextChange"},decls:21,vars:8,consts:[[1,"menu"],[1,"delete-actions"],[1,"example-full-width"],["matInput","","placeholder","Search by filename",3,"input","value"],[1,"zoom-controls"],["mat-icon-button","","matTooltip","Zoom out",3,"click","disabled"],[1,"zoom-level"],["mat-icon-button","","matTooltip","Zoom in",3,"click","disabled"],["mat-button","",3,"click","disabled"],[1,"symbolsWrapper"],["multi",""],[3,"expanded"],["aria-label","Select an option",1,"radio-selection"],["value","1","checked","",3,"click"],["value","2",3,"click"],["value","3",3,"click"],["mat-button","",3,"click"],["mat-button","","color","warn","mat-raised-button","",3,"click","disabled"],[1,"selected-count"],["mat-button","","matTooltip","Select all custom symbols",3,"click"],["mat-button","","matTooltip","Clear selection",3,"click"],[3,"click"],[1,"wrapper"],[1,"buttonWrapper"],[1,"symbol-item"],[1,"button",3,"click","ngClass"],["lazyimg","",1,"image",3,"ngClass","src"]],template:function(n,o){n&1&&(s(0,"div",0),A(1,Jle,11,0)(2,ece,13,3,"div",1),l(),s(3,"form")(4,"mat-form-field",2)(5,"input",3),v("input",function(a){return o.searchText.set(a.target.value)}),l()()(),s(6,"div",4)(7,"button",5),v("click",function(){return o.zoomOut()}),s(8,"mat-icon"),d(9,"remove"),l()(),s(10,"span",6),d(11),l(),s(12,"button",7),v("click",function(){return o.zoomIn()}),s(13,"mat-icon"),d(14,"add"),l()(),s(15,"button",8),v("click",function(){return o.resetZoom()}),d(16,"Reset"),l()(),s(17,"div",9)(18,"mat-accordion",10),J(19,nce,10,6,"mat-expansion-panel",11,Kle),l()()),n&2&&(u(),O(o.isDeleteMode()?2:1),u(4),x("value",o.searchText()),u(2),x("disabled",o.zoomLevel()<=.5),u(4),X("",o.Math.round(o.zoomLevel()*100),"%"),u(),x("disabled",o.zoomLevel()>=2),u(3),x("disabled",o.zoomLevel()===1),u(2),yn("--zoom-level",o.zoomLevel()),u(2),ee(o.symbolGroups))},dependencies:[Z,Zi,nt,Ue,He,Ci,$,le,ze,te,se,we,Te,ke,go,Io,ko,wl,op,Ud,Gd,ip,Qy,Ce,Gt,Kt,SV],styles:[".symbolsWrapper[_ngcontent-%COMP%]{overflow:visible;--zoom-level: 1}.zoom-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding:8px;background-color:var(--mat-sys-surface-container);border-radius:8px}.zoom-controls[_ngcontent-%COMP%] .zoom-level[_ngcontent-%COMP%]{min-width:50px;text-align:center;font-size:14px;font-weight:500}.wrapper[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(60px * var(--zoom-level)),1fr));gap:calc(4px * var(--zoom-level));transition:gap .2s ease}.buttonWrapper[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;outline:none;padding:calc(4px * var(--zoom-level))}.symbol-item[_ngcontent-%COMP%]{position:relative;width:100%;height:100%}.buttonSelected[_ngcontent-%COMP%]{background-color:var(--mat-sys-secondary-container)}.image[_ngcontent-%COMP%]{width:calc(45px * var(--zoom-level));height:calc(45px * var(--zoom-level));object-fit:contain}.imageSelected[_ngcontent-%COMP%]{outline:2px solid var(--mat-sys-primary);outline-offset:1px}.delete-button[_ngcontent-%COMP%]{position:absolute;top:calc(-2px * var(--zoom-level));right:calc(-2px * var(--zoom-level));width:calc(16px * var(--zoom-level));height:calc(16px * var(--zoom-level));padding:0;display:flex;align-items:center;justify-content:center;background-color:transparent;transition:transform .2s ease;z-index:1}.delete-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:calc(12px * var(--zoom-level));width:auto;height:auto}.delete-button[_ngcontent-%COMP%]:hover{transform:scale(1.2);background-color:transparent}.menu[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;flex-wrap:wrap;gap:8px}.radio-selection[_ngcontent-%COMP%]{display:flex;gap:8px}.delete-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;width:100%}.delete-actions[_ngcontent-%COMP%] .selected-count[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:var(--mat-sys-on-surface)}.example-full-width[_ngcontent-%COMP%]{width:100%;margin-bottom:8px}.non-visible[_ngcontent-%COMP%]{display:none}.symbol-item.delete-mode[_ngcontent-%COMP%]{padding:2px;border-radius:4px}.button[_ngcontent-%COMP%]{background:border-box;border-width:0;outline:none;width:100%;height:100%;padding:calc(4px * var(--zoom-level))}.button.in-delete-mode[_ngcontent-%COMP%]{cursor:pointer}.button.delete-selected[_ngcontent-%COMP%]{outline:2px solid var(--mat-sys-error);outline-offset:-2px;box-shadow:0 0 0 2px var(--mat-sys-error)}"],changeDetection:0})}return t})();var pr=(()=>{class t{dialogRef=f(Pe);cd=f(K);controller;symbol="";constructor(){let e=f(Nt);this.controller=e.controller,this.symbol=e.symbol}ngOnInit(){this.cd.markForCheck()}symbolChanged(e){this.symbol=e,this.cd.markForCheck()}onCloseClick(){this.dialogRef.close()}onSelectClick(){this.dialogRef.close(this.symbol)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-template-symbol-dialog"]],decls:9,vars:2,consts:[["mat-dialog-title",""],[1,"modal-form-container"],[3,"symbolChanged","controller","symbol"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Select symbol"),l(),s(2,"div",1)(3,"app-symbols",2),v("symbolChanged",function(a){return o.symbolChanged(a)}),l()(),s(4,"div",3)(5,"button",4),v("click",function(){return o.onCloseClick()}),d(6,"Cancel"),l(),s(7,"button",5),v("click",function(){return o.onSelectClick()}),d(8,"Choose symbol"),l()()),n&2&&(u(3),x("controller",o.controller)("symbol",o.symbol))},dependencies:[Ce,Ve,Be,$,le,ap],styles:[".modal-form-container[_ngcontent-%COMP%]{padding:16px;overflow-y:auto;max-height:500px}.menu[_ngcontent-%COMP%]{display:flex;justify-content:space-between}.radio-selection[_ngcontent-%COMP%]{width:90%}.mat-radio-button[_ngcontent-%COMP%] ~ .mat-radio-button[_ngcontent-%COMP%]{margin-left:16px}.non-visible[_ngcontent-%COMP%]{display:none}.example-full-width[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();function ice(t,i){if(t&1){let e=j();s(0,"button",6),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function oce(t,i){if(t&1){let e=j();s(0,"mat-chip",29),v("removed",function(){let o=D(e).$implicit,r=b(3);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",30),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function rce(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),U(e[0])}}function ace(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function sce(t,i){if(t&1){let e=j();s(0,"form",11)(1,"mat-form-field",16)(2,"mat-label"),d(3,"Template name"),l(),s(4,"input",17),v("input",function(o){D(e);let r=b(2);return P(r.name.set(o.target.value))}),l()(),s(5,"mat-form-field",16)(6,"mat-label"),d(7,"Default name format"),l(),s(8,"input",18),v("input",function(o){D(e);let r=b(2);return P(r.defaultNameFormat.set(o.target.value))}),l()(),s(9,"div",19)(10,"mat-form-field",20)(11,"mat-label"),d(12,"Symbol"),l(),s(13,"input",21),v("input",function(o){D(e);let r=b(2);return P(r.symbol.set(o.target.value))}),l()(),s(14,"button",22),v("click",function(){D(e);let o=b(2);return P(o.chooseSymbol())}),d(15,"Choose symbol"),l()(),s(16,"mat-form-field",16)(17,"mat-label"),d(18,"Tags"),l(),s(19,"mat-chip-grid",null,0),J(21,oce,4,1,"mat-chip",null,Fe),l(),s(23,"input",23),v("matChipInputTokenEnd",function(o){D(e);let r=b(2);return P(r.addTag(o))}),l()(),s(24,"mat-form-field",16)(25,"mat-label"),d(26,"Category"),l(),s(27,"mat-select",24),v("selectionChange",function(o){D(e);let r=b(2);return P(r.category.set(o.value))}),J(28,rce,2,2,"mat-option",25,Ii),l()(),s(30,"mat-form-field",16)(31,"mat-label"),d(32,"Console type"),l(),s(33,"mat-select",24),v("selectionChange",function(o){D(e);let r=b(2);return P(r.consoleType.set(o.value))}),J(34,ace,2,2,"mat-option",25,Fe),l()(),s(36,"mat-form-field",16)(37,"mat-label"),d(38,"Console host"),l(),s(39,"input",26),v("input",function(o){D(e);let r=b(2);return P(r.consoleHost.set(o.target.value))}),l()(),s(40,"mat-form-field",16)(41,"mat-label"),d(42,"Console port"),l(),s(43,"input",27),v("input",function(o){D(e);let r=b(2);return P(r.consolePort.set(+o.target.value))}),l()(),s(44,"mat-form-field",16)(45,"mat-label"),d(46,"Console HTTP path"),l(),s(47,"input",28),v("input",function(o){D(e);let r=b(2);return P(r.consoleHttpPath.set(o.target.value))}),l()()()}if(t&2){let e=Re(20),n=b(2);u(4),x("value",n.name()),u(4),x("value",n.defaultNameFormat()),u(5),x("value",n.symbol()),u(8),ee(n.tags()),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(4),x("value",n.category()),u(),ee(n.categories),u(5),x("value",n.consoleType()),u(),ee(n.consoleTypes),u(5),x("value",n.consoleHost()),u(4),x("value",n.consolePort()),u(4),x("value",n.consoleHttpPath())}}function lce(t,i){if(t&1&&(s(0,"div",31),d(1),l()),t&2){let e=i.$implicit;u(),U(e.name)}}function cce(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function dce(t,i){if(t&1){let e=j();s(0,"div",11),J(1,lce,2,1,"div",31,Fe),s(3,"div",32)(4,"mat-form-field",20)(5,"mat-label"),d(6,"Ethernet interface"),l(),s(7,"mat-select",24),v("selectionChange",function(o){D(e);let r=b(2);return P(r.ethernetInterface.set(o.value))}),J(8,cce,2,2,"mat-option",25,Fe),l()(),s(10,"button",33),v("click",function(){D(e);let o=b(2);return P(o.onAddEthernetInterface())}),d(11,"Add"),l()()()}if(t&2){let e=b(2);u(),ee(e.portsMappingEthernet),u(6),x("value",e.ethernetInterface()),u(),ee(e.ethernetInterfaces)}}function mce(t,i){if(t&1&&(s(0,"div",31),d(1),l()),t&2){let e=i.$implicit;u(),U(e.name)}}function pce(t,i){if(t&1){let e=j();s(0,"div",11),J(1,mce,2,1,"div",31,Fe),s(3,"div",32)(4,"mat-form-field",20)(5,"mat-label"),d(6,"TAP interface"),l(),s(7,"input",34),v("input",function(o){D(e);let r=b(2);return P(r.tapInterface.set(o.target.value))}),l()(),s(8,"button",33),v("click",function(){D(e);let o=b(2);return P(o.onAddTapInterface())}),d(9,"Add"),l()()()}if(t&2){let e=b(2);u(),ee(e.portsMappingTap),u(6),x("value",e.tapInterface())}}function uce(t,i){if(t&1&&(s(0,"table",35),qe(1,40),s(2,"th",41),d(3,"Name"),l(),s(4,"td",42),d(5),l(),Xe(),qe(6,43),s(7,"th",41),d(8,"Local port"),l(),s(9,"td",42),d(10),l(),Xe(),qe(11,44),s(12,"th",41),d(13,"Remote host"),l(),s(14,"td",42),d(15),l(),Xe(),qe(16,45),s(17,"th",41),d(18,"Remote port"),l(),s(19,"td",42),d(20),l(),Xe(),F(21,"tr",46)(22,"tr",47),l()),t&2){let e=b(3);x("dataSource",e.dataSourceUdp),u(5),U(e.element.name),u(5),U(e.element.lport),u(5),U(e.element.rhost),u(5),U(e.element.rport)}}function hce(t,i){if(t&1){let e=j();s(0,"div",11),A(1,uce,23,5,"table",35),s(2,"mat-form-field",16)(3,"mat-label"),d(4,"Name"),l(),s(5,"input",36),v("input",function(o){D(e);let r=b(2);return P(r.newPortName.set(o.target.value))}),l()(),s(6,"mat-form-field",16)(7,"mat-label"),d(8,"Local port"),l(),s(9,"input",37),v("input",function(o){D(e);let r=b(2);return P(r.newPortLport.set(+o.target.value))}),l()(),s(10,"mat-form-field",16)(11,"mat-label"),d(12,"Remote host"),l(),s(13,"input",38),v("input",function(o){D(e);let r=b(2);return P(r.newPortRhost.set(o.target.value))}),l()(),s(14,"mat-form-field",16)(15,"mat-label"),d(16,"Remote port"),l(),s(17,"input",39),v("input",function(o){D(e);let r=b(2);return P(r.newPortRport.set(+o.target.value))}),l()(),s(18,"button",33),v("click",function(){D(e);let o=b(2);return P(o.onAddUdpInterface())}),d(19,"Add"),l()()}if(t&2){let e=b(2);u(),O(e.dataSourceUdp.length?1:-1),u(4),x("value",e.newPortName()),u(4),x("value",e.newPortLport()),u(4),x("value",e.newPortRhost()),u(4),x("value",e.newPortRport())}}function fce(t,i){if(t&1){let e=j();s(0,"div",12)(1,"mat-form-field",48)(2,"mat-label"),d(3,"Usage"),l(),s(4,"textarea",49),v("input",function(o){D(e);let r=b(2);return P(r.usage.set(o.target.value))}),l()()()}if(t&2){let e=b(2);u(4),x("value",e.usage())}}function gce(t,i){if(t&1){let e=j();s(0,"main",5)(1,"section",7)(2,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("general"))}),s(3,"h3",9),d(4,"General"),l(),s(5,"mat-icon",10),d(6),l()(),A(7,sce,48,10,"form",11),l(),s(8,"section",7)(9,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("ethernet"))}),s(10,"h3",9),d(11,"Ethernet interfaces"),l(),s(12,"mat-icon",10),d(13),l()(),A(14,dce,12,1,"div",11),l(),s(15,"section",7)(16,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("tap"))}),s(17,"h3",9),d(18,"TAP interfaces"),l(),s(19,"mat-icon",10),d(20),l()(),A(21,pce,10,1,"div",11),l(),s(22,"section",7)(23,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("udp"))}),s(24,"h3",9),d(25,"UDP tunnels"),l(),s(26,"mat-icon",10),d(27),l()(),A(28,hce,20,5,"div",11),l(),s(29,"section",7)(30,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("usage"))}),s(31,"h3",9),d(32,"Usage"),l(),s(33,"mat-icon",10),d(34),l()(),A(35,fce,5,1,"div",12),l(),s(36,"div",13)(37,"button",14),v("click",function(){D(e);let o=b();return P(o.goBack())}),d(38,"Cancel"),l(),s(39,"button",15),v("click",function(){D(e);let o=b();return P(o.onSave())}),d(40,"Save"),l()()()}if(t&2){let e=b();u(6),U(e.generalExpanded?"expand_less":"expand_more"),u(),O(e.generalExpanded?7:-1),u(6),U(e.ethernetExpanded?"expand_less":"expand_more"),u(),O(e.ethernetExpanded?14:-1),u(6),U(e.tapExpanded?"expand_less":"expand_more"),u(),O(e.tapExpanded?21:-1),u(6),U(e.udpExpanded?"expand_less":"expand_more"),u(),O(e.udpExpanded?28:-1),u(6),U(e.usageExpanded?"expand_less":"expand_more"),u(),O(e.usageExpanded?35:-1)}}var cS=(()=>{class t{route=f(Ye);controllerService=f(We);builtInTemplatesService=f(Rr);toasterService=f(fe);builtInTemplatesConfigurationService=f(Na);router=f(ut);cd=f(K);dialog=f(Je);dialogConfig=f(Ji);controller;cloudNodeTemplate;separatorKeysCodes=[13,188];categories=[];consoleTypes=[];ethernetInterfaces=["Ethernet 2","Ethernet 3"];displayedColumns=["name","lport","rhost","rport"];generalExpanded=!1;ethernetExpanded=!1;tapExpanded=!1;udpExpanded=!1;usageExpanded=!1;name=ae("");defaultNameFormat=ae("");symbol=ae("");category=ae("");consoleType=ae("");consoleHost=ae("");consolePort=ae(0);consoleHttpPath=ae("");usage=ae("");tags=ae([]);ethernetInterface=ae("");tapInterface=ae("");portsMappingEthernet=[];portsMappingTap=[];portsMappingUdp=[];dataSourceUdp=[];newPortName=ae("");newPortLport=ae(0);newPortRhost=ae("");newPortRport=ae(0);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.getConfiguration(),this.builtInTemplatesService.getTemplate(this.controller,n).subscribe(r=>{this.cloudNodeTemplate=r,this.cloudNodeTemplate.tags||(this.cloudNodeTemplate.tags=[]),this.name.set(r.name||""),this.defaultNameFormat.set(r.default_name_format||""),this.symbol.set(r.symbol||""),this.category.set(r.category||""),this.consoleType.set(r.remote_console_type||""),this.consoleHost.set(r.remote_console_host||""),this.consolePort.set(r.remote_console_port||0),this.consoleHttpPath.set(r.remote_console_http_path||""),this.usage.set(r.usage||""),this.tags.set(r.tags||[]),this.portsMappingEthernet=this.cloudNodeTemplate.ports_mapping.filter(a=>a.type==="ethernet"),this.portsMappingTap=this.cloudNodeTemplate.ports_mapping.filter(a=>a.type==="tap"),this.portsMappingUdp=this.cloudNodeTemplate.ports_mapping.filter(a=>a.type==="udp"),this.dataSourceUdp=[...this.portsMappingUdp],this.cd.markForCheck()})})}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","builtin","cloud-nodes"])}toggleSection(e){switch(e){case"general":this.generalExpanded=!this.generalExpanded;break;case"ethernet":this.ethernetExpanded=!this.ethernetExpanded;break;case"tap":this.tapExpanded=!this.tapExpanded;break;case"udp":this.udpExpanded=!this.udpExpanded;break;case"usage":this.usageExpanded=!this.usageExpanded;break}}getConfiguration(){this.categories=this.builtInTemplatesConfigurationService.getCategoriesForCloudNodes(),this.consoleTypes=this.builtInTemplatesConfigurationService.getConsoleTypesForCloudNodes()}onAddEthernetInterface(){let e=this.ethernetInterface();e&&(this.portsMappingEthernet.push({interface:e,name:e,port_number:0,type:"ethernet"}),this.ethernetInterface.set(""),this.cd.markForCheck())}onAddTapInterface(){let e=this.tapInterface();e&&(this.portsMappingTap.push({interface:e,name:e,port_number:0,type:"tap"}),this.tapInterface.set(""),this.cd.markForCheck())}onAddUdpInterface(){let e={name:this.newPortName(),lport:this.newPortLport(),rhost:this.newPortRhost(),rport:this.newPortRport(),port_number:0};this.portsMappingUdp.push(e),this.dataSourceUdp=[...this.portsMappingUdp],this.newPortName.set(""),this.newPortLport.set(0),this.newPortRhost.set(""),this.newPortRport.set(0),this.cd.markForCheck()}onSave(){this.cloudNodeTemplate.name=this.name(),this.cloudNodeTemplate.default_name_format=this.defaultNameFormat(),this.cloudNodeTemplate.symbol=this.symbol(),this.cloudNodeTemplate.category=this.category(),this.cloudNodeTemplate.remote_console_type=this.consoleType(),this.cloudNodeTemplate.remote_console_host=this.consoleHost(),this.cloudNodeTemplate.remote_console_port=this.consolePort(),this.cloudNodeTemplate.remote_console_http_path=this.consoleHttpPath(),this.cloudNodeTemplate.usage=this.usage(),this.cloudNodeTemplate.tags=this.tags(),this.cloudNodeTemplate.ports_mapping=[...this.portsMappingEthernet,...this.portsMappingTap,...this.portsMappingUdp],this.builtInTemplatesService.saveTemplate(this.controller,this.cloudNodeTemplate).subscribe(e=>{this.toasterService.success("Changes saved")})}chooseSymbol(){let e=this.dialogConfig.openConfig("templateSymbol",{autoFocus:!1,disableClose:!1,data:{controller:this.controller,symbol:this.symbol()}});this.dialog.open(pr,e).afterClosed().subscribe(o=>{o&&this.symbol.set(o)})}addTag(e){let n=(e.value||"").trim(),o=this.tags();n&&this.tags.set([...o,n]),e.chipInput&&e.chipInput.clear()}removeTag(e){let n=this.tags(),o=n.indexOf(e);if(o>=0){let r=[...n];r.splice(o,1),this.tags.set(r)}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-cloud-nodes-template-details"]],inputs:{name:[1,"name"],defaultNameFormat:[1,"defaultNameFormat"],symbol:[1,"symbol"],category:[1,"category"],consoleType:[1,"consoleType"],consoleHost:[1,"consoleHost"],consolePort:[1,"consolePort"],consoleHttpPath:[1,"consoleHttpPath"],usage:[1,"usage"],tags:[1,"tags"],ethernetInterface:[1,"ethernetInterface"],tapInterface:[1,"tapInterface"],newPortName:[1,"newPortName"],newPortLport:[1,"newPortLport"],newPortRhost:[1,"newPortRhost"],newPortRport:[1,"newPortRport"]},outputs:{name:"nameChange",defaultNameFormat:"defaultNameFormatChange",symbol:"symbolChange",category:"categoryChange",consoleType:"consoleTypeChange",consoleHost:"consoleHostChange",consolePort:"consolePortChange",consoleHttpPath:"consoleHttpPathChange",usage:"usageChange",tags:"tagsChange",ethernetInterface:"ethernetInterfaceChange",tapInterface:"tapInterfaceChange",newPortName:"newPortNameChange",newPortLport:"newPortLportChange",newPortRhost:"newPortRhostChange",newPortRport:"newPortRportChange"},decls:6,vars:2,consts:[["chipList",""],[1,"cloud-nodes-details"],[1,"cloud-nodes-details__header"],["mat-icon-button","",1,"cloud-nodes-details__back-btn"],[1,"cloud-nodes-details__title"],[1,"cloud-nodes-details__content"],["mat-icon-button","",1,"cloud-nodes-details__back-btn",3,"click"],[1,"cloud-nodes-details__form-card"],[1,"cloud-nodes-details__section-header",3,"click"],[1,"cloud-nodes-details__section-title"],[1,"cloud-nodes-details__expand-icon"],[1,"cloud-nodes-details__form"],[1,"preferences__usage-form"],[1,"cloud-nodes-details__actions"],["mat-button","",1,"cloud-nodes-details__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"cloud-nodes-details__save-btn",3,"click"],["appearance","fill",1,"cloud-nodes-details__field"],["matInput","","type","text","placeholder","Template name",3,"input","value"],["matInput","","type","text","placeholder","Default name format",3,"input","value"],[1,"cloud-nodes-details__symbol-row"],["appearance","fill",1,"cloud-nodes-details__field","cloud-nodes-details__field--flex"],["matInput","","type","text","placeholder","Symbol",3,"input","value"],["mat-button","",1,"cloud-nodes-details__symbol-btn",3,"click"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],[3,"selectionChange","value"],[3,"value"],["matInput","","type","text","placeholder","Console host",3,"input","value"],["matInput","","type","number","placeholder","Console port",3,"input","value"],["matInput","","type","text","placeholder","Console HTTP path",3,"input","value"],[3,"removed"],["matChipRemove",""],[1,"cloud-nodes-details__port-item"],[1,"cloud-nodes-details__add-row"],["mat-button","",1,"cloud-nodes-details__add-btn",3,"click"],["matInput","","type","text","placeholder","TAP interface",3,"input","value"],["mat-table","",1,"cloud-nodes-details__table",3,"dataSource"],["matInput","","type","text","placeholder","Name",3,"input","value"],["matInput","","type","number","min","1","max","65535","placeholder","Local port",3,"input","value"],["matInput","","type","text","placeholder","Remote host",3,"input","value"],["matInput","","type","number","min","1","max","65535","placeholder","Remote port",3,"input","value"],["matColumnDef","name"],["mat-header-cell","","matHeaderCellDef",""],["mat-cell","","matCellDef","let element"],["matColumnDef","lport"],["matColumnDef","rhost"],["matColumnDef","rport"],["mat-header-row","","matHeaderRowDef","displayedColumns"],["mat-row","","matRowDef","let row; columns: displayedColumns;"],["appearance","fill",1,"preferences__usage-field--full"],["matInput","","type","text",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"header",2),A(2,ice,3,0,"button",3),s(3,"h1",4),d(4,"Cloud node template configuration"),l()(),A(5,gce,41,10,"main",5),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.cloudNodeTemplate?5:-1))},dependencies:[Z,nt,Ue,He,Ci,at,te,se,$,le,ze,Me,ke,lt,we,Te,Mt,At,St,ti,zn,mi,pi,di,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.cloud-nodes-details__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.cloud-nodes-details__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.cloud-nodes-details__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.cloud-nodes-details__title[_ngcontent-%COMP%]{flex:1;font-size:28px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.cloud-nodes-details__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.cloud-nodes-details--hidden[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.cloud-nodes-details__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);margin-bottom:16px}.cloud-nodes-details__section-header[_ngcontent-%COMP%]{padding:16px 24px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color .2s ease;border-bottom:1px solid color-mix(in srgb,var(--mat-sys-outline) 30%,transparent)}.cloud-nodes-details__section-header[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.cloud-nodes-details__section-title[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.cloud-nodes-details__expand-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);transition:transform .2s ease}.cloud-nodes-details__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px;padding:16px 24px 24px}.cloud-nodes-details__field[_ngcontent-%COMP%]{width:100%}.cloud-nodes-details__field--flex[_ngcontent-%COMP%]{flex:1}.cloud-nodes-details__field--full[_ngcontent-%COMP%]{width:100%;padding:0}.cloud-nodes-details__symbol-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.cloud-nodes-details__symbol-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.cloud-nodes-details__port-item[_ngcontent-%COMP%]{padding:8px 0;font-size:14px;color:var(--mat-sys-on-surface-variant)}.cloud-nodes-details__add-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.cloud-nodes-details__add-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.cloud-nodes-details__table[_ngcontent-%COMP%]{width:100%;background:transparent}.cloud-nodes-details__table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.cloud-nodes-details__table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}.cloud-nodes-details__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.cloud-nodes-details__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.cloud-nodes-details__save-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.cloud-nodes-details__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.cloud-nodes-details__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.cloud-nodes-details__title[_ngcontent-%COMP%]{font-size:22px}.cloud-nodes-details__content[_ngcontent-%COMP%]{padding:0 16px 16px}.cloud-nodes-details__section-header[_ngcontent-%COMP%]{padding:12px 16px}.cloud-nodes-details__form[_ngcontent-%COMP%]{padding:16px}.cloud-nodes-details__symbol-row[_ngcontent-%COMP%], .cloud-nodes-details__add-row[_ngcontent-%COMP%]{flex-direction:column}.cloud-nodes-details__symbol-btn[_ngcontent-%COMP%], .cloud-nodes-details__add-btn[_ngcontent-%COMP%]{width:100%}.cloud-nodes-details__actions[_ngcontent-%COMP%]{flex-direction:column}.cloud-nodes-details__cancel-btn[_ngcontent-%COMP%], .cloud-nodes-details__save-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var Tl=(()=>{class t{httpController;newTemplateCreated=new Le;constructor(e){this.httpController=e}list(e){return this.httpController.get(e,"/templates")}deleteTemplate(e,n){return this.httpController.delete(e,`/templates/${n}`,{observe:"body"})}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var ui=(()=>{class t{controller=oe(void 0);deleteEvent=new ve;templateService=f(Tl);dialog=f(Je);toasterService=f(fe);deleteItem(e,n){this.dialog.open(tp,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:{templateName:e},autoFocus:!1,disableClose:!0}).afterClosed().subscribe(r=>{r&&this.templateService.deleteTemplate(this.controller(),n).subscribe(a=>{this.deleteEvent.emit(n),this.toasterService.success(`Template ${e} deleted.`)})})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-delete-template"]],inputs:{controller:[1,"controller"]},outputs:{deleteEvent:"deleteEvent"},decls:0,vars:0,template:function(n,o){},dependencies:[Ce],encapsulation:2,changeDetection:0})}return t})();var ur=(()=>{class t{textMessage=oe(void 0);emptyTemplatesListMessage=ri(()=>this.textMessage()??"Empty templates list");static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-empty-templates-list"]],inputs:{textMessage:[1,"textMessage"]},decls:4,vars:1,consts:[[1,"default-content"],[1,"matCard"],[1,"header"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"mat-card",1)(2,"h6",2),d(3),l()()()),n&2&&(u(3),X(" ",o.emptyTemplatesListMessage()," "))},dependencies:[Dt,Tn],styles:[".header[_ngcontent-%COMP%]{text-align:center}"],changeDetection:0})}return t})();var _ce=(t,i)=>i.template_id;function vce(t,i){if(t&1&&(s(0,"button",4)(1,"mat-icon"),d(2,"arrow_back"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences/builtin")}}function bce(t,i){if(t&1&&(s(0,"button",6)(1,"mat-icon"),d(2,"add_circle_outline"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences/builtin/cloud-nodes/addtemplate")}}function Cce(t,i){t&1&&F(0,"app-empty-templates-list")}function xce(t,i){if(t&1){let e=j();s(0,"div",10)(1,"mat-icon",11),d(2,"cloud"),l(),s(3,"span",12),d(4),l(),s(5,"button",13),v("click",function(o){return o.stopPropagation()}),s(6,"mat-icon"),d(7,"more_vert"),l()(),s(8,"mat-menu",14,1)(10,"button",15),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.deleteTemplate(o))}),s(11,"mat-icon"),d(12,"delete"),l(),s(13,"span"),d(14,"Delete"),l()(),s(15,"a",16)(16,"mat-icon"),d(17,"edit"),l(),s(18,"span"),d(19,"Edit"),l()()()()}if(t&2){let e=i.$implicit,n=Re(9);x("routerLink",e.template_id),u(4),U(e.name),u(),x("matMenuTriggerFor",n),u(10),x("routerLink",e.template_id)}}function yce(t,i){if(t&1&&(s(0,"nav",8),J(1,xce,20,4,"div",10,_ce),l()),t&2){let e=b();u(),ee(e.cloudNodesTemplates)}}var dS=(()=>{class t{route=f(Ye);controllerService=f(We);builtInTemplatesService=f(Rr);cd=f(K);controller;cloudNodesTemplates=[];deleteComponent=Ut(ui);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck(),this.getTemplates()})}getTemplates(){this.builtInTemplatesService.getTemplates(this.controller).subscribe(e=>{this.cloudNodesTemplates=e.filter(n=>n.template_type==="cloud"&&!n.builtin),this.cd.markForCheck()})}deleteTemplate(e){this.deleteComponent().deleteItem(e.name,e.template_id)}onDeleteEvent(){this.getTemplates()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-cloud-nodes-templates"]],viewQuery:function(n,o){n&1&&tn(o.deleteComponent,ui,5),n&2&&nn()},decls:11,vars:5,consts:[["deleteComponent",""],["menu","matMenu"],[1,"cloud-nodes"],[1,"cloud-nodes__header"],["mat-icon-button","",1,"cloud-nodes__back-btn",3,"routerLink"],[1,"cloud-nodes__title"],["matTooltip","Add cloud node template","matTooltipClass","custom-tooltip","mat-icon-button","",1,"cloud-nodes__add-btn",3,"routerLink"],[1,"cloud-nodes__content"],[1,"cloud-nodes__list"],[3,"deleteEvent","controller"],[1,"cloud-nodes__list-item",3,"routerLink"],[1,"cloud-nodes__list-icon"],[1,"cloud-nodes__list-name"],["mat-icon-button","",1,"cloud-nodes__menu-btn",3,"click","matMenuTriggerFor"],["xPosition","before"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"routerLink"]],template:function(n,o){n&1&&(s(0,"div",2)(1,"header",3),A(2,vce,3,1,"button",4),s(3,"h1",5),d(4,"Cloud nodes templates"),l(),A(5,bce,3,1,"button",6),l(),s(6,"main",7),A(7,Cce,1,0,"app-empty-templates-list"),A(8,yce,3,0,"nav",8),l()(),s(9,"app-delete-template",9,0),v("deleteEvent",function(){return o.onDeleteEvent()}),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.controller?5:-1),u(2),O(o.cloudNodesTemplates.length?-1:7),u(),O(o.cloudNodesTemplates.length?8:-1),u(),x("controller",o.controller))},dependencies:[Z,at,cn,$,ze,te,se,Ri,Qe,Fn,ot,kn,Gt,Kt,ui,ur],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.cloud-nodes__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.cloud-nodes__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.cloud-nodes__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.cloud-nodes__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.cloud-nodes__add-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-primary);transition:all .2s cubic-bezier(.4,0,.2,1)}.cloud-nodes__add-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent)}.cloud-nodes__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.cloud-nodes__list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.cloud-nodes__list-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;text-decoration:none;color:var(--mat-sys-on-surface)}.cloud-nodes__list-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.cloud-nodes__list-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.cloud-nodes__list-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.cloud-nodes__list-name[_ngcontent-%COMP%]{flex:1;font-size:16px;font-weight:500}.cloud-nodes__menu-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);flex-shrink:0}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.cloud-nodes__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.cloud-nodes__back-btn[_ngcontent-%COMP%], .cloud-nodes__add-btn[_ngcontent-%COMP%]{width:44px;height:44px}.cloud-nodes__title[_ngcontent-%COMP%]{font-size:24px}.cloud-nodes__content[_ngcontent-%COMP%]{padding:0 16px 16px}.cloud-nodes__list-item[_ngcontent-%COMP%]{padding:14px 16px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();function Sce(t,i){if(t&1){let e=j();s(0,"button",15),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}var mS=(()=>{class t{route=f(Ye);controllerService=f(We);builtInTemplatesService=f(Rr);router=f(ut);toasterService=f(fe);templateMocksService=f(Fr);formBuilder=f(jt);computeService=f(Lo);cd=f(K);controller;templateName="";formGroup;isLocalComputerChosen=!0;constructor(){this.formGroup=this.formBuilder.group({templateName:new re("",be.required),numberOfPorts:new re(8,be.required)})}ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck()})}setControllerType(e){e==="local"&&(this.isLocalComputerChosen=!0)}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","builtin","ethernet-hubs"])}addTemplate(){if(this.formGroup.invalid)this.toasterService.error("Fill all required fields");else{let e;this.templateMocksService.getEthernetHubTemplate().subscribe(n=>{e=n}),e.template_id=Ti(),e.name=this.formGroup.get("templateName").value,e.compute_id="local";for(let n=0;n<this.formGroup.get("numberOfPorts").value;n++)e.ports_mapping.push({name:`Ethernet${n}`,port_number:n});this.builtInTemplatesService.addTemplate(this.controller,e).subscribe({next:()=>{this.goBack()},error:n=>{let o=n.error?.message||n.message||"Failed to add ethernet hub template";this.toasterService.error(o),this.cd.markForCheck()}})}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-ethernet-hubs-add-template"]],decls:24,vars:3,consts:[[1,"ethernet-hub-add"],[1,"ethernet-hub-add__header"],["mat-icon-button","",1,"ethernet-hub-add__back-btn"],[1,"ethernet-hub-add__title"],[1,"ethernet-hub-add__content"],[1,"ethernet-hub-add__form-card"],[1,"ethernet-hub-add__radio-group"],["value","1",1,"ethernet-hub-add__radio",3,"click","checked"],[1,"ethernet-hub-add__form",3,"formGroup"],["appearance","fill",1,"ethernet-hub-add__field"],["formControlName","templateName","matInput","","type","text","placeholder","Template name"],["formControlName","numberOfPorts","matInput","","type","number","min","0","placeholder","Number of ports"],[1,"ethernet-hub-add__actions"],["mat-button","",1,"ethernet-hub-add__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"ethernet-hub-add__submit-btn",3,"click"],["mat-icon-button","",1,"ethernet-hub-add__back-btn",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1),A(2,Sce,3,0,"button",2),s(3,"h1",3),d(4,"New Ethernet hub template"),l()(),s(5,"main",4)(6,"section",5)(7,"mat-radio-group",6)(8,"mat-radio-button",7),v("click",function(){return o.setControllerType("local")}),d(9," Run the Ethernet Hub locally "),l()(),s(10,"form",8)(11,"mat-form-field",9)(12,"mat-label"),d(13,"Template name"),l(),F(14,"input",10),l(),s(15,"mat-form-field",9)(16,"mat-label"),d(17,"Number of ports"),l(),F(18,"input",11),l()()(),s(19,"div",12)(20,"button",13),v("click",function(){return o.goBack()}),d(21,"Cancel"),l(),s(22,"button",14),v("click",function(){return o.addTemplate()}),d(23," Add template "),l()()()()),n&2&&(u(2),O(o.controller?2:-1),u(6),x("checked",!0),u(2),x("formGroup",o.formGroup))},dependencies:[Z,nt,Ue,vt,xi,mt,He,Ro,ct,pt,bt,at,te,se,$,le,ze,Dt,go,Io,ko,Me,ke,lt,we,Te],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.ethernet-hub-add__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.ethernet-hub-add__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.ethernet-hub-add__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.ethernet-hub-add__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.ethernet-hub-add__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.ethernet-hub-add__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);padding:24px}.ethernet-hub-add__radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.ethernet-hub-add__radio[_ngcontent-%COMP%]{font-size:16px}.ethernet-hub-add__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.ethernet-hub-add__field[_ngcontent-%COMP%]{width:100%}.ethernet-hub-add__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.ethernet-hub-add__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.ethernet-hub-add__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.ethernet-hub-add__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.ethernet-hub-add__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.ethernet-hub-add__title[_ngcontent-%COMP%]{font-size:24px}.ethernet-hub-add__content[_ngcontent-%COMP%]{padding:0 16px 16px}.ethernet-hub-add__form-card[_ngcontent-%COMP%]{padding:16px}.ethernet-hub-add__actions[_ngcontent-%COMP%]{flex-direction:column}.ethernet-hub-add__cancel-btn[_ngcontent-%COMP%], .ethernet-hub-add__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}"],changeDetection:0})}return t})();function wce(t,i){if(t&1){let e=j();s(0,"button",6),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function Mce(t,i){if(t&1){let e=j();s(0,"mat-chip",27),v("removed",function(){let o=D(e).$implicit,r=b(3);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",28),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function kce(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function Tce(t,i){if(t&1){let e=j();s(0,"form",11)(1,"mat-form-field",16)(2,"mat-label"),d(3,"Template name"),l(),s(4,"input",17),v("input",function(o){D(e);let r=b(2);return P(r.templateName.set(o.target.value))}),l()(),s(5,"mat-form-field",16)(6,"mat-label"),d(7,"Default name format"),l(),s(8,"input",18),v("input",function(o){D(e);let r=b(2);return P(r.defaultName.set(o.target.value))}),l()(),s(9,"div",19)(10,"mat-form-field",20)(11,"mat-label"),d(12,"Symbol"),l(),s(13,"input",21),v("input",function(o){D(e);let r=b(2);return P(r.symbol.set(o.target.value))}),l()(),s(14,"button",22),v("click",function(){D(e);let o=b(2);return P(o.chooseSymbol())}),d(15,"Choose symbol"),l()(),s(16,"mat-form-field",16)(17,"mat-label"),d(18,"Tags"),l(),s(19,"mat-chip-grid",null,0),J(21,Mce,4,1,"mat-chip",null,Fe),l(),s(23,"input",23),v("matChipInputTokenEnd",function(o){D(e);let r=b(2);return P(r.addTag(o))}),l()(),s(24,"mat-form-field",16)(25,"mat-label"),d(26,"Category"),l(),s(27,"mat-select",24),v("selectionChange",function(o){D(e);let r=b(2);return P(r.category.set(o.value))}),J(28,kce,2,2,"mat-option",25,Ii),l()(),s(30,"mat-form-field",16)(31,"mat-label"),d(32,"Number of ports"),l(),s(33,"input",26),v("input",function(o){D(e);let r=b(2);return P(r.numberOfPorts.set(+o.target.value))}),l()()()}if(t&2){let e=Re(20),n=b(2);u(4),x("value",n.templateName()),u(4),x("value",n.defaultName()),u(5),x("value",n.symbol()),u(8),ee(n.tags()),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(4),x("value",n.category()),u(),ee(n.categories),u(5),x("value",n.numberOfPorts())}}function Ece(t,i){if(t&1){let e=j();s(0,"div",12)(1,"mat-form-field",29)(2,"mat-label"),d(3,"Usage notes"),l(),s(4,"textarea",30),v("input",function(o){D(e);let r=b(2);return P(r.usage.set(o.target.value))}),l()()()}if(t&2){let e=b(2);u(4),x("value",e.usage())}}function Dce(t,i){if(t&1){let e=j();s(0,"main",5)(1,"section",7)(2,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("general"))}),s(3,"h3",9),d(4,"General settings"),l(),s(5,"mat-icon",10),d(6),l()(),A(7,Tce,34,7,"form",11),l(),s(8,"section",7)(9,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("usage"))}),s(10,"h3",9),d(11,"Usage"),l(),s(12,"mat-icon",10),d(13),l()(),A(14,Ece,5,1,"div",12),l(),s(15,"div",13)(16,"button",14),v("click",function(){D(e);let o=b();return P(o.goBack())}),d(17,"Cancel"),l(),s(18,"button",15),v("click",function(){D(e);let o=b();return P(o.onSave())}),d(19,"Save"),l()()()}if(t&2){let e=b();u(6),U(e.generalSettingsExpanded()?"expand_less":"expand_more"),u(),O(e.generalSettingsExpanded()?7:-1),u(6),U(e.usageExpanded()?"expand_less":"expand_more"),u(),O(e.usageExpanded()?14:-1)}}var pS=(()=>{class t{route=f(Ye);controllerService=f(We);builtInTemplatesService=f(Rr);toasterService=f(fe);builtInTemplatesConfigurationService=f(Na);router=f(ut);cd=f(K);dialog=f(Je);dialogConfig=f(Ji);controller;ethernetHubTemplate;separatorKeysCodes=[13,188];categories=[];templateName=ae("");defaultName=ae("");symbol=ae("");category=ae("");numberOfPorts=ae(0);tags=ae([]);usage=ae("");generalSettingsExpanded=ae(!1);usageExpanded=ae(!1);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.categories=this.builtInTemplatesConfigurationService.getCategoriesForEthernetHubs(),this.builtInTemplatesService.getTemplate(this.controller,n).subscribe(r=>{this.ethernetHubTemplate=r,this.ethernetHubTemplate.ports_mapping||(this.ethernetHubTemplate.ports_mapping=[]),this.ethernetHubTemplate.tags||(this.ethernetHubTemplate.tags=[]),this.templateName.set(r.name||""),this.defaultName.set(r.default_name_format||""),this.symbol.set(r.symbol||""),this.category.set(r.category||""),this.numberOfPorts.set(r.ports_mapping.length||0),this.tags.set(r.tags||[]),this.usage.set(r.usage||""),this.cd.markForCheck()})})}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","builtin","ethernet-hubs"])}onSave(){this.ethernetHubTemplate.name=this.templateName(),this.ethernetHubTemplate.default_name_format=this.defaultName(),this.ethernetHubTemplate.symbol=this.symbol(),this.ethernetHubTemplate.category=this.category(),this.ethernetHubTemplate.tags=this.tags(),this.ethernetHubTemplate.usage=this.usage();let e=this.numberOfPorts();this.ethernetHubTemplate.ports_mapping=[];for(let n=0;n<e;n++)this.ethernetHubTemplate.ports_mapping.push({name:`Ethernet${n}`,port_number:n});this.builtInTemplatesService.saveTemplate(this.controller,this.ethernetHubTemplate).subscribe(n=>{this.toasterService.success("Changes saved")})}chooseSymbol(){let e=this.dialogConfig.openConfig("templateSymbol",{autoFocus:!1,disableClose:!1,data:{controller:this.controller,symbol:this.symbol()}});this.dialog.open(pr,e).afterClosed().subscribe(o=>{o&&this.symbol.set(o)})}addTag(e){let n=(e.value||"").trim(),o=this.tags();n&&this.tags.set([...o,n]),e.chipInput&&e.chipInput.clear()}removeTag(e){let n=this.tags(),o=n.indexOf(e);if(o>=0){let r=[...n];r.splice(o,1),this.tags.set(r)}}toggleSection(e){switch(e){case"general":this.generalSettingsExpanded.set(!this.generalSettingsExpanded());break;case"usage":this.usageExpanded.set(!this.usageExpanded());break}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-ethernet-hubs-template-details"]],inputs:{templateName:[1,"templateName"],defaultName:[1,"defaultName"],symbol:[1,"symbol"],category:[1,"category"],numberOfPorts:[1,"numberOfPorts"],tags:[1,"tags"],usage:[1,"usage"],generalSettingsExpanded:[1,"generalSettingsExpanded"],usageExpanded:[1,"usageExpanded"]},outputs:{templateName:"templateNameChange",defaultName:"defaultNameChange",symbol:"symbolChange",category:"categoryChange",numberOfPorts:"numberOfPortsChange",tags:"tagsChange",usage:"usageChange",generalSettingsExpanded:"generalSettingsExpandedChange",usageExpanded:"usageExpandedChange"},decls:6,vars:2,consts:[["chipList",""],[1,"ethernet-hub-details"],[1,"ethernet-hub-details__header"],["mat-icon-button","",1,"ethernet-hub-details__back-btn"],[1,"ethernet-hub-details__title"],[1,"ethernet-hub-details__content"],["mat-icon-button","",1,"ethernet-hub-details__back-btn",3,"click"],[1,"ethernet-hub-details__form-card"],[1,"ethernet-hub-details__section-header",3,"click"],[1,"ethernet-hub-details__section-title"],[1,"ethernet-hub-details__expand-icon"],[1,"ethernet-hub-details__form"],[1,"preferences__usage-form"],[1,"ethernet-hub-details__actions"],["mat-button","",1,"ethernet-hub-details__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"ethernet-hub-details__save-btn",3,"click"],["appearance","fill",1,"ethernet-hub-details__field"],["matInput","","type","text","placeholder","Template name",3,"input","value"],["matInput","","type","text","placeholder","Default name format",3,"input","value"],[1,"ethernet-hub-details__symbol-row"],["appearance","fill",1,"ethernet-hub-details__field","ethernet-hub-details__field--flex"],["matInput","","type","text","placeholder","Symbol",3,"input","value"],["mat-button","",1,"ethernet-hub-details__symbol-btn",3,"click"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],[3,"selectionChange","value"],[3,"value"],["matInput","","type","number","placeholder","Number of ports",3,"input","value"],[3,"removed"],["matChipRemove",""],["appearance","fill",1,"preferences__usage-field--full"],["matInput","","type","text",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"header",2),A(2,wce,3,0,"button",3),s(3,"h1",4),d(4,"Ethernet hub template configuration"),l()(),A(5,Dce,20,4,"main",5),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.ethernetHubTemplate?5:-1))},dependencies:[Z,nt,Ue,He,Ci,at,te,se,$,le,ze,Me,ke,lt,we,Te,Mt,At,St,ti,zn,mi,pi,di],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.ethernet-hub-details__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.ethernet-hub-details__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.ethernet-hub-details__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.ethernet-hub-details__title[_ngcontent-%COMP%]{flex:1;font-size:28px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.ethernet-hub-details__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.ethernet-hub-details--hidden[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.ethernet-hub-details__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);margin-bottom:16px}.ethernet-hub-details__section-header[_ngcontent-%COMP%]{padding:16px 24px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color .2s ease;border-bottom:1px solid color-mix(in srgb,var(--mat-sys-outline) 30%,transparent)}.ethernet-hub-details__section-header[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.ethernet-hub-details__section-title[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.ethernet-hub-details__expand-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);transition:transform .2s ease}.ethernet-hub-details__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px;padding:16px 24px 24px}.ethernet-hub-details__field[_ngcontent-%COMP%]{width:100%}.ethernet-hub-details__field--flex[_ngcontent-%COMP%]{flex:1}.ethernet-hub-details__symbol-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.ethernet-hub-details__symbol-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.ethernet-hub-details__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.ethernet-hub-details__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.ethernet-hub-details__save-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.ethernet-hub-details__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.ethernet-hub-details__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.ethernet-hub-details__title[_ngcontent-%COMP%]{font-size:22px}.ethernet-hub-details__content[_ngcontent-%COMP%]{padding:0 16px 16px}.ethernet-hub-details__section-header[_ngcontent-%COMP%]{padding:12px 16px}.ethernet-hub-details__form[_ngcontent-%COMP%]{padding:16px}.ethernet-hub-details__symbol-row[_ngcontent-%COMP%], .ethernet-hub-details__actions[_ngcontent-%COMP%]{flex-direction:column}.ethernet-hub-details__cancel-btn[_ngcontent-%COMP%], .ethernet-hub-details__save-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var Pce=(t,i)=>i.template_id;function Ice(t,i){if(t&1&&(s(0,"button",4)(1,"mat-icon"),d(2,"arrow_back"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences/builtin")}}function Ace(t,i){if(t&1&&(s(0,"button",6)(1,"mat-icon"),d(2,"add_circle_outline"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences/builtin/ethernet-hubs/addtemplate")}}function Oce(t,i){t&1&&F(0,"app-empty-templates-list")}function Nce(t,i){if(t&1){let e=j();s(0,"div",10)(1,"mat-icon",11),d(2,"device_hub"),l(),s(3,"span",12),d(4),l(),s(5,"button",13),v("click",function(o){return o.stopPropagation()}),s(6,"mat-icon"),d(7,"more_vert"),l()(),s(8,"mat-menu",14,1)(10,"button",15),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.deleteTemplate(o))}),s(11,"mat-icon"),d(12,"delete"),l(),s(13,"span"),d(14,"Delete"),l()(),s(15,"a",16)(16,"mat-icon"),d(17,"edit"),l(),s(18,"span"),d(19,"Edit"),l()()()()}if(t&2){let e=i.$implicit,n=Re(9);x("routerLink",e.template_id),u(4),U(e.name),u(),x("matMenuTriggerFor",n),u(10),x("routerLink",e.template_id)}}function Rce(t,i){if(t&1&&(s(0,"nav",8),J(1,Nce,20,4,"div",10,Pce),l()),t&2){let e=b();u(),ee(e.ethernetHubsTemplates)}}var uS=(()=>{class t{route=f(Ye);controllerService=f(We);builtInTemplatesService=f(Rr);cd=f(K);controller;ethernetHubsTemplates=[];deleteComponent=Ut(ui);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck(),this.getTemplates()})}getTemplates(){this.builtInTemplatesService.getTemplates(this.controller).subscribe(e=>{this.ethernetHubsTemplates=e.filter(n=>n.template_type==="ethernet_hub"&&!n.builtin),this.cd.markForCheck()})}deleteTemplate(e){this.deleteComponent().deleteItem(e.name,e.template_id)}onDeleteEvent(){this.getTemplates()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-ethernet-hubs-templates"]],viewQuery:function(n,o){n&1&&tn(o.deleteComponent,ui,5),n&2&&nn()},decls:11,vars:5,consts:[["deleteComponent",""],["menu","matMenu"],[1,"ethernet-hubs"],[1,"ethernet-hubs__header"],["mat-icon-button","",1,"ethernet-hubs__back-btn",3,"routerLink"],[1,"ethernet-hubs__title"],["matTooltip","Add Ethernet hub template","matTooltipClass","custom-tooltip","mat-icon-button","",1,"ethernet-hubs__add-btn",3,"routerLink"],[1,"ethernet-hubs__content"],[1,"ethernet-hubs__list"],[3,"deleteEvent","controller"],[1,"ethernet-hubs__list-item",3,"routerLink"],[1,"ethernet-hubs__list-icon"],[1,"ethernet-hubs__list-name"],["mat-icon-button","",1,"ethernet-hubs__menu-btn",3,"click","matMenuTriggerFor"],["xPosition","before"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"routerLink"]],template:function(n,o){n&1&&(s(0,"div",2)(1,"header",3),A(2,Ice,3,1,"button",4),s(3,"h1",5),d(4,"Ethernet hubs templates"),l(),A(5,Ace,3,1,"button",6),l(),s(6,"main",7),A(7,Oce,1,0,"app-empty-templates-list"),A(8,Rce,3,0,"nav",8),l()(),s(9,"app-delete-template",9,0),v("deleteEvent",function(){return o.onDeleteEvent()}),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.controller?5:-1),u(2),O(o.ethernetHubsTemplates.length?-1:7),u(),O(o.ethernetHubsTemplates.length?8:-1),u(),x("controller",o.controller))},dependencies:[Z,at,cn,$,ze,te,se,Ri,Qe,Fn,ot,kn,Gt,Kt,ui,ur],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.ethernet-hubs__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.ethernet-hubs__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.ethernet-hubs__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.ethernet-hubs__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.ethernet-hubs__add-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-primary);transition:all .2s cubic-bezier(.4,0,.2,1)}.ethernet-hubs__add-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent)}.ethernet-hubs__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.ethernet-hubs__list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.ethernet-hubs__list-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;text-decoration:none;color:var(--mat-sys-on-surface)}.ethernet-hubs__list-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.ethernet-hubs__list-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.ethernet-hubs__list-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.ethernet-hubs__list-name[_ngcontent-%COMP%]{flex:1;font-size:16px;font-weight:500}.ethernet-hubs__menu-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);flex-shrink:0}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.ethernet-hubs__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.ethernet-hubs__back-btn[_ngcontent-%COMP%], .ethernet-hubs__add-btn[_ngcontent-%COMP%]{width:44px;height:44px}.ethernet-hubs__title[_ngcontent-%COMP%]{font-size:24px}.ethernet-hubs__content[_ngcontent-%COMP%]{padding:0 16px 16px}.ethernet-hubs__list-item[_ngcontent-%COMP%]{padding:14px 16px}}"],changeDetection:0})}return t})();function Fce(t,i){if(t&1){let e=j();s(0,"button",15),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}var hS=(()=>{class t{route=f(Ye);controllerService=f(We);builtInTemplatesService=f(Rr);router=f(ut);toasterService=f(fe);formBuilder=f(jt);cd=f(K);controller;formGroup;isLocalComputerChosen=!0;constructor(){this.formGroup=this.formBuilder.group({templateName:new re("",be.required),numberOfPorts:new re(8,be.required)})}ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck()})}setControllerType(e){e==="local"&&(this.isLocalComputerChosen=!0)}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","builtin","ethernet-switches"])}addTemplate(){if(this.formGroup.invalid)this.toasterService.error("Fill all required fields");else{let e={template_id:Ti(),builtin:!1,name:this.formGroup.get("templateName").value,compute_id:"local",template_type:"ethernet_switch",category:"switch",console_type:"none",default_name_format:"Switch{0}",symbol:"ethernet_switch",ports_mapping:[],tags:[],usage:""},n=this.formGroup.get("numberOfPorts").value;for(let o=0;o<n;o++)e.ports_mapping.push({name:`Ethernet${o}`,port_number:o,ethertype:"0x8100",type:"access",vlan:1});this.builtInTemplatesService.addTemplate(this.controller,e).subscribe({next:()=>{this.toasterService.success("Template added successfully"),this.goBack()},error:o=>{let r=o.error?.message||o.message||"Failed to add ethernet switch template";this.toasterService.error(r),this.cd.markForCheck()}})}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-ethernet-switches-add-template"]],decls:24,vars:3,consts:[[1,"ethernet-switch-add"],[1,"ethernet-switch-add__header"],["mat-icon-button","",1,"ethernet-switch-add__back-btn"],[1,"ethernet-switch-add__title"],[1,"ethernet-switch-add__content"],[1,"ethernet-switch-add__form-card"],[1,"ethernet-switch-add__radio-group"],["value","1",1,"ethernet-switch-add__radio",3,"click","checked"],[1,"ethernet-switch-add__form",3,"formGroup"],["appearance","fill",1,"ethernet-switch-add__field"],["formControlName","templateName","matInput","","type","text","placeholder","Template name"],["formControlName","numberOfPorts","matInput","","type","number","min","0","placeholder","Number of ports"],[1,"ethernet-switch-add__actions"],["mat-button","",1,"ethernet-switch-add__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"ethernet-switch-add__submit-btn",3,"click"],["mat-icon-button","",1,"ethernet-switch-add__back-btn",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1),A(2,Fce,3,0,"button",2),s(3,"h1",3),d(4,"New Ethernet switch template"),l()(),s(5,"main",4)(6,"section",5)(7,"mat-radio-group",6)(8,"mat-radio-button",7),v("click",function(){return o.setControllerType("local")}),d(9," Run the Ethernet switch locally "),l()(),s(10,"form",8)(11,"mat-form-field",9)(12,"mat-label"),d(13,"Template name"),l(),F(14,"input",10),l(),s(15,"mat-form-field",9)(16,"mat-label"),d(17,"Number of ports"),l(),F(18,"input",11),l()()(),s(19,"div",12)(20,"button",13),v("click",function(){return o.goBack()}),d(21,"Cancel"),l(),s(22,"button",14),v("click",function(){return o.addTemplate()}),d(23," Add template "),l()()()()),n&2&&(u(2),O(o.controller?2:-1),u(6),x("checked",!0),u(2),x("formGroup",o.formGroup))},dependencies:[Z,nt,Ue,vt,xi,mt,He,Ro,ct,pt,bt,at,te,se,$,le,ze,go,Io,ko,Me,ke,lt,we,Te],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.ethernet-switch-add__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.ethernet-switch-add__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.ethernet-switch-add__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.ethernet-switch-add__title[_ngcontent-%COMP%]{flex:1;font-size:28px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.ethernet-switch-add__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.ethernet-switch-add__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);padding:24px}.ethernet-switch-add__radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.ethernet-switch-add__radio[_ngcontent-%COMP%]{font-size:16px}.ethernet-switch-add__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.ethernet-switch-add__field[_ngcontent-%COMP%]{width:100%}.ethernet-switch-add__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.ethernet-switch-add__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.ethernet-switch-add__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.ethernet-switch-add__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.ethernet-switch-add__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.ethernet-switch-add__title[_ngcontent-%COMP%]{font-size:22px}.ethernet-switch-add__content[_ngcontent-%COMP%]{padding:0 16px 16px}.ethernet-switch-add__form-card[_ngcontent-%COMP%]{padding:16px}.ethernet-switch-add__actions[_ngcontent-%COMP%]{flex-direction:column}.ethernet-switch-add__cancel-btn[_ngcontent-%COMP%], .ethernet-switch-add__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}"],changeDetection:0})}return t})();function Lce(t,i){t&1&&(s(0,"th",19),d(1,"Port number"),l())}function Bce(t,i){if(t&1&&(s(0,"td",20),d(1),l()),t&2){let e=i.$implicit;u(),U(e.port_number)}}function Vce(t,i){t&1&&(s(0,"th",19),d(1,"VLAN"),l())}function zce(t,i){if(t&1&&(s(0,"td",20),d(1),l()),t&2){let e=i.$implicit;u(),U(e.vlan)}}function jce(t,i){t&1&&(s(0,"th",19),d(1,"Type"),l())}function $ce(t,i){if(t&1&&(s(0,"td",20),d(1),l()),t&2){let e=i.$implicit;u(),U(e.type)}}function Hce(t,i){t&1&&(s(0,"th",19),d(1,"EtherType"),l())}function Uce(t,i){if(t&1&&(s(0,"td",20),d(1),l()),t&2){let e=i.$implicit;u(),U(e.ethertype)}}function Gce(t,i){t&1&&(s(0,"th",19),d(1,"Actions"),l())}function Wce(t,i){if(t&1){let e=j();s(0,"td",20)(1,"button",21),v("click",function(){let o=D(e).$implicit,r=b();return P(r.delete(o))}),s(2,"mat-icon",22),d(3,"delete"),l()()()}}function qce(t,i){t&1&&F(0,"tr",23)}function Xce(t,i){t&1&&F(0,"tr",24)}function Qce(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Yce(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}var Wd=(()=>{class t{ethernetPorts=[];newPortNumber=ae(0);newPortVlan=ae(1);newPortType=ae("access");newPortEthertype=ae("0x8100");builtInTemplatesConfigurationService=f(Na);toasterService=f(fe);portTypes=me([]);etherTypes=me([]);displayedColumns=["port_number","vlan","type","ethertype","action"];ngOnInit(){this.getConfiguration(),this.newPortNumber.set(this.ethernetPorts.length)}getConfiguration(){this.etherTypes.set(this.builtInTemplatesConfigurationService.getEtherTypesForEthernetSwitches()),this.portTypes.set(this.builtInTemplatesConfigurationService.getPortTypesForEthernetSwitches())}onAdd(){if(this.ethernetPorts.some(o=>o.port_number===this.newPortNumber())){this.toasterService.error(`Port number ${this.newPortNumber()} already exists.`);return}let n={name:"Ethernet"+this.newPortNumber(),port_number:this.newPortNumber(),vlan:this.newPortVlan(),type:this.newPortType(),ethertype:this.newPortEthertype()};this.ethernetPorts.push(n),this.ethernetPorts=[].concat(this.ethernetPorts),this.newPortNumber.set(this.ethernetPorts.length)}delete(e){this.ethernetPorts=this.ethernetPorts.filter(n=>n!==e)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-ports"]],inputs:{ethernetPorts:"ethernetPorts",newPortNumber:[1,"newPortNumber"],newPortVlan:[1,"newPortVlan"],newPortType:[1,"newPortType"],newPortEthertype:[1,"newPortEthertype"]},outputs:{newPortNumber:"newPortNumberChange",newPortVlan:"newPortVlanChange",newPortType:"newPortTypeChange",newPortEthertype:"newPortEthertypeChange"},decls:34,vars:7,consts:[[1,"ports"],["mat-table","",1,"ports__table",3,"dataSource"],["matColumnDef","port_number"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","vlan"],["matColumnDef","type"],["matColumnDef","ethertype"],["matColumnDef","action"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"ports__add-row"],[1,"ports__field"],["matInput","","type","number","min","0","placeholder","Port",3,"input","value"],["matInput","","type","number","min","1","max","65535","placeholder","VLAN",3,"input","value"],["placeholder","Type",3,"selectionChange","value"],[3,"value"],["placeholder","EtherType",3,"selectionChange","value"],["mat-button","",1,"ports__add-btn",3,"click"],["mat-header-cell",""],["mat-cell",""],["mat-icon-button","","matTooltip","Delete port","matTooltipClass","custom-tooltip",3,"click"],["aria-label","Delete port"],["mat-header-row",""],["mat-row",""]],template:function(n,o){n&1&&(s(0,"div",0)(1,"table",1),qe(2,2),Ae(3,Lce,2,0,"th",3)(4,Bce,2,1,"td",4),Xe(),qe(5,5),Ae(6,Vce,2,0,"th",3)(7,zce,2,1,"td",4),Xe(),qe(8,6),Ae(9,jce,2,0,"th",3)(10,$ce,2,1,"td",4),Xe(),qe(11,7),Ae(12,Hce,2,0,"th",3)(13,Uce,2,1,"td",4),Xe(),qe(14,8),Ae(15,Gce,2,0,"th",3)(16,Wce,4,0,"td",4),Xe(),Ae(17,qce,1,0,"tr",9)(18,Xce,1,0,"tr",10),l(),s(19,"div",11)(20,"mat-form-field",12)(21,"input",13),v("input",function(a){return o.newPortNumber.set(+a.target.value)}),l()(),s(22,"mat-form-field",12)(23,"input",14),v("input",function(a){return o.newPortVlan.set(+a.target.value)}),l()(),s(24,"mat-form-field",12)(25,"mat-select",15),v("selectionChange",function(a){return o.newPortType.set(a.value)}),J(26,Qce,2,2,"mat-option",16,Fe),l()(),s(28,"mat-form-field",12)(29,"mat-select",17),v("selectionChange",function(a){return o.newPortEthertype.set(a.value)}),J(30,Yce,2,2,"mat-option",16,Fe),l()(),s(32,"button",18),v("click",function(){return o.onAdd()}),d(33,"Add"),l()()()),n&2&&(u(),x("dataSource",o.ethernetPorts),u(16),x("matHeaderRowDef",o.displayedColumns),u(),x("matRowDefColumns",o.displayedColumns),u(3),x("value",o.newPortNumber()),u(2),x("value",o.newPortVlan()),u(2),x("value",o.newPortType()),u(),ee(o.portTypes()),u(3),x("value",o.newPortEthertype()),u(),ee(o.etherTypes()))},dependencies:[Z,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,$,le,ze,te,se,Me,ke,we,Te,Mt,At,St,Gt,Kt,Jo],styles:[".ports[_ngcontent-%COMP%]{display:block;width:100%;overflow:hidden;flex-shrink:0}.ports__add-row[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;gap:8px;align-items:flex-start;padding:16px 24px}.ports__add-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}@media(max-width:768px){.ports__add-row[_ngcontent-%COMP%]{flex-direction:column;padding:16px}}"],changeDetection:0})}return t})();function Kce(t,i){if(t&1){let e=j();s(0,"button",7),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function Zce(t,i){if(t&1){let e=j();s(0,"mat-chip",28),v("removed",function(){let o=D(e).$implicit,r=b(3);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",29),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function Jce(t,i){if(t&1&&(s(0,"mat-option",27),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function ede(t,i){if(t&1&&(s(0,"mat-option",27),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function tde(t,i){if(t&1){let e=j();s(0,"form",12)(1,"mat-form-field",18)(2,"mat-label"),d(3,"Template name"),l(),s(4,"input",19),v("input",function(o){D(e);let r=b(2);return P(r.templateName.set(o.target.value))}),l()(),s(5,"mat-form-field",18)(6,"mat-label"),d(7,"Default name format"),l(),s(8,"input",20),v("input",function(o){D(e);let r=b(2);return P(r.defaultName.set(o.target.value))}),l()(),s(9,"div",21)(10,"mat-form-field",22)(11,"mat-label"),d(12,"Symbol"),l(),s(13,"input",23),v("input",function(o){D(e);let r=b(2);return P(r.symbol.set(o.target.value))}),l()(),s(14,"button",24),v("click",function(){D(e);let o=b(2);return P(o.chooseSymbol())}),d(15,"Choose symbol"),l()(),s(16,"mat-form-field",18)(17,"mat-label"),d(18,"Tags"),l(),s(19,"mat-chip-grid",null,0),J(21,Zce,4,1,"mat-chip",null,Fe),l(),s(23,"input",25),v("matChipInputTokenEnd",function(o){D(e);let r=b(2);return P(r.addTag(o))}),l()(),s(24,"mat-form-field",18)(25,"mat-label"),d(26,"Category"),l(),s(27,"mat-select",26),v("selectionChange",function(o){D(e);let r=b(2);return P(r.category.set(o.value))}),J(28,Jce,2,2,"mat-option",27,Ii),l()(),s(30,"mat-form-field",18)(31,"mat-label"),d(32,"Console type"),l(),s(33,"mat-select",26),v("selectionChange",function(o){D(e);let r=b(2);return P(r.consoleType.set(o.value))}),J(34,ede,2,2,"mat-option",27,Fe),l()()()}if(t&2){let e=Re(20),n=b(2);u(4),x("value",n.templateName()),u(4),x("value",n.defaultName()),u(5),x("value",n.symbol()),u(8),ee(n.tags()),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(4),x("value",n.category()),u(),ee(n.categories),u(5),x("value",n.consoleType()),u(),ee(n.consoleTypes)}}function nde(t,i){if(t&1&&F(0,"app-ports",13,1),t&2){let e=b(2);x("ethernetPorts",e.ethernetSwitchTemplate.ports_mapping)}}function ide(t,i){if(t&1){let e=j();s(0,"div",14)(1,"mat-form-field",30)(2,"mat-label"),d(3,"Usage notes"),l(),s(4,"textarea",31),v("input",function(o){D(e);let r=b(2);return P(r.usage.set(o.target.value))}),l()()()}if(t&2){let e=b(2);u(4),x("value",e.usage())}}function ode(t,i){if(t&1){let e=j();s(0,"main",6)(1,"section",8)(2,"div",9),v("click",function(){D(e);let o=b();return P(o.toggleSection("general"))}),s(3,"h3",10),d(4,"General settings"),l(),s(5,"mat-icon",11),d(6),l()(),A(7,tde,36,7,"form",12),l(),s(8,"section",8)(9,"div",9),v("click",function(){D(e);let o=b();return P(o.toggleSection("ports"))}),s(10,"h3",10),d(11,"Port settings"),l(),s(12,"mat-icon",11),d(13),l()(),A(14,nde,2,1,"app-ports",13),l(),s(15,"section",8)(16,"div",9),v("click",function(){D(e);let o=b();return P(o.toggleSection("usage"))}),s(17,"h3",10),d(18,"Usage"),l(),s(19,"mat-icon",11),d(20),l()(),A(21,ide,5,1,"div",14),l(),s(22,"div",15)(23,"button",16),v("click",function(){D(e);let o=b();return P(o.goBack())}),d(24,"Cancel"),l(),s(25,"button",17),v("click",function(){D(e);let o=b();return P(o.onSave())}),d(26," Save "),l()()()}if(t&2){let e=b();u(6),U(e.generalSettingsExpanded()?"expand_less":"expand_more"),u(),O(e.generalSettingsExpanded()?7:-1),u(6),U(e.portsExpanded()?"expand_less":"expand_more"),u(),O(e.portsExpanded()?14:-1),u(6),U(e.usageExpanded()?"expand_less":"expand_more"),u(),O(e.usageExpanded()?21:-1)}}var fS=(()=>{class t{portsComponent;route=f(Ye);controllerService=f(We);builtInTemplatesService=f(Rr);toasterService=f(fe);builtInTemplatesConfigurationService=f(Na);router=f(ut);cd=f(K);dialog=f(Je);dialogConfig=f(Ji);controller;ethernetSwitchTemplate;separatorKeysCodes=[13,188];categories=[];consoleTypes=[];templateName=ae("");defaultName=ae("");symbol=ae("");category=ae("");consoleType=ae("");tags=ae([]);usage=ae("");generalSettingsExpanded=ae(!1);portsExpanded=ae(!1);usageExpanded=ae(!1);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.getConfiguration(),this.builtInTemplatesService.getTemplate(this.controller,n).subscribe(r=>{this.ethernetSwitchTemplate=r,this.ethernetSwitchTemplate.tags||(this.ethernetSwitchTemplate.tags=[]),this.templateName.set(r.name||""),this.defaultName.set(r.default_name_format||""),this.symbol.set(r.symbol||""),this.category.set(r.category||""),this.consoleType.set(r.console_type||""),this.tags.set(r.tags||[]),this.usage.set(r.usage||""),this.cd.markForCheck()})})}getConfiguration(){this.categories=this.builtInTemplatesConfigurationService.getCategoriesForEthernetSwitches(),this.consoleTypes=this.builtInTemplatesConfigurationService.getConsoleTypesForEthernetSwitches()}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","builtin","ethernet-switches"])}onSave(){this.ethernetSwitchTemplate.name=this.templateName(),this.ethernetSwitchTemplate.default_name_format=this.defaultName(),this.ethernetSwitchTemplate.symbol=this.symbol(),this.ethernetSwitchTemplate.category=this.category(),this.ethernetSwitchTemplate.console_type=this.consoleType(),this.ethernetSwitchTemplate.tags=this.tags(),this.ethernetSwitchTemplate.usage=this.usage(),this.ethernetSwitchTemplate.ports_mapping=this.portsComponent.ethernetPorts,this.builtInTemplatesService.saveTemplate(this.controller,this.ethernetSwitchTemplate).subscribe(e=>{this.toasterService.success("Changes saved")})}chooseSymbol(){let e=this.dialogConfig.openConfig("templateSymbol",{autoFocus:!1,disableClose:!1,data:{controller:this.controller,symbol:this.symbol()}});this.dialog.open(pr,e).afterClosed().subscribe(o=>{o&&this.symbol.set(o)})}addTag(e){let n=(e.value||"").trim(),o=this.tags();n&&this.tags.set([...o,n]),e.chipInput&&e.chipInput.clear()}removeTag(e){let n=this.tags(),o=n.indexOf(e);if(o>=0){let r=[...n];r.splice(o,1),this.tags.set(r)}}toggleSection(e){switch(e){case"general":this.generalSettingsExpanded.set(!this.generalSettingsExpanded());break;case"ports":this.portsExpanded.set(!this.portsExpanded());break;case"usage":this.usageExpanded.set(!this.usageExpanded());break}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-ethernet-switches-template-details"]],viewQuery:function(n,o){if(n&1&&gn(Wd,5),n&2){let r;gt(r=_t())&&(o.portsComponent=r.first)}},inputs:{templateName:[1,"templateName"],defaultName:[1,"defaultName"],symbol:[1,"symbol"],category:[1,"category"],consoleType:[1,"consoleType"],tags:[1,"tags"],usage:[1,"usage"],generalSettingsExpanded:[1,"generalSettingsExpanded"],portsExpanded:[1,"portsExpanded"],usageExpanded:[1,"usageExpanded"]},outputs:{templateName:"templateNameChange",defaultName:"defaultNameChange",symbol:"symbolChange",category:"categoryChange",consoleType:"consoleTypeChange",tags:"tagsChange",usage:"usageChange",generalSettingsExpanded:"generalSettingsExpandedChange",portsExpanded:"portsExpandedChange",usageExpanded:"usageExpandedChange"},decls:6,vars:2,consts:[["chipList",""],["ports",""],[1,"ethernet-switch-details"],[1,"ethernet-switch-details__header"],["mat-icon-button","",1,"ethernet-switch-details__back-btn"],[1,"ethernet-switch-details__title"],[1,"ethernet-switch-details__content"],["mat-icon-button","",1,"ethernet-switch-details__back-btn",3,"click"],[1,"ethernet-switch-details__form-card"],[1,"ethernet-switch-details__section-header",3,"click"],[1,"ethernet-switch-details__section-title"],[1,"ethernet-switch-details__expand-icon"],[1,"ethernet-switch-details__form"],[3,"ethernetPorts"],[1,"preferences__usage-form"],[1,"ethernet-switch-details__actions"],["mat-button","",1,"ethernet-switch-details__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"ethernet-switch-details__save-btn",3,"click"],["appearance","fill",1,"ethernet-switch-details__field"],["matInput","","type","text","placeholder","Template name",3,"input","value"],["matInput","","type","text","placeholder","Default name format",3,"input","value"],[1,"ethernet-switch-details__symbol-row"],["appearance","fill",1,"ethernet-switch-details__field","ethernet-switch-details__field--flex"],["matInput","","type","text","placeholder","Symbol",3,"input","value"],["mat-button","",1,"ethernet-switch-details__symbol-btn",3,"click"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],[3,"selectionChange","value"],[3,"value"],[3,"removed"],["matChipRemove",""],["appearance","fill",1,"preferences__usage-field--full"],["matInput","","type","text",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",2)(1,"header",3),A(2,Kce,3,0,"button",4),s(3,"h1",5),d(4,"Ethernet switch template configuration"),l()(),A(5,ode,27,6,"main",6),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.ethernetSwitchTemplate?5:-1))},dependencies:[Z,nt,Ue,He,Ci,at,te,se,$,le,ze,Me,ke,lt,we,Te,Mt,At,St,ti,zn,mi,pi,di,Wd],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.ethernet-switch-details__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.ethernet-switch-details__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.ethernet-switch-details__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.ethernet-switch-details__title[_ngcontent-%COMP%]{flex:1;font-size:28px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.ethernet-switch-details__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.ethernet-switch-details--hidden[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.ethernet-switch-details__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);margin-bottom:16px;display:flex;flex-direction:column}.ethernet-switch-details__section-header[_ngcontent-%COMP%]{padding:16px 24px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color .2s ease;border-bottom:1px solid color-mix(in srgb,var(--mat-sys-outline) 30%,transparent)}.ethernet-switch-details__section-header[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.ethernet-switch-details__section-title[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.ethernet-switch-details__expand-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);transition:transform .2s ease}.ethernet-switch-details__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px;padding:16px 24px 24px}.ethernet-switch-details__field[_ngcontent-%COMP%]{width:100%}.ethernet-switch-details__field--flex[_ngcontent-%COMP%]{flex:1}.ethernet-switch-details__symbol-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.ethernet-switch-details__symbol-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.ethernet-switch-details__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.ethernet-switch-details__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.ethernet-switch-details__save-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.ethernet-switch-details__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.ethernet-switch-details__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.ethernet-switch-details__title[_ngcontent-%COMP%]{font-size:22px}.ethernet-switch-details__content[_ngcontent-%COMP%]{padding:0 16px 16px}.ethernet-switch-details__section-header[_ngcontent-%COMP%]{padding:12px 16px}.ethernet-switch-details__form[_ngcontent-%COMP%]{padding:16px}.ethernet-switch-details__symbol-row[_ngcontent-%COMP%], .ethernet-switch-details__actions[_ngcontent-%COMP%]{flex-direction:column}.ethernet-switch-details__cancel-btn[_ngcontent-%COMP%], .ethernet-switch-details__save-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var rde=(t,i)=>i.template_id;function ade(t,i){if(t&1&&(s(0,"button",4)(1,"mat-icon"),d(2,"arrow_back"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences/builtin")}}function sde(t,i){if(t&1&&(s(0,"button",6)(1,"mat-icon"),d(2,"add_circle_outline"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences/builtin/ethernet-switches/addtemplate")}}function lde(t,i){t&1&&F(0,"app-empty-templates-list")}function cde(t,i){if(t&1){let e=j();s(0,"div",10)(1,"mat-icon",11),d(2,"settings_ethernet"),l(),s(3,"span",12),d(4),l(),s(5,"button",13),v("click",function(o){return o.stopPropagation()}),s(6,"mat-icon"),d(7,"more_vert"),l()(),s(8,"mat-menu",14,1)(10,"button",15),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.deleteTemplate(o))}),s(11,"mat-icon"),d(12,"delete"),l(),s(13,"span"),d(14,"Delete"),l()(),s(15,"a",16)(16,"mat-icon"),d(17,"edit"),l(),s(18,"span"),d(19,"Edit"),l()()()()}if(t&2){let e=i.$implicit,n=Re(9);x("routerLink",e.template_id),u(4),U(e.name),u(),x("matMenuTriggerFor",n),u(10),x("routerLink",e.template_id)}}function dde(t,i){if(t&1&&(s(0,"nav",8),J(1,cde,20,4,"div",10,rde),l()),t&2){let e=b();u(),ee(e.ethernetSwitchesTemplates)}}var gS=(()=>{class t{route=f(Ye);controllerService=f(We);builtInTemplatesService=f(Rr);cd=f(K);controller;ethernetSwitchesTemplates=[];deleteComponent=Ut(ui);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck(),this.getTemplates()})}getTemplates(){this.builtInTemplatesService.getTemplates(this.controller).subscribe(e=>{this.ethernetSwitchesTemplates=e.filter(n=>n.template_type==="ethernet_switch"&&!n.builtin),this.cd.markForCheck()})}deleteTemplate(e){this.deleteComponent().deleteItem(e.name,e.template_id)}onDeleteEvent(){this.getTemplates()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-ethernet-switches-templates"]],viewQuery:function(n,o){n&1&&tn(o.deleteComponent,ui,5),n&2&&nn()},decls:11,vars:5,consts:[["deleteComponent",""],["menu","matMenu"],[1,"ethernet-switches"],[1,"ethernet-switches__header"],["mat-icon-button","",1,"ethernet-switches__back-btn",3,"routerLink"],[1,"ethernet-switches__title"],["matTooltip","Add Ethernet switch template","matTooltipClass","custom-tooltip","mat-icon-button","",1,"ethernet-switches__add-btn",3,"routerLink"],[1,"ethernet-switches__content"],[1,"ethernet-switches__list"],[3,"deleteEvent","controller"],[1,"ethernet-switches__list-item",3,"routerLink"],[1,"ethernet-switches__list-icon"],[1,"ethernet-switches__list-name"],["mat-icon-button","",1,"ethernet-switches__menu-btn",3,"click","matMenuTriggerFor"],["xPosition","before"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"routerLink"]],template:function(n,o){n&1&&(s(0,"div",2)(1,"header",3),A(2,ade,3,1,"button",4),s(3,"h1",5),d(4,"Ethernet switches templates"),l(),A(5,sde,3,1,"button",6),l(),s(6,"main",7),A(7,lde,1,0,"app-empty-templates-list"),A(8,dde,3,0,"nav",8),l()(),s(9,"app-delete-template",9,0),v("deleteEvent",function(){return o.onDeleteEvent()}),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.controller?5:-1),u(2),O(o.ethernetSwitchesTemplates.length?-1:7),u(),O(o.ethernetSwitchesTemplates.length?8:-1),u(),x("controller",o.controller))},dependencies:[Z,at,cn,$,ze,te,se,Ri,Qe,Fn,ot,kn,Gt,Kt,ui,ur],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.ethernet-switches__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.ethernet-switches__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.ethernet-switches__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.ethernet-switches__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.ethernet-switches__add-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-primary);transition:all .2s cubic-bezier(.4,0,.2,1)}.ethernet-switches__add-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent)}.ethernet-switches__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.ethernet-switches__list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.ethernet-switches__list-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;text-decoration:none;color:var(--mat-sys-on-surface)}.ethernet-switches__list-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.ethernet-switches__list-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.ethernet-switches__list-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.ethernet-switches__list-name[_ngcontent-%COMP%]{flex:1;font-size:16px;font-weight:500}.ethernet-switches__menu-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);flex-shrink:0}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.ethernet-switches__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.ethernet-switches__back-btn[_ngcontent-%COMP%], .ethernet-switches__add-btn[_ngcontent-%COMP%]{width:44px;height:44px}.ethernet-switches__title[_ngcontent-%COMP%]{font-size:24px}.ethernet-switches__content[_ngcontent-%COMP%]{padding:0 16px 16px}.ethernet-switches__list-item[_ngcontent-%COMP%]{padding:14px 16px}}"],changeDetection:0})}return t})();var mde=["*"];function pde(t,i){t&1&&Yt(0)}var oA=(()=>{class t{_elementRef=f(Lt);constructor(){}focus(){this._elementRef.nativeElement.focus()}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkStepHeader",""]],hostAttrs:["role","tab"]})}return t})(),rA=(()=>{class t{template=f(So);constructor(){}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkStepLabel",""]]})}return t})();var Ku={NUMBER:"number",EDIT:"edit",DONE:"done",ERROR:"error"},ude=new kt("STEPPER_GLOBAL_OPTIONS"),_S=(()=>{class t{_stepperOptions;_stepper=f(Jf);_displayDefaultIndicatorType;stepLabel;_childForms;content;stepControl;get interacted(){return this._interacted()}set interacted(e){this._interacted.set(e)}_interacted=me(!1);interactedStream=new ve;label;errorMessage;ariaLabel;ariaLabelledby;get state(){return this._state()}set state(e){this._state.set(e)}_state=me(void 0);get editable(){return this._editable()}set editable(e){this._editable.set(e)}_editable=me(!0);optional=!1;get completed(){let e=this._completedOverride(),n=this._interacted();return e??(n&&(!this.stepControl||this.stepControl.valid))}set completed(e){this._completedOverride.set(e)}_completedOverride=me(null);index=me(-1);isSelected=ri(()=>this._stepper.selectedIndex===this.index());indicatorType=ri(()=>{let e=this.isSelected(),n=this.completed,o=this._state()??Ku.NUMBER,r=this._editable();return this._showError()&&this.hasError&&!e?Ku.ERROR:this._displayDefaultIndicatorType?!n||e?Ku.NUMBER:r?Ku.EDIT:Ku.DONE:n&&!e?Ku.DONE:n&&e?o:r&&e?Ku.EDIT:o});isNavigable=ri(()=>{let e=this.isSelected();return this.completed||e||!this._stepper.linear});get hasError(){let e=this._customError();return e??this._getDefaultError()}set hasError(e){this._customError.set(e)}_customError=me(null);_getDefaultError(){return this.interacted&&!!this.stepControl?.invalid}constructor(){let e=f(ude,{optional:!0});this._stepperOptions=e||{},this._displayDefaultIndicatorType=this._stepperOptions.displayDefaultIndicatorType!==!1}select(){this._stepper.selected=this}reset(){this._interacted.set(!1),this._completedOverride()!=null&&this._completedOverride.set(!1),this._customError()!=null&&this._customError.set(!1),this.stepControl&&(this._childForms?.forEach(e=>e.resetForm?.()),this.stepControl.reset())}ngOnChanges(){this._stepper._stateChanged()}_markAsInteracted(){this._interacted()||(this._interacted.set(!0),this.interactedStream.emit(this))}_showError(){return this._stepperOptions.showError??this._customError()!=null}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["cdk-step"]],contentQueries:function(n,o,r){if(n&1&&$i(r,rA,5)(r,lR,5),n&2){let a;gt(a=_t())&&(o.stepLabel=a.first),gt(a=_t())&&(o._childForms=a)}},viewQuery:function(n,o){if(n&1&&gn(So,7),n&2){let r;gt(r=_t())&&(o.content=r.first)}},inputs:{stepControl:"stepControl",label:"label",errorMessage:"errorMessage",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],state:"state",editable:[2,"editable","editable",dt],optional:[2,"optional","optional",dt],completed:[2,"completed","completed",dt],hasError:[2,"hasError","hasError",dt]},outputs:{interactedStream:"interacted"},exportAs:["cdkStep"],features:[un],ngContentSelectors:mde,decls:1,vars:0,template:function(n,o){n&1&&(En(),kh(0,pde,1,0,"ng-template"))},encapsulation:2,changeDetection:0})}return t})(),Jf=(()=>{class t{_dir=f(Hr,{optional:!0});_changeDetectorRef=f(K);_elementRef=f(Lt);_destroyed=new Le;_keyManager;_steps;steps=new Ql;_stepHeader;_sortedHeaders=new Ql;linear=!1;get selectedIndex(){return this._selectedIndex()}set selectedIndex(e){this._steps?(this._isValidIndex(e),this.selectedIndex!==e&&(this.selected?._markAsInteracted(),!this._anyControlsInvalidOrPending(e)&&(e>=this.selectedIndex||this.steps.toArray()[e].editable)&&this._updateSelectedItemIndex(e))):this._selectedIndex.set(e)}_selectedIndex=me(0);get selected(){return this.steps?this.steps.toArray()[this.selectedIndex]:void 0}set selected(e){this.selectedIndex=e&&this.steps?this.steps.toArray().indexOf(e):-1}selectionChange=new ve;selectedIndexChange=new ve;_groupId=f(Oi).getId("cdk-stepper-");get orientation(){return this._orientation}set orientation(e){this._orientation=e,this._keyManager&&this._keyManager.withVerticalOrientation(e==="vertical")}_orientation="horizontal";constructor(){}ngAfterContentInit(){this._steps.changes.pipe(li(this._steps),rt(this._destroyed)).subscribe(e=>{this.steps.reset(e.filter(n=>n._stepper===this)),this.steps.forEach((n,o)=>n.index.set(o)),this.steps.notifyOnChanges()})}ngAfterViewInit(){if(this._stepHeader.changes.pipe(li(this._stepHeader),rt(this._destroyed)).subscribe(e=>{this._sortedHeaders.reset(e.toArray().sort((n,o)=>n._elementRef.nativeElement.compareDocumentPosition(o._elementRef.nativeElement)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1)),this._sortedHeaders.notifyOnChanges()}),this._keyManager=new Cm(this._sortedHeaders).withWrap().withHomeAndEnd().withVerticalOrientation(this._orientation==="vertical"),this._keyManager.updateActiveItem(this.selectedIndex),(this._dir?this._dir.change:xt()).pipe(li(this._layoutDirection()),rt(this._destroyed)).subscribe(e=>this._keyManager?.withHorizontalOrientation(e)),this._keyManager.updateActiveItem(this.selectedIndex),this.steps.changes.subscribe(()=>{this.selected||this._selectedIndex.set(Math.max(this.selectedIndex-1,0))}),this._isValidIndex(this.selectedIndex)||this._selectedIndex.set(0),this.linear&&this.selectedIndex>0){let e=this.steps.toArray().slice(0,this._selectedIndex());for(let n of e)n._markAsInteracted()}}ngOnDestroy(){this._keyManager?.destroy(),this.steps.destroy(),this._sortedHeaders.destroy(),this._destroyed.next(),this._destroyed.complete()}next(){this.selectedIndex=Math.min(this._selectedIndex()+1,this.steps.length-1)}previous(){this.selectedIndex=Math.max(this._selectedIndex()-1,0)}reset(){this._updateSelectedItemIndex(0),this.steps.forEach(e=>e.reset()),this._stateChanged()}_getStepLabelId(e){return`${this._groupId}-label-${e}`}_getStepContentId(e){return`${this._groupId}-content-${e}`}_stateChanged(){this._changeDetectorRef.markForCheck()}_getAnimationDirection(e){let n=e-this._selectedIndex();return n<0?this._layoutDirection()==="rtl"?"next":"previous":n>0?this._layoutDirection()==="rtl"?"previous":"next":"current"}_getFocusIndex(){return this._keyManager?this._keyManager.activeItemIndex:this._selectedIndex()}_updateSelectedItemIndex(e){let n=this.steps.toArray(),o=this._selectedIndex();this.selectionChange.emit({selectedIndex:e,previouslySelectedIndex:o,selectedStep:n[e],previouslySelectedStep:n[o]}),this._keyManager&&(this._containsFocus()?this._keyManager.setActiveItem(e):this._keyManager.updateActiveItem(e)),this._selectedIndex.set(e),this.selectedIndexChange.emit(e),this._stateChanged()}_onKeydown(e){let n=cr(e),o=e.keyCode,r=this._keyManager;r?.activeItemIndex!=null&&!n&&(o===32||o===13)?(this.selectedIndex=r.activeItemIndex,e.preventDefault()):r?.setFocusOrigin("keyboard").onKeydown(e)}_anyControlsInvalidOrPending(e){return this.linear&&e>=0?this.steps.toArray().slice(0,e).some(n=>{let o=n.stepControl;return(o?o.invalid||o.pending||!n.interacted:!n.completed)&&!n.optional&&!n._completedOverride()}):!1}_layoutDirection(){return this._dir&&this._dir.value==="rtl"?"rtl":"ltr"}_containsFocus(){let e=this._elementRef.nativeElement,n=hm();return e===n||e.contains(n)}_isValidIndex(e){return e>-1&&(!this.steps||e<this.steps.length)}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkStepper",""]],contentQueries:function(n,o,r){if(n&1&&$i(r,_S,5)(r,oA,5),n&2){let a;gt(a=_t())&&(o._steps=a),gt(a=_t())&&(o._stepHeader=a)}},inputs:{linear:[2,"linear","linear",dt],selectedIndex:[2,"selectedIndex","selectedIndex",io],selected:"selected",orientation:"orientation"},outputs:{selectionChange:"selectionChange",selectedIndexChange:"selectedIndexChange"},exportAs:["cdkStepper"]})}return t})(),MV=(()=>{class t{_stepper=f(Jf);type="submit";constructor(){}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["button","cdkStepperNext",""]],hostVars:1,hostBindings:function(n,o){n&1&&v("click",function(){return o._stepper.next()}),n&2&&No("type",o.type)},inputs:{type:"type"}})}return t})(),kV=(()=>{class t{_stepper=f(Jf);type="button";constructor(){}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["button","cdkStepperPrevious",""]],hostVars:1,hostBindings:function(n,o){n&1&&v("click",function(){return o._stepper.previous()}),n&2&&No("type",o.type)},inputs:{type:"type"}})}return t})(),TV=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[wn]})}return t})();var hde=(t,i,e)=>({index:t,active:i,optional:e});function fde(t,i){if(t&1&&Xi(0,2),t&2){let e=b();x("ngTemplateOutlet",e.iconOverrides[e.state])("ngTemplateOutletContext",TC(2,hde,e.index,e.active,e.optional))}}function gde(t,i){if(t&1&&(s(0,"span",7),d(1),l()),t&2){let e=b(2);u(),U(e._getDefaultTextForState(e.state))}}function _de(t,i){if(t&1&&(s(0,"span",8),d(1),l()),t&2){let e=b(3);u(),U(e._intl.completedLabel)}}function vde(t,i){if(t&1&&(s(0,"span",8),d(1),l()),t&2){let e=b(3);u(),U(e._intl.editableLabel)}}function bde(t,i){if(t&1&&(A(0,_de,2,1,"span",8)(1,vde,2,1,"span",8),s(2,"mat-icon",7),d(3),l()),t&2){let e=b(2);O(e.state==="done"?0:e.state==="edit"?1:-1),u(3),U(e._getDefaultTextForState(e.state))}}function Cde(t,i){if(t&1&&A(0,gde,2,1,"span",7)(1,bde,4,2),t&2){let e,n=b();O((e=n.state)==="number"?0:1)}}function xde(t,i){t&1&&(s(0,"div",4),Xi(1,9),l()),t&2&&(u(),x("ngTemplateOutlet",i.template))}function yde(t,i){if(t&1&&(s(0,"div",4),d(1),l()),t&2){let e=b();u(),U(e.label)}}function Sde(t,i){if(t&1&&(s(0,"div",5),d(1),l()),t&2){let e=b();u(),U(e._intl.optionalLabel)}}function wde(t,i){if(t&1&&(s(0,"div",6),d(1),l()),t&2){let e=b();u(),U(e.errorMessage)}}var EV=["*"];function Mde(t,i){}function kde(t,i){if(t&1&&(Yt(0),Ae(1,Mde,0,0,"ng-template",0)),t&2){let e=b();u(),x("cdkPortalOutlet",e._portal)}}var Tde=["animatedContainer"],DV=t=>({steps:t}),PV=t=>({step:t});function Ede(t,i){t&1&&Yt(0)}function Dde(t,i){if(t&1&&(s(0,"div",5),Xi(1,9)(2,6),l()),t&2){let e=b(2),n=Re(6);u(),x("ngTemplateOutlet",e.headerPrefix()),u(),x("ngTemplateOutlet",n)("ngTemplateOutletContext",ln(3,DV,e.steps))}}function Pde(t,i){if(t&1&&Xi(0,6),t&2){let e=b(2),n=Re(6);x("ngTemplateOutlet",n)("ngTemplateOutletContext",ln(2,DV,e.steps))}}function Ide(t,i){if(t&1&&(s(0,"div",10,2),Xi(2,9),l()),t&2){let e=i.$implicit,n=i.$index,o=b(2);Mo("mat-horizontal-stepper-content-"+o._getAnimationDirection(n)),x("id",o._getStepContentId(n)),It("aria-labelledby",o._getStepLabelId(n))("inert",o.selectedIndex===n?null:""),u(2),x("ngTemplateOutlet",e.content)}}function Ade(t,i){if(t&1&&(s(0,"div",3),A(1,Dde,3,5,"div",5)(2,Pde,1,4,"ng-container",6),s(3,"div",7),J(4,Ide,3,6,"div",8,Fe),l()()),t&2){let e=b();u(),O(e.headerPrefix()?1:2),u(3),ee(e.steps)}}function Ode(t,i){if(t&1&&Xi(0,9),t&2){let e=b(2);x("ngTemplateOutlet",e.headerPrefix())}}function Nde(t,i){if(t&1&&(s(0,"div",11),Xi(1,6),s(2,"div",12,2)(4,"div",13)(5,"div",14),Xi(6,9),l()()()()),t&2){let e=i.$implicit,n=i.$index,o=i.$index,r=i.$count,a=b(2),c=Re(4);u(),x("ngTemplateOutlet",c)("ngTemplateOutletContext",ln(10,PV,e)),u(),je("mat-stepper-vertical-line",o!==r-1)("mat-vertical-content-container-active",a.selectedIndex===n),It("inert",a.selectedIndex===n?null:""),u(2),x("id",a._getStepContentId(n)),It("aria-labelledby",a._getStepLabelId(n)),u(2),x("ngTemplateOutlet",e.content)}}function Rde(t,i){if(t&1&&(s(0,"div",4),A(1,Ode,1,1,"ng-container",9),J(2,Nde,7,12,"div",11,Fe),l()),t&2){let e=b();u(),O(e.headerPrefix()?1:-1),u(),ee(e.steps)}}function Fde(t,i){if(t&1){let e=j();s(0,"mat-step-header",15),v("click",function(){let o=D(e).step;return P(o.select())})("keydown",function(o){D(e);let r=b();return P(r._onKeydown(o))}),l()}if(t&2){let e=i.step,n=b();je("mat-horizontal-stepper-header",n.orientation==="horizontal")("mat-vertical-stepper-header",n.orientation==="vertical"),x("tabIndex",n._getFocusIndex()===e.index()?0:-1)("id",n._getStepLabelId(e.index()))("index",e.index())("state",e.indicatorType())("label",e.stepLabel||e.label)("selected",e.isSelected())("active",e.isNavigable())("optional",e.optional)("errorMessage",e.errorMessage)("iconOverrides",n._iconOverrides)("disableRipple",n.disableRipple||!e.isNavigable())("color",e.color||n.color),It("role",n.orientation==="horizontal"?"tab":"button")("aria-posinset",n.orientation==="horizontal"?e.index()+1:null)("aria-setsize",n.orientation==="horizontal"?n.steps.length:null)("aria-selected",n.orientation==="horizontal"?e.isSelected():null)("aria-current",n.orientation==="vertical"&&e.isSelected()?"step":null)("aria-disabled",n.orientation==="vertical"&&e.isSelected()?"true":null)("aria-expanded",n.orientation==="vertical"?e.isSelected():null)("aria-controls",n._getStepContentId(e.index()))("aria-label",e.ariaLabel||null)("aria-labelledby",!e.ariaLabel&&e.ariaLabelledby?e.ariaLabelledby:null)("aria-disabled",e.isNavigable()?null:!0)}}function Lde(t,i){t&1&&F(0,"div",17)}function Bde(t,i){if(t&1&&(Xi(0,6),A(1,Lde,1,0,"div",17)),t&2){let e=i.$implicit,n=i.$index,o=i.$count;b(2);let r=Re(4);x("ngTemplateOutlet",r)("ngTemplateOutletContext",ln(3,PV,e)),u(),O(n!==o-1?1:-1)}}function Vde(t,i){if(t&1&&(s(0,"div",16),J(1,Bde,2,5,null,null,Fe),l()),t&2){let e=i.steps;u(),ee(e)}}var ib=(()=>{class t extends rA{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["","matStepLabel",""]],features:[xn]})}return t})(),zde=(()=>{class t{changes=new Le;optionalLabel="Optional";completedLabel="Completed";editableLabel="Editable";static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),aA=(()=>{class t extends oA{_intl=f(zde);_focusMonitor=f(xr);_intlSubscription;state;label;errorMessage;iconOverrides;index;selected=!1;active=!1;optional=!1;disableRipple=!1;color;constructor(){super();let e=f(Go);e.load(yr),e.load(jC);let n=f(K);this._intlSubscription=this._intl.changes.subscribe(()=>n.markForCheck())}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._intlSubscription.unsubscribe(),this._focusMonitor.stopMonitoring(this._elementRef)}focus(e,n){e?this._focusMonitor.focusVia(this._elementRef,e,n):this._elementRef.nativeElement.focus(n)}_stringLabel(){return this.label instanceof ib?null:this.label}_templateLabel(){return this.label instanceof ib?this.label:null}_getHostElement(){return this._elementRef.nativeElement}_getDefaultTextForState(e){return e=="number"?`${this.index+1}`:e=="edit"?"create":e=="error"?"warning":e}_hasEmptyLabel(){return!this._stringLabel()&&!this._templateLabel()&&!this._hasOptionalLabel()&&!this._hasErrorLabel()}_hasOptionalLabel(){return this.optional&&this.state!=="error"}_hasErrorLabel(){return this.state==="error"}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-step-header"]],hostAttrs:["role","",1,"mat-step-header"],hostVars:4,hostBindings:function(n,o){n&2&&(Mo("mat-"+(o.color||"primary")),je("mat-step-header-empty-label",o._hasEmptyLabel()))},inputs:{state:"state",label:"label",errorMessage:"errorMessage",iconOverrides:"iconOverrides",index:"index",selected:"selected",active:"active",optional:"optional",disableRipple:"disableRipple",color:"color"},features:[xn],decls:10,vars:17,consts:[["matRipple","",1,"mat-step-header-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled"],[1,"mat-step-icon-content"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"mat-step-label"],[1,"mat-step-text-label"],[1,"mat-step-optional"],[1,"mat-step-sub-label-error"],["aria-hidden","true"],[1,"cdk-visually-hidden"],[3,"ngTemplateOutlet"]],template:function(n,o){if(n&1&&(F(0,"div",0),s(1,"div")(2,"div",1),A(3,fde,1,6,"ng-container",2)(4,Cde,2,1),l()(),s(5,"div",3),A(6,xde,2,1,"div",4)(7,yde,2,1,"div",4),A(8,Sde,2,1,"div",5),A(9,wde,2,1,"div",6),l()),n&2){let r;x("matRippleTrigger",o._getHostElement())("matRippleDisabled",o.disableRipple),u(),Mo(no("mat-step-icon-state-",o.state," mat-step-icon")),je("mat-step-icon-selected",o.selected),u(2),O(o.iconOverrides&&o.iconOverrides[o.state]?3:4),u(2),je("mat-step-label-active",o.active)("mat-step-label-selected",o.selected)("mat-step-label-error",o.state=="error"),u(),O((r=o._templateLabel())?6:o._stringLabel()?7:-1,r),u(2),O(o._hasOptionalLabel()?8:-1),u(),O(o._hasErrorLabel()?9:-1)}},dependencies:[as,H_,se],styles:[`.mat-step-header{overflow:hidden;outline:none;cursor:pointer;position:relative;box-sizing:content-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-step-header:focus-visible .mat-focus-indicator::before{content:""}.mat-step-header:hover[aria-disabled=true]{cursor:default}.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:var(--mat-stepper-header-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent));border-radius:var(--mat-stepper-header-hover-state-layer-shape, var(--mat-sys-corner-medium))}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused{background-color:var(--mat-stepper-header-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent));border-radius:var(--mat-stepper-header-focus-state-layer-shape, var(--mat-sys-corner-medium))}@media(hover: none){.mat-step-header:hover{background:none}}@media(forced-colors: active){.mat-step-header{outline:solid 1px}.mat-step-header[aria-selected=true] .mat-step-label{text-decoration:underline}.mat-step-header[aria-disabled=true]{outline-color:GrayText}.mat-step-header[aria-disabled=true] .mat-step-label,.mat-step-header[aria-disabled=true] .mat-step-icon,.mat-step-header[aria-disabled=true] .mat-step-optional{color:GrayText}}.mat-step-optional{font-size:12px;color:var(--mat-stepper-header-optional-label-text-color, var(--mat-sys-on-surface-variant))}.mat-step-sub-label-error{font-size:12px;font-weight:normal}.mat-step-icon{border-radius:50%;height:24px;width:24px;flex-shrink:0;position:relative;color:var(--mat-stepper-header-icon-foreground-color, var(--mat-sys-surface));background-color:var(--mat-stepper-header-icon-background-color, var(--mat-sys-on-surface-variant))}.mat-step-icon-content{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);display:flex}.mat-step-icon .mat-icon{font-size:16px;height:16px;width:16px}.mat-step-icon-state-error{background-color:var(--mat-stepper-header-error-state-icon-background-color, transparent);color:var(--mat-stepper-header-error-state-icon-foreground-color, var(--mat-sys-error))}.mat-step-icon-state-error .mat-icon{font-size:24px;height:24px;width:24px}.mat-step-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:50px;vertical-align:middle;font-family:var(--mat-stepper-header-label-text-font, var(--mat-sys-title-small-font));font-size:var(--mat-stepper-header-label-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-stepper-header-label-text-weight, var(--mat-sys-title-small-weight));color:var(--mat-stepper-header-label-text-color, var(--mat-sys-on-surface-variant))}.mat-step-label.mat-step-label-active{color:var(--mat-stepper-header-selected-state-label-text-color, var(--mat-sys-on-surface-variant))}.mat-step-label.mat-step-label-error{color:var(--mat-stepper-header-error-state-label-text-color, var(--mat-sys-error));font-size:var(--mat-stepper-header-error-state-label-text-size, var(--mat-sys-title-small-size))}.mat-step-label.mat-step-label-selected{font-size:var(--mat-stepper-header-selected-state-label-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-stepper-header-selected-state-label-text-weight, var(--mat-sys-title-small-weight))}.mat-step-header-empty-label .mat-step-label{min-width:0}.mat-step-text-label{text-overflow:ellipsis;overflow:hidden}.mat-step-header .mat-step-header-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-step-icon-selected{background-color:var(--mat-stepper-header-selected-state-icon-background-color, var(--mat-sys-primary));color:var(--mat-stepper-header-selected-state-icon-foreground-color, var(--mat-sys-on-primary))}.mat-step-icon-state-done{background-color:var(--mat-stepper-header-done-state-icon-background-color, var(--mat-sys-primary));color:var(--mat-stepper-header-done-state-icon-foreground-color, var(--mat-sys-on-primary))}.mat-step-icon-state-edit{background-color:var(--mat-stepper-header-edit-state-icon-background-color, var(--mat-sys-primary));color:var(--mat-stepper-header-edit-state-icon-foreground-color, var(--mat-sys-on-primary))}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),jde=(()=>{class t{templateRef=f(So);name;constructor(){}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["ng-template","matStepperIcon",""]],inputs:{name:[0,"matStepperIcon","name"]}})}return t})(),$de=(()=>{class t{_template=f(So);constructor(){}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["ng-template","matStepContent",""]]})}return t})(),cc=(()=>{class t extends _S{_errorStateMatcher=f(kd,{skipSelf:!0});_viewContainerRef=f(co);_isSelected=so.EMPTY;stepLabel=void 0;color;_lazyContent;_portal;ngAfterContentInit(){this._isSelected=this._stepper.steps.changes.pipe(fn(()=>this._stepper.selectionChange.pipe(yt(e=>e.selectedStep===this),li(this._stepper.selected===this)))).subscribe(e=>{e&&this._lazyContent&&!this._portal&&(this._portal=new ol(this._lazyContent._template,this._viewContainerRef))})}ngOnDestroy(){this._isSelected.unsubscribe()}isErrorState(e,n){let o=this._errorStateMatcher.isErrorState(e,n),r=!!(e&&e.invalid&&this.interacted);return o||r}static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275cmp=L({type:t,selectors:[["mat-step"]],contentQueries:function(n,o,r){if(n&1&&$i(r,ib,5)(r,$de,5),n&2){let a;gt(a=_t())&&(o.stepLabel=a.first),gt(a=_t())&&(o._lazyContent=a.first)}},hostAttrs:["hidden",""],inputs:{color:"color"},exportAs:["matStep"],features:[hn([{provide:kd,useExisting:t},{provide:_S,useExisting:t}]),xn],ngContentSelectors:EV,decls:1,vars:0,consts:[[3,"cdkPortalOutlet"]],template:function(n,o){n&1&&(En(),Ae(0,kde,2,1,"ng-template"))},dependencies:[rs],encapsulation:2,changeDetection:0})}return t})(),dc=(()=>{class t extends Jf{_ngZone=f(bi);_renderer=f(ii);_animationsDisabled=Qi();_cleanupTransition;_isAnimating=me(!1);_stepHeader=void 0;_animatedContainers;_steps=void 0;steps=new Ql;_icons;animationDone=new ve;disableRipple=!1;color;labelPosition="end";headerPosition="top";headerPrefix=oe(null);_iconOverrides={};get animationDuration(){return this._animationDuration}set animationDuration(e){this._animationDuration=/^\d+$/.test(e)?e+"ms":e}_animationDuration="";_isServer=!f(Ta).isBrowser;constructor(){super();let n=f(Lt).nativeElement.nodeName.toLowerCase();this.orientation=n==="mat-vertical-stepper"?"vertical":"horizontal"}ngAfterContentInit(){super.ngAfterContentInit(),this._icons.forEach(({name:e,templateRef:n})=>this._iconOverrides[e]=n),this.steps.changes.pipe(rt(this._destroyed)).subscribe(()=>this._stateChanged()),this.selectedIndexChange.pipe(rt(this._destroyed)).subscribe(()=>{let e=this._getAnimationDuration();e==="0ms"||e==="0s"?this._onAnimationDone():this._isAnimating.set(!0)}),this._ngZone.runOutsideAngular(()=>{this._animationsDisabled||setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-stepper-animations-enabled"),this._cleanupTransition=this._renderer.listen(this._elementRef.nativeElement,"transitionend",this._handleTransitionend)},200)})}ngAfterViewInit(){if(super.ngAfterViewInit(),typeof queueMicrotask=="function"){let e=!1;this._animatedContainers.changes.pipe(li(null),rt(this._destroyed)).subscribe(()=>queueMicrotask(()=>{e||(e=!0,this.animationDone.emit()),this._stateChanged()}))}}ngOnDestroy(){super.ngOnDestroy(),this._cleanupTransition?.()}_getAnimationDuration(){return this._animationsDisabled?"0ms":this.animationDuration?this.animationDuration:this.orientation==="horizontal"?"500ms":"225ms"}_handleTransitionend=e=>{let n=e.target;if(!n)return;let o=this.orientation==="horizontal"&&e.propertyName==="transform"&&n.classList.contains("mat-horizontal-stepper-content-current"),r=this.orientation==="vertical"&&e.propertyName==="grid-template-rows"&&n.classList.contains("mat-vertical-content-container-active");(o||r)&&this._animatedContainers.find(c=>c.nativeElement===n)&&this._onAnimationDone()};_onAnimationDone(){this._isAnimating.set(!1),this.animationDone.emit()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-stepper"],["mat-vertical-stepper"],["mat-horizontal-stepper"],["","matStepper",""]],contentQueries:function(n,o,r){if(n&1&&$i(r,cc,5)(r,jde,5),n&2){let a;gt(a=_t())&&(o._steps=a),gt(a=_t())&&(o._icons=a)}},viewQuery:function(n,o){if(n&1&&gn(aA,5)(Tde,5),n&2){let r;gt(r=_t())&&(o._stepHeader=r),gt(r=_t())&&(o._animatedContainers=r)}},hostVars:14,hostBindings:function(n,o){n&2&&(yn("--mat-stepper-animation-duration",o._getAnimationDuration()),je("mat-stepper-horizontal",o.orientation==="horizontal")("mat-stepper-vertical",o.orientation==="vertical")("mat-stepper-label-position-end",o.orientation==="horizontal"&&o.labelPosition=="end")("mat-stepper-label-position-bottom",o.orientation==="horizontal"&&o.labelPosition=="bottom")("mat-stepper-header-position-bottom",o.headerPosition==="bottom")("mat-stepper-animating",o._isAnimating()))},inputs:{disableRipple:"disableRipple",color:"color",labelPosition:"labelPosition",headerPosition:"headerPosition",headerPrefix:[1,"headerPrefix"],animationDuration:"animationDuration"},outputs:{animationDone:"animationDone"},exportAs:["matStepper","matVerticalStepper","matHorizontalStepper"],features:[hn([{provide:Jf,useExisting:t}]),xn],ngContentSelectors:EV,decls:7,vars:2,consts:[["stepTemplate",""],["horizontalStepsTemplate",""],["animatedContainer",""],[1,"mat-horizontal-stepper-wrapper"],[1,"mat-vertical-stepper-wrapper"],[1,"mat-horizontal-stepper-header-wrapper"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"mat-horizontal-content-container"],["role","tabpanel",1,"mat-horizontal-stepper-content",3,"id","class"],[3,"ngTemplateOutlet"],["role","tabpanel",1,"mat-horizontal-stepper-content",3,"id"],[1,"mat-step"],[1,"mat-vertical-content-container"],["role","region",1,"mat-vertical-stepper-content",3,"id"],[1,"mat-vertical-content"],[3,"click","keydown","tabIndex","id","index","state","label","selected","active","optional","errorMessage","iconOverrides","disableRipple","color"],["aria-orientation","horizontal","role","tablist",1,"mat-horizontal-stepper-header-container"],[1,"mat-stepper-horizontal-line"]],template:function(n,o){if(n&1&&(En(),A(0,Ede,1,0),A(1,Ade,6,1,"div",3)(2,Rde,4,1,"div",4),Ae(3,Fde,1,27,"ng-template",null,0,Jp)(5,Vde,3,0,"ng-template",null,1,Jp)),n&2){let r;O(o._isServer?0:-1),u(),O((r=o.orientation)==="horizontal"?1:r==="vertical"?2:-1)}},dependencies:[H_,aA],styles:[`.mat-stepper-vertical,.mat-stepper-horizontal{display:block;font-family:var(--mat-stepper-container-text-font, var(--mat-sys-body-medium-font));background:var(--mat-stepper-container-color, var(--mat-sys-surface))}.mat-horizontal-stepper-header-wrapper{align-items:center;display:flex}.mat-horizontal-stepper-header-container{white-space:nowrap;display:flex;align-items:center;flex-grow:1}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header-container{align-items:flex-start}.mat-stepper-header-position-bottom .mat-horizontal-stepper-header-container{order:1}.mat-stepper-horizontal-line{border-top-width:1px;border-top-style:solid;flex:auto;height:0;margin:0 -16px;min-width:32px;border-top-color:var(--mat-stepper-line-color, var(--mat-sys-outline))}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{margin:0;min-width:0;position:relative;top:calc(calc((var(--mat-stepper-header-height, 72px) - 24px) / 2) + 12px)}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{border-top-width:1px;border-top-style:solid;content:"";display:inline-block;height:0;position:absolute;width:calc(50% - 20px)}.mat-horizontal-stepper-header{display:flex;overflow:hidden;align-items:center;padding:0 24px;height:var(--mat-stepper-header-height, 72px)}.mat-horizontal-stepper-header .mat-step-icon{margin-right:8px;flex:none}[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:8px}.mat-horizontal-stepper-header.mat-step-header-empty-label .mat-step-icon{margin:0}.mat-horizontal-stepper-header::before,.mat-horizontal-stepper-header::after{border-top-color:var(--mat-stepper-line-color, var(--mat-sys-outline))}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header{padding:calc((var(--mat-stepper-header-height, 72px) - 24px) / 2) 24px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header::before,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header::after{top:calc(calc((var(--mat-stepper-header-height, 72px) - 24px) / 2) + 12px)}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header{box-sizing:border-box;flex-direction:column;height:auto}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{right:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before{left:0}[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:last-child::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:first-child::after{display:none}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-label{padding:16px 0 0 0;text-align:center;width:100%}.mat-vertical-stepper-header{display:flex;align-items:center;height:24px;padding:calc((var(--mat-stepper-header-height, 72px) - 24px) / 2) 24px}.mat-vertical-stepper-header .mat-step-icon{margin-right:12px}[dir=rtl] .mat-vertical-stepper-header .mat-step-icon{margin-right:0;margin-left:12px}.mat-horizontal-stepper-wrapper{display:flex;flex-direction:column}.mat-horizontal-stepper-content{visibility:hidden;overflow:hidden;outline:0;height:0}.mat-stepper-animations-enabled .mat-horizontal-stepper-content{transition:transform var(--mat-stepper-animation-duration, 0) cubic-bezier(0.35, 0, 0.25, 1)}.mat-horizontal-stepper-content.mat-horizontal-stepper-content-previous{transform:translate3d(-100%, 0, 0)}.mat-horizontal-stepper-content.mat-horizontal-stepper-content-next{transform:translate3d(100%, 0, 0)}.mat-horizontal-stepper-content.mat-horizontal-stepper-content-current{visibility:visible;transform:none;height:auto}.mat-stepper-horizontal:not(.mat-stepper-animating) .mat-horizontal-stepper-content.mat-horizontal-stepper-content-current{overflow:visible}.mat-horizontal-content-container{overflow:hidden;padding:0 24px 24px 24px}@media(forced-colors: active){.mat-horizontal-content-container{outline:solid 1px}}.mat-stepper-header-position-bottom .mat-horizontal-content-container{padding:24px 24px 0 24px}.mat-vertical-content-container{display:grid;grid-template-rows:0fr;grid-template-columns:100%;margin-left:36px;border:0;position:relative}.mat-stepper-animations-enabled .mat-vertical-content-container{transition:grid-template-rows var(--mat-stepper-animation-duration, 0) cubic-bezier(0.4, 0, 0.2, 1)}.mat-vertical-content-container.mat-vertical-content-container-active{grid-template-rows:1fr}.mat-step:last-child .mat-vertical-content-container{border:none}@media(forced-colors: active){.mat-vertical-content-container{outline:solid 1px}}[dir=rtl] .mat-vertical-content-container{margin-left:0;margin-right:36px}@supports not (grid-template-rows: 0fr){.mat-vertical-content-container{height:0}.mat-vertical-content-container.mat-vertical-content-container-active{height:auto}}.mat-stepper-vertical-line::before{content:"";position:absolute;left:0;border-left-width:1px;border-left-style:solid;border-left-color:var(--mat-stepper-line-color, var(--mat-sys-outline));top:calc(8px - calc((var(--mat-stepper-header-height, 72px) - 24px) / 2));bottom:calc(8px - calc((var(--mat-stepper-header-height, 72px) - 24px) / 2))}[dir=rtl] .mat-stepper-vertical-line::before{left:auto;right:0}.mat-vertical-stepper-content{overflow:hidden;outline:0;visibility:hidden}.mat-stepper-animations-enabled .mat-vertical-stepper-content{transition:visibility var(--mat-stepper-animation-duration, 0) linear}.mat-vertical-content-container-active>.mat-vertical-stepper-content{visibility:visible}.mat-vertical-content{padding:0 24px 24px 24px}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),IV=(()=>{class t extends MV{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["button","matStepperNext",""]],hostAttrs:[1,"mat-stepper-next"],hostVars:1,hostBindings:function(n,o){n&2&&No("type",o.type)},features:[xn]})}return t})(),AV=(()=>{class t extends kV{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275dir=ft({type:t,selectors:[["button","matStepperPrevious",""]],hostAttrs:[1,"mat-stepper-previous"],hostVars:1,hostBindings:function(n,o){n&2&&No("type",o.type)},features:[xn]})}return t})(),El=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({providers:[kd],imports:[Fs,TV,te,ss,dc,aA,wn]})}return t})();var td=(()=>{class t{getConsoleTypes(){return["telnet","vnc","http","https","none"]}getAuxConsoleTypes(){return["telnet","none"]}getCategories(){return[["Default","guest"],["Routers","router"],["Switches","switch"],["End devices","guest"],["Security devices","firewall"]]}getConsoleResolutions(){return["2560x1440","1920x1080","1680x1050","1440x900","1366x768","1280x1024","1280x800","1024x768","800x600","640x480"]}getMacAddrRegex(){return/^([0-9a-fA-F]{2}[:]){5}([0-9a-fA-F]{2})$/}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var ys=(()=>{class t{httpController;constructor(e){this.httpController=e}getTemplates(e){return this.httpController.get(e,"/templates")}getTemplate(e,n){return this.httpController.get(e,`/templates/${n}`)}getImages(e){return this.httpController.get(e,`/computes/${Ai.compute_id}/docker/images`)}addTemplate(e,n){let o=this.prepareTemplate(n);return this.httpController.post(e,"/templates",o)}saveTemplate(e,n){let o=this.prepareTemplate(n);return this.httpController.put(e,`/templates/${n.template_id}`,o)}prepareTemplate(e){return tt(H({},e),{custom_adapters:e.custom_adapters||[]})}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Hde=(t,i)=>i.image;function Ude(t,i){if(t&1&&(s(0,"mat-option",22),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e.image)}}function Gde(t,i){if(t&1){let e=j();s(0,"mat-form-field",13)(1,"mat-label"),d(2,"Image list"),l(),s(3,"mat-select",30),v("selectionChange",function(o){D(e);let r=b();return P(r.selectedImage=o.value)}),J(4,Ude,2,2,"mat-option",22,Hde),l()()}if(t&2){let e=b();u(3),x("value",e.selectedImage),u(),ee(e.dockerImages)}}function Wde(t,i){if(t&1){let e=j();s(0,"mat-form-field",13)(1,"mat-label"),d(2,"Image name"),l(),s(3,"input",31),v("input",function(o){D(e);let r=b();return P(r.filename.set(o.target.value))}),l()()}if(t&2){let e=b();u(3),x("value",e.filename())}}function qde(t,i){if(t&1&&(s(0,"mat-option",22),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function Xde(t,i){if(t&1&&(s(0,"mat-option",22),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}var vS=(()=>{class t{route=f(Ye);controllerService=f(We);dockerService=f(ys);toasterService=f(fe);router=f(ut);templateMocksService=f(Fr);configurationService=f(td);computeService=f(Lo);cd=f(K);controller;dockerTemplate;consoleTypes=[];auxConsoleTypes=[];dockerImages=[];selectedImage;newImageSelected=!1;isLocalComputerChosen=!0;filename=ae("");templateName=ae("");adapters=ae(1);startCommand=ae("");consoleType=ae("");auxConsoleType=ae("");environment=ae("");ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck(),this.consoleTypes=this.configurationService.getConsoleTypes(),this.auxConsoleTypes=this.configurationService.getAuxConsoleTypes(),this.templateMocksService.getDockerTemplate().subscribe(o=>{this.dockerTemplate=o,this.cd.markForCheck()}),this.dockerService.getImages(n).subscribe(o=>{this.dockerImages=o,this.cd.markForCheck()})})}setControllerType(e){e==="local"&&(this.isLocalComputerChosen=!0)}setDiskImage(e){this.newImageSelected=e==="newImage"}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","docker","templates"])}addTemplate(){!this.newImageSelected&&this.selectedImage||this.newImageSelected&&this.filename()&&this.templateName()&&this.adapters()?(this.dockerTemplate.template_id=Ti(),this.newImageSelected?this.dockerTemplate.image=this.filename():this.dockerTemplate.image=this.selectedImage.image,this.dockerTemplate.name=this.templateName(),this.dockerTemplate.adapters=this.adapters(),this.dockerTemplate.compute_id="local",this.dockerTemplate.start_command=this.startCommand(),this.dockerTemplate.console_type=this.consoleType()||"none",this.dockerTemplate.aux_type=this.auxConsoleType()||"none",this.dockerTemplate.environment=this.environment(),this.dockerService.addTemplate(this.controller,this.dockerTemplate).subscribe({next:e=>{this.goBack()},error:e=>{let n=e.error?.message||e.message||"Failed to add template";this.toasterService.error(n),this.cd.markForCheck()}})):this.toasterService.error("Fill all required fields")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-add-docker-template"]],inputs:{filename:[1,"filename"],templateName:[1,"templateName"],adapters:[1,"adapters"],startCommand:[1,"startCommand"],consoleType:[1,"consoleType"],auxConsoleType:[1,"auxConsoleType"],environment:[1,"environment"]},outputs:{filename:"filenameChange",templateName:"templateNameChange",adapters:"adaptersChange",startCommand:"startCommandChange",consoleType:"consoleTypeChange",auxConsoleType:"auxConsoleTypeChange",environment:"environmentChange"},decls:69,vars:18,consts:[[1,"docker-add"],[1,"docker-add__header"],[1,"docker-add__title"],[1,"docker-add__content"],[1,"docker-add__stepper-card"],[1,"docker-add__stepper",3,"linear"],["label","Controller type",3,"completed"],[1,"docker-add__step-content"],[1,"docker-add__radio-group"],["value","1",1,"docker-add__radio",3,"click","checked"],["label","Docker Virtual Machine",3,"completed"],[1,"docker-add__form"],["value","2",1,"docker-add__radio",3,"click"],["appearance","fill",1,"docker-add__field"],["label","Container name",3,"completed"],["matInput","","type","text","placeholder","Container name",1,"templatename",3,"input","value"],["label","Network adapters",3,"completed"],["matInput","","type","number","placeholder","Adapters",1,"networkadapter",3,"input","value"],["label","Start command",3,"completed"],["matInput","","type","text","placeholder","Start command",3,"input","value"],["label","Console type",3,"completed"],["placeholder","Console type",3,"selectionChange","value"],[3,"value"],["label","Auxiliary console type",3,"completed"],["placeholder","Auxiliary console type",3,"selectionChange","value"],["label","Environment"],["matInput","","type","text",3,"input","value"],[1,"docker-add__actions"],["mat-button","",1,"docker-add__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"docker-add__submit-btn",3,"click"],["placeholder","Image list",3,"selectionChange","value"],["matInput","","type","text","placeholder","Image name",1,"filename",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1)(2,"h1",2),d(3,"New Docker container template"),l()(),s(4,"main",3)(5,"section",4)(6,"mat-vertical-stepper",5)(7,"mat-step",6)(8,"div",7)(9,"mat-radio-group",8)(10,"mat-radio-button",9),v("click",function(){return o.setControllerType("local")}),d(11," Run this Docker container locally "),l()()()(),s(12,"mat-step",10)(13,"div",7)(14,"div",11)(15,"mat-radio-group",8)(16,"mat-radio-button",9),v("click",function(){return o.setDiskImage("existingImage")}),d(17," Existing image "),l(),s(18,"mat-radio-button",12),v("click",function(){return o.setDiskImage("newImage")}),d(19," New image "),l()(),A(20,Gde,6,1,"mat-form-field",13),A(21,Wde,4,1,"mat-form-field",13),l()()(),s(22,"mat-step",14)(23,"div",7)(24,"div",11)(25,"mat-form-field",13)(26,"mat-label"),d(27,"Container name"),l(),s(28,"input",15),v("input",function(a){return o.templateName.set(a.target.value)}),l()()()()(),s(29,"mat-step",16)(30,"div",7)(31,"div",11)(32,"mat-form-field",13)(33,"mat-label"),d(34,"Adapters"),l(),s(35,"input",17),v("input",function(a){return o.adapters.set(+a.target.value)}),l()()()()(),s(36,"mat-step",18)(37,"div",7)(38,"mat-form-field",13)(39,"mat-label"),d(40,"Start command"),l(),s(41,"input",19),v("input",function(a){return o.startCommand.set(a.target.value)}),l()()()(),s(42,"mat-step",20)(43,"div",7)(44,"mat-form-field",13)(45,"mat-label"),d(46,"Console type"),l(),s(47,"mat-select",21),v("selectionChange",function(a){return o.consoleType.set(a.value)}),J(48,qde,2,2,"mat-option",22,Fe),l()()()(),s(50,"mat-step",23)(51,"div",7)(52,"mat-form-field",13)(53,"mat-label"),d(54,"Auxiliary console type"),l(),s(55,"mat-select",24),v("selectionChange",function(a){return o.auxConsoleType.set(a.value)}),J(56,Xde,2,2,"mat-option",22,Fe),l()()()(),s(58,"mat-step",25)(59,"div",7)(60,"mat-form-field",13)(61,"mat-label"),d(62,"Environment"),l(),s(63,"textarea",26),v("input",function(a){return o.environment.set(a.target.value)}),l()()()()()(),s(64,"div",27)(65,"button",28),v("click",function(){return o.goBack()}),d(66,"Cancel"),l(),s(67,"button",29),v("click",function(){return o.addTemplate()}),d(68," Add template "),l()()()()),n&2&&(u(6),x("linear",!0),u(),x("completed",o.isLocalComputerChosen),u(3),x("checked",!0),u(2),x("completed",o.selectedImage||o.filename()),u(4),x("checked",!o.newImageSelected),u(4),O(o.newImageSelected?-1:20),u(),O(o.newImageSelected?21:-1),u(),x("completed",o.templateName()),u(6),x("value",o.templateName()),u(),x("completed",o.adapters()),u(6),x("value",o.adapters()),u(),x("completed",o.startCommand()),u(5),x("value",o.startCommand()),u(),x("completed",o.consoleType()),u(5),x("value",o.consoleType()),u(),ee(o.consoleTypes),u(2),x("completed",o.auxConsoleType()),u(5),x("value",o.auxConsoleType()),u(),ee(o.auxConsoleTypes),u(7),x("value",o.environment()))},dependencies:[Z,nt,at,te,$,le,Dt,go,Io,ko,Me,ke,lt,we,Te,Mt,At,St,El,cc,dc,Ot],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.docker-add__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.docker-add__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.docker-add__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.docker-add__stepper-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.docker-add__stepper[_ngcontent-%COMP%]{background:transparent}.docker-add__step-content[_ngcontent-%COMP%]{padding:16px 24px 24px;display:flex;flex-direction:column;gap:16px}.docker-add__radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.docker-add__radio[_ngcontent-%COMP%]{font-size:16px}.docker-add__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.docker-add__field[_ngcontent-%COMP%]{width:100%}.docker-add__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.docker-add__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.docker-add__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.docker-add__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.docker-add__title[_ngcontent-%COMP%]{font-size:24px}.docker-add__content[_ngcontent-%COMP%]{padding:0 16px 16px}.docker-add__step-content[_ngcontent-%COMP%]{padding:12px 16px 20px}.docker-add__actions[_ngcontent-%COMP%]{flex-direction:column}.docker-add__cancel-btn[_ngcontent-%COMP%], .docker-add__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();function Qde(t,i){if(t&1){let e=j();s(0,"button",12),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}var bS=(()=>{class t{route=f(Ye);controllerService=f(We);dockerService=f(ys);toasterService=f(fe);router=f(ut);formBuilder=f(jt);cd=f(K);controller;templateName="";dockerTemplate;templateNameForm;constructor(){this.templateNameForm=this.formBuilder.group({templateName:new re("",be.required)})}ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.dockerService.getTemplate(this.controller,n).subscribe(r=>{this.dockerTemplate=r,this.templateName=`Copy of ${this.dockerTemplate.name}`,this.cd.markForCheck()})})}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","docker","templates"])}addTemplate(){this.templateNameForm.invalid?this.toasterService.error("Fill all required fields"):(this.dockerTemplate.template_id=Ti(),this.dockerTemplate.name=this.templateNameForm.get("templateName").value,this.dockerService.addTemplate(this.controller,this.dockerTemplate).subscribe({next:e=>{this.goBack()},error:e=>{let n=e.error?.message||e.message||"Failed to copy docker template";this.toasterService.error(n),this.cd.markForCheck()}}))}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-copy-docker-template"]],decls:17,vars:2,consts:[[1,"docker-copy"],[1,"docker-copy__header"],["mat-icon-button","",1,"docker-copy__back-btn"],[1,"docker-copy__title"],[1,"docker-copy__content"],[1,"docker-copy__form-card"],[1,"docker-copy__form",3,"formGroup"],["appearance","fill",1,"docker-copy__field"],["matInput","","type","text","placeholder","Name","formControlName","templateName"],[1,"docker-copy__actions"],["mat-button","",1,"docker-copy__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"docker-copy__submit-btn",3,"click"],["mat-icon-button","",1,"docker-copy__back-btn",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1),A(2,Qde,3,0,"button",2),s(3,"h1",3),d(4,"Copy Docker container template"),l()(),s(5,"main",4)(6,"section",5)(7,"form",6)(8,"mat-form-field",7)(9,"mat-label"),d(10,"Template name"),l(),F(11,"input",8),l()()(),s(12,"div",9)(13,"button",10),v("click",function(){return o.goBack()}),d(14,"Cancel"),l(),s(15,"button",11),v("click",function(){return o.addTemplate()}),d(16," Copy template "),l()()()()),n&2&&(u(2),O(o.controller?2:-1),u(5),x("formGroup",o.templateNameForm))},dependencies:[Z,nt,Ue,vt,mt,He,ct,pt,bt,at,te,se,$,le,ze,Dt,Me,ke,lt,we,Te],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.docker-copy__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.docker-copy__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.docker-copy__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.docker-copy__title[_ngcontent-%COMP%]{flex:1;font-size:28px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.docker-copy__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.docker-copy__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.docker-copy__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px;padding:24px}.docker-copy__field[_ngcontent-%COMP%]{width:100%}.docker-copy__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.docker-copy__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.docker-copy__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.docker-copy__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.docker-copy__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.docker-copy__title[_ngcontent-%COMP%]{font-size:22px}.docker-copy__content[_ngcontent-%COMP%]{padding:0 16px 16px}.docker-copy__form[_ngcontent-%COMP%]{padding:16px}.docker-copy__actions[_ngcontent-%COMP%]{flex-direction:column}.docker-copy__cancel-btn[_ngcontent-%COMP%], .docker-copy__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();function Yde(t,i){if(t&1){let e=j();s(0,"button",6),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function Kde(t,i){if(t&1&&(s(0,"mat-option",20),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),U(e[0])}}function Zde(t,i){if(t&1){let e=j();s(0,"mat-chip",38),v("removed",function(){let o=D(e).$implicit,r=b(3);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",39),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function Jde(t,i){if(t&1&&(s(0,"mat-option",20),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function eme(t,i){if(t&1&&(s(0,"mat-option",20),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function tme(t,i){if(t&1&&(s(0,"mat-option",20),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function nme(t,i){if(t&1){let e=j();s(0,"form",11)(1,"mat-form-field",16)(2,"mat-label"),d(3,"Template name"),l(),s(4,"input",17),v("input",function(o){D(e);let r=b(2);return P(r.name.set(o.target.value))}),l()(),s(5,"mat-form-field",16)(6,"mat-label"),d(7,"Default name format"),l(),s(8,"input",18),v("input",function(o){D(e);let r=b(2);return P(r.defaultNameFormat.set(o.target.value))}),l()(),s(9,"mat-form-field",16)(10,"mat-label"),d(11,"Category"),l(),s(12,"mat-select",19),v("selectionChange",function(o){D(e);let r=b(2);return P(r.category.set(o.value))}),J(13,Kde,2,2,"mat-option",20,Ii),l()(),s(15,"div",21)(16,"mat-form-field",22)(17,"mat-label"),d(18,"Symbol"),l(),s(19,"input",23),v("input",function(o){D(e);let r=b(2);return P(r.symbol.set(o.target.value))}),l()(),s(20,"button",24),v("click",function(){D(e);let o=b(2);return P(o.chooseSymbol())}),d(21,"Choose symbol"),l()(),s(22,"mat-form-field",16)(23,"mat-label"),d(24,"Tags"),l(),s(25,"mat-chip-grid",null,0),J(27,Zde,4,1,"mat-chip",null,Fe),l(),s(29,"input",25),v("matChipInputTokenEnd",function(o){D(e);let r=b(2);return P(r.addTag(o))}),l()(),s(30,"mat-form-field",16)(31,"mat-label"),d(32,"Start command"),l(),s(33,"input",26),v("input",function(o){D(e);let r=b(2);return P(r.startCommand.set(o.target.value))}),l()(),s(34,"mat-form-field",16)(35,"mat-label"),d(36,"Base MAC"),l(),s(37,"input",27),v("input",function(o){D(e);let r=b(2);return P(r.macAddress.set(o.target.value))}),l()(),s(38,"mat-form-field",16)(39,"mat-label"),d(40,"Adapters"),l(),s(41,"input",28),v("input",function(o){D(e);let r=b(2);return P(r.adaptersCount.set(+o.target.value))}),l()(),s(42,"mat-form-field",16)(43,"mat-label"),d(44,"Console type"),l(),s(45,"mat-select",29),v("selectionChange",function(o){D(e);let r=b(2);return P(r.consoleType.set(o.value))}),J(46,Jde,2,2,"mat-option",20,Fe),l()(),s(48,"mat-form-field",16)(49,"mat-label"),d(50,"Auxiliary console type"),l(),s(51,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.auxConsoleType.set(o.value))}),J(52,eme,2,2,"mat-option",20,Fe),l()(),s(54,"mat-checkbox",31),v("change",function(o){D(e);let r=b(2);return P(r.consoleAutoStart.set(o.checked))}),d(55,"Auto start console"),l(),s(56,"mat-form-field",16)(57,"mat-label"),d(58,"VNC console resolution"),l(),s(59,"mat-select",32),v("selectionChange",function(o){D(e);let r=b(2);return P(r.consoleResolution.set(o.value))}),J(60,tme,2,2,"mat-option",20,Fe),l()(),s(62,"mat-form-field",16)(63,"mat-label"),d(64,"HTTP port in the container"),l(),s(65,"input",33),v("input",function(o){D(e);let r=b(2);return P(r.consoleHttpPort.set(+o.target.value))}),l()(),s(66,"mat-form-field",16)(67,"mat-label"),d(68,"HTTP path"),l(),s(69,"input",34),v("input",function(o){D(e);let r=b(2);return P(r.consoleHttpPath.set(o.target.value))}),l()(),s(70,"h6",35),d(71,"Environment"),l(),s(72,"mat-form-field",36)(73,"mat-label"),d(74,"Environment"),l(),s(75,"textarea",37),v("input",function(o){D(e);let r=b(2);return P(r.environment.set(o.target.value))}),l()()()}if(t&2){let e=Re(26),n=b(2);u(4),x("value",n.name()),u(4),x("value",n.defaultNameFormat()),u(4),x("value",n.category()),u(),ee(n.categories),u(6),x("value",n.symbol()),u(8),ee(n.tags()),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(4),x("value",n.startCommand()),u(4),x("value",n.macAddress()),u(4),x("value",n.adaptersCount()),u(4),x("value",n.consoleType()),u(),ee(n.consoleTypes),u(5),x("value",n.auxConsoleType()),u(),ee(n.auxConsoleTypes),u(2),x("checked",n.consoleAutoStart()),u(5),x("value",n.consoleResolution()),u(),ee(n.consoleResolutions),u(5),x("value",n.consoleHttpPort()),u(4),x("value",n.consoleHttpPath()),u(6),x("value",n.environment())}}function ime(t,i){if(t&1){let e=j();s(0,"div",11)(1,"h6",35),d(2,"Extra hosts"),l(),s(3,"mat-form-field",36)(4,"mat-label"),d(5,"Extra hosts"),l(),s(6,"textarea",37),v("input",function(o){D(e);let r=b(2);return P(r.extraHosts.set(o.target.value))}),l()()()}if(t&2){let e=b(2);u(6),x("value",e.extraHosts())}}function ome(t,i){if(t&1){let e=j();s(0,"div",12)(1,"mat-form-field",40)(2,"mat-label"),d(3,"Usage"),l(),s(4,"textarea",37),v("input",function(o){D(e);let r=b(2);return P(r.usage.set(o.target.value))}),l()()()}if(t&2){let e=b(2);u(4),x("value",e.usage())}}function rme(t,i){if(t&1){let e=j();s(0,"main",5)(1,"section",7)(2,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("general"))}),s(3,"h3",9),d(4,"General settings"),l(),s(5,"mat-icon",10),d(6),l()(),A(7,nme,76,16,"form",11),l(),s(8,"section",7)(9,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("advanced"))}),s(10,"h3",9),d(11,"Advanced"),l(),s(12,"mat-icon",10),d(13),l()(),A(14,ime,7,1,"div",11),l(),s(15,"section",7)(16,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("usage"))}),s(17,"h3",9),d(18,"Usage"),l(),s(19,"mat-icon",10),d(20),l()(),A(21,ome,5,1,"div",12),l(),s(22,"div",13)(23,"button",14),v("click",function(){D(e);let o=b();return P(o.goBack())}),d(24,"Cancel"),l(),s(25,"button",15),v("click",function(){D(e);let o=b();return P(o.onSave())}),d(26,"Save"),l()()()}if(t&2){let e=b();u(6),U(e.generalSettingsExpanded?"expand_less":"expand_more"),u(),O(e.generalSettingsExpanded?7:-1),u(6),U(e.advancedExpanded?"expand_less":"expand_more"),u(),O(e.advancedExpanded?14:-1),u(6),U(e.usageExpanded?"expand_less":"expand_more"),u(),O(e.usageExpanded?21:-1)}}var CS=(()=>{class t{route=f(Ye);controllerService=f(We);dockerService=f(ys);toasterService=f(fe);configurationService=f(td);router=f(ut);cd=f(K);dialog=f(Je);dialogConfig=f(Ji);controller;dockerTemplate;separatorKeysCodes=[13,188];generalSettingsExpanded=!1;advancedExpanded=!1;usageExpanded=!1;consoleTypes=[];auxConsoleTypes=[];consoleResolutions=[];categories=[];adapters=[];displayedColumns=["adapter_number","port_name"];name=ae("");defaultNameFormat=ae("");category=ae("");symbol=ae("");tags=ae([]);startCommand=ae("");macAddress=ae("");adaptersCount=ae(0);consoleType=ae("");auxConsoleType=ae("");consoleAutoStart=ae(!1);consoleResolution=ae("");consoleHttpPort=ae(0);consoleHttpPath=ae("");environment=ae("");extraHosts=ae("");usage=ae("");constructor(){}ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.getConfiguration(),this.dockerService.getTemplate(this.controller,n).subscribe(r=>{this.dockerTemplate=r,this.name.set(r.name||""),this.defaultNameFormat.set(r.default_name_format||""),this.category.set(r.category||""),this.symbol.set(r.symbol||""),this.tags.set(r.tags||[]),this.startCommand.set(r.start_command||""),this.macAddress.set(r.mac_address||""),this.adaptersCount.set(r.adapters||0),this.consoleType.set(r.console_type||""),this.auxConsoleType.set(r.aux_type||""),this.consoleAutoStart.set(r.console_auto_start||!1),this.consoleResolution.set(r.console_resolution||""),this.consoleHttpPort.set(r.console_http_port||0),this.consoleHttpPath.set(r.console_http_path||""),this.environment.set(r.environment||""),this.extraHosts.set(r.extra_hosts||""),this.usage.set(r.usage||""),this.cd.markForCheck()})})}getConfiguration(){this.consoleTypes=this.configurationService.getConsoleTypes(),this.auxConsoleTypes=this.configurationService.getAuxConsoleTypes(),this.categories=this.configurationService.getCategories(),this.consoleResolutions=this.configurationService.getConsoleResolutions()}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","docker","templates"])}toggleSection(e){switch(e){case"general":this.generalSettingsExpanded=!this.generalSettingsExpanded;break;case"advanced":this.advancedExpanded=!this.advancedExpanded;break;case"usage":this.usageExpanded=!this.usageExpanded;break}}onSave(){this.dockerTemplate.name=this.name(),this.dockerTemplate.default_name_format=this.defaultNameFormat(),this.dockerTemplate.category=this.category(),this.dockerTemplate.symbol=this.symbol(),this.dockerTemplate.tags=this.tags(),this.dockerTemplate.start_command=this.startCommand(),this.dockerTemplate.mac_address=this.macAddress(),this.dockerTemplate.adapters=this.adaptersCount(),this.dockerTemplate.console_type=this.consoleType(),this.dockerTemplate.aux_type=this.auxConsoleType(),this.dockerTemplate.console_auto_start=this.consoleAutoStart(),this.dockerTemplate.console_resolution=this.consoleResolution(),this.dockerTemplate.console_http_port=this.consoleHttpPort(),this.dockerTemplate.console_http_path=this.consoleHttpPath(),this.dockerTemplate.environment=this.environment(),this.dockerTemplate.extra_hosts=this.extraHosts(),this.dockerTemplate.usage=this.usage(),this.dockerService.saveTemplate(this.controller,this.dockerTemplate).subscribe(e=>{this.toasterService.success("Changes saved")})}chooseSymbol(){let e=this.dialogConfig.openConfig("templateSymbol",{autoFocus:!1,disableClose:!1,data:{controller:this.controller,symbol:this.symbol()}});this.dialog.open(pr,e).afterClosed().subscribe(o=>{o&&this.symbol.set(o)})}addTag(e){let n=(e.value||"").trim();n&&this.dockerTemplate&&(this.dockerTemplate.tags||(this.dockerTemplate.tags=[]),this.dockerTemplate.tags.push(n)),e.chipInput&&e.chipInput.clear()}removeTag(e){if(!this.dockerTemplate.tags)return;let n=this.dockerTemplate.tags.indexOf(e);n>=0&&this.dockerTemplate.tags.splice(n,1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-docker-template-details"]],inputs:{name:[1,"name"],defaultNameFormat:[1,"defaultNameFormat"],category:[1,"category"],symbol:[1,"symbol"],tags:[1,"tags"],startCommand:[1,"startCommand"],macAddress:[1,"macAddress"],adaptersCount:[1,"adaptersCount"],consoleType:[1,"consoleType"],auxConsoleType:[1,"auxConsoleType"],consoleAutoStart:[1,"consoleAutoStart"],consoleResolution:[1,"consoleResolution"],consoleHttpPort:[1,"consoleHttpPort"],consoleHttpPath:[1,"consoleHttpPath"],environment:[1,"environment"],extraHosts:[1,"extraHosts"],usage:[1,"usage"]},outputs:{name:"nameChange",defaultNameFormat:"defaultNameFormatChange",category:"categoryChange",symbol:"symbolChange",tags:"tagsChange",startCommand:"startCommandChange",macAddress:"macAddressChange",adaptersCount:"adaptersCountChange",consoleType:"consoleTypeChange",auxConsoleType:"auxConsoleTypeChange",consoleAutoStart:"consoleAutoStartChange",consoleResolution:"consoleResolutionChange",consoleHttpPort:"consoleHttpPortChange",consoleHttpPath:"consoleHttpPathChange",environment:"environmentChange",extraHosts:"extraHostsChange",usage:"usageChange"},decls:6,vars:2,consts:[["chipList",""],[1,"docker-details"],[1,"docker-details__header"],["mat-icon-button","",1,"docker-details__back-btn"],[1,"docker-details__title"],[1,"docker-details__content"],["mat-icon-button","",1,"docker-details__back-btn",3,"click"],[1,"docker-details__form-card"],[1,"docker-details__section-header",3,"click"],[1,"docker-details__section-title"],[1,"docker-details__expand-icon"],[1,"docker-details__form"],[1,"preferences__usage-form"],[1,"docker-details__actions"],["mat-button","",1,"docker-details__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"docker-details__save-btn",3,"click"],["appearance","fill",1,"docker-details__field"],["matInput","","type","text","placeholder","Template name",3,"input","value"],["matInput","","type","text","placeholder","Default name format",3,"input","value"],["placeholder","Category",3,"selectionChange","value"],[3,"value"],[1,"docker-details__symbol-row"],["appearance","fill",1,"docker-details__field","docker-details__field--flex"],["matInput","","type","text","placeholder","Symbol",3,"input","value"],["mat-button","",1,"docker-details__symbol-btn",3,"click"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],["matInput","","type","text","placeholder","Start command",3,"input","value"],["matInput","","type","text","placeholder","Base MAC",3,"input","value"],["matInput","","type","number","placeholder","Adapters",3,"input","value"],["placeholder","Console type",3,"selectionChange","value"],["placeholder","Auxiliary console type",3,"selectionChange","value"],[1,"docker-details__checkbox",3,"change","checked"],["placeholder","VNC console resolution",3,"selectionChange","value"],["matInput","","type","number","placeholder","HTTP port in the container",3,"input","value"],["matInput","","type","text","placeholder","HTTP path",3,"input","value"],[1,"docker-details__section-subtitle"],["appearance","fill",1,"docker-details__field","docker-details__field--full"],["matInput","","type","text",3,"input","value"],[3,"removed"],["matChipRemove",""],["appearance","fill",1,"preferences__usage-field--full"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"header",2),A(2,Yde,3,0,"button",3),s(3,"h1",4),d(4,"Docker container template configuration"),l()(),A(5,rme,27,6,"main",5),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.dockerTemplate?5:-1))},dependencies:[Z,nt,Ue,He,Ci,at,te,se,$,le,ze,Me,ke,lt,we,Te,Mt,At,St,ti,zn,mi,pi,di,Ot,Ht],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.docker-details__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.docker-details__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.docker-details__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.docker-details__title[_ngcontent-%COMP%]{flex:1;font-size:28px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.docker-details__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.docker-details--hidden[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.docker-details__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);margin-bottom:16px}.docker-details__section-header[_ngcontent-%COMP%]{padding:16px 24px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color .2s ease;border-bottom:1px solid color-mix(in srgb,var(--mat-sys-outline) 30%,transparent)}.docker-details__section-header[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.docker-details__section-title[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.docker-details__expand-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);transition:transform .2s ease}.docker-details__form[_ngcontent-%COMP%]{padding:16px 24px 24px;display:flex;flex-direction:column;gap:16px}.docker-details__field[_ngcontent-%COMP%]{width:100%}.docker-details__field--flex[_ngcontent-%COMP%]{flex:1}.docker-details__field--full[_ngcontent-%COMP%]{width:100%;padding:0}.docker-details__symbol-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.docker-details__symbol-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.docker-details__section-subtitle[_ngcontent-%COMP%]{font-size:12px;font-weight:600;color:var(--mat-sys-on-surface-variant);text-transform:uppercase;letter-spacing:.5px;margin:8px 0}.docker-details__checkbox[_ngcontent-%COMP%]{margin-top:8px}.docker-details__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.docker-details__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.docker-details__save-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.docker-details__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.docker-details__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.docker-details__title[_ngcontent-%COMP%]{font-size:22px}.docker-details__content[_ngcontent-%COMP%]{padding:0 16px 16px}.docker-details__section-header[_ngcontent-%COMP%]{padding:12px 16px}.docker-details__form[_ngcontent-%COMP%]{padding:16px}.docker-details__field--full[_ngcontent-%COMP%]{padding:0}.docker-details__symbol-row[_ngcontent-%COMP%]{flex-direction:column}.docker-details__symbol-btn[_ngcontent-%COMP%]{width:100%}.docker-details__actions[_ngcontent-%COMP%]{flex-direction:column}.docker-details__cancel-btn[_ngcontent-%COMP%], .docker-details__save-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var ame=(t,i)=>i.template_id;function sme(t,i){if(t&1&&(s(0,"button",4)(1,"mat-icon"),d(2,"arrow_back"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences")}}function lme(t,i){if(t&1&&(s(0,"button",6)(1,"mat-icon"),d(2,"add_circle_outline"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences/docker/addtemplate")}}function cme(t,i){t&1&&F(0,"app-empty-templates-list")}function dme(t,i){if(t&1){let e=j();s(0,"div",10)(1,"mat-icon",11),d(2,"developer_board"),l(),s(3,"span",12),d(4),l(),s(5,"button",13),v("click",function(o){return o.stopPropagation()}),s(6,"mat-icon"),d(7,"more_vert"),l()(),s(8,"mat-menu",14,1)(10,"a",15)(11,"mat-icon"),d(12,"edit"),l(),s(13,"span"),d(14,"Edit"),l()(),s(15,"button",16),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.copyTemplate(o))}),s(16,"mat-icon"),d(17,"content_copy"),l(),s(18,"span"),d(19,"Copy"),l()(),s(20,"button",16),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.deleteTemplate(o))}),s(21,"mat-icon"),d(22,"delete"),l(),s(23,"span"),d(24,"Delete"),l()()()()}if(t&2){let e=i.$implicit,n=Re(9);x("routerLink",e.template_id),u(4),U(e.name),u(),x("matMenuTriggerFor",n),u(5),x("routerLink",e.template_id)}}function mme(t,i){if(t&1&&(s(0,"nav",8),J(1,dme,25,4,"div",10,ame),l()),t&2){let e=b();u(),ee(e.dockerTemplates)}}var xS=(()=>{class t{route=f(Ye);controllerService=f(We);dockerService=f(ys);router=f(ut);cd=f(K);controller;dockerTemplates=[];deleteComponent=Ut(ui);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck(),this.getTemplates()})}getTemplates(){this.dockerService.getTemplates(this.controller).subscribe(e=>{this.dockerTemplates=e.filter(n=>n.template_type==="docker"&&!n.builtin),this.cd.markForCheck()})}deleteTemplate(e){this.deleteComponent().deleteItem(e.name,e.template_id)}onDeleteEvent(){this.getTemplates()}copyTemplate(e){this.router.navigate(["/controller",this.controller.id,"preferences","docker","templates",e.template_id,"copy"])}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-docker-templates"]],viewQuery:function(n,o){n&1&&tn(o.deleteComponent,ui,5),n&2&&nn()},decls:11,vars:5,consts:[["deleteComponent",""],["menu","matMenu"],[1,"docker-templates"],[1,"docker-templates__header"],["mat-icon-button","",1,"docker-templates__back-btn",3,"routerLink"],[1,"docker-templates__title"],["matTooltip","Add Docker container template","matTooltipClass","custom-tooltip","mat-icon-button","",1,"docker-templates__add-btn",3,"routerLink"],[1,"docker-templates__content"],[1,"docker-templates__list"],[3,"deleteEvent","controller"],[1,"docker-templates__list-item",3,"routerLink"],[1,"docker-templates__list-icon"],[1,"docker-templates__list-name"],["mat-icon-button","",1,"docker-templates__menu-btn",3,"click","matMenuTriggerFor"],["xPosition","before"],["mat-menu-item","",3,"routerLink"],["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"div",2)(1,"header",3),A(2,sme,3,1,"button",4),s(3,"h1",5),d(4,"Docker container templates"),l(),A(5,lme,3,1,"button",6),l(),s(6,"main",7),A(7,cme,1,0,"app-empty-templates-list"),A(8,mme,3,0,"nav",8),l()(),s(9,"app-delete-template",9,0),v("deleteEvent",function(){return o.onDeleteEvent()}),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.controller?5:-1),u(2),O(o.dockerTemplates.length?-1:7),u(),O(o.dockerTemplates.length?8:-1),u(),x("controller",o.controller))},dependencies:[Z,at,cn,$,ze,te,se,Ri,Qe,Fn,ot,kn,Gt,Kt,ui,ur],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.docker-templates__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.docker-templates__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.docker-templates__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.docker-templates__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.docker-templates__add-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-primary);transition:all .2s cubic-bezier(.4,0,.2,1)}.docker-templates__add-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent)}.docker-templates__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.docker-templates__list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.docker-templates__list-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;text-decoration:none;color:var(--mat-sys-on-surface)}.docker-templates__list-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.docker-templates__list-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.docker-templates__list-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.docker-templates__list-name[_ngcontent-%COMP%]{flex:1;font-size:16px;font-weight:500}.docker-templates__menu-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);flex-shrink:0}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.docker-templates__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.docker-templates__back-btn[_ngcontent-%COMP%], .docker-templates__add-btn[_ngcontent-%COMP%]{width:44px;height:44px}.docker-templates__title[_ngcontent-%COMP%]{font-size:24px}.docker-templates__content[_ngcontent-%COMP%]{padding:0 16px 16px}.docker-templates__list-item[_ngcontent-%COMP%]{padding:14px 16px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var Dl=(()=>{class t{countSource=new Le;currentCount=this.countSource.asObservable();cancelItem=new Le;currentCancelItemDetails=this.cancelItem.asObservable();constructor(){}processBarCount(e){this.countSource.next(e)}cancelFileUploading(e){this.cancelItem.next(e)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function pme(t,i){t&1&&jr(0,"div",2)}var ume=new kt("MAT_PROGRESS_BAR_DEFAULT_OPTIONS");var nd=(()=>{class t{_elementRef=f(Lt);_ngZone=f(bi);_changeDetectorRef=f(K);_renderer=f(ii);_cleanupTransitionEnd;constructor(){let e=GC(),n=f(ume,{optional:!0});this._isNoopAnimation=e==="di-disabled",e==="reduced-motion"&&this._elementRef.nativeElement.classList.add("mat-progress-bar-reduced-motion"),n&&(n.color&&(this.color=this._defaultColor=n.color),this.mode=n.mode||this.mode)}_isNoopAnimation;get color(){return this._color||this._defaultColor}set color(e){this._color=e}_color;_defaultColor="primary";get value(){return this._value}set value(e){this._value=OV(e||0),this._changeDetectorRef.markForCheck()}_value=0;get bufferValue(){return this._bufferValue||0}set bufferValue(e){this._bufferValue=OV(e||0),this._changeDetectorRef.markForCheck()}_bufferValue=0;animationEnd=new ve;get mode(){return this._mode}set mode(e){this._mode=e,this._changeDetectorRef.markForCheck()}_mode="determinate";ngAfterViewInit(){this._ngZone.runOutsideAngular(()=>{this._cleanupTransitionEnd=this._renderer.listen(this._elementRef.nativeElement,"transitionend",this._transitionendHandler)})}ngOnDestroy(){this._cleanupTransitionEnd?.()}_getPrimaryBarTransform(){return`scaleX(${this._isIndeterminate()?1:this.value/100})`}_getBufferBarFlexBasis(){return`${this.mode==="buffer"?this.bufferValue:100}%`}_isIndeterminate(){return this.mode==="indeterminate"||this.mode==="query"}_transitionendHandler=e=>{this.animationEnd.observers.length===0||!e.target||!e.target.classList.contains("mdc-linear-progress__primary-bar")||(this.mode==="determinate"||this.mode==="buffer")&&this._ngZone.run(()=>this.animationEnd.next({value:this.value}))};static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-progress-bar"]],hostAttrs:["role","progressbar","aria-valuemin","0","aria-valuemax","100","tabindex","-1",1,"mat-mdc-progress-bar","mdc-linear-progress"],hostVars:10,hostBindings:function(n,o){n&2&&(It("aria-valuenow",o._isIndeterminate()?null:o.value)("mode",o.mode),Mo("mat-"+o.color),je("_mat-animation-noopable",o._isNoopAnimation)("mdc-linear-progress--animation-ready",!o._isNoopAnimation)("mdc-linear-progress--indeterminate",o._isIndeterminate()))},inputs:{color:"color",value:[2,"value","value",io],bufferValue:[2,"bufferValue","bufferValue",io],mode:"mode"},outputs:{animationEnd:"animationEnd"},exportAs:["matProgressBar"],decls:7,vars:5,consts:[["aria-hidden","true",1,"mdc-linear-progress__buffer"],[1,"mdc-linear-progress__buffer-bar"],[1,"mdc-linear-progress__buffer-dots"],["aria-hidden","true",1,"mdc-linear-progress__bar","mdc-linear-progress__primary-bar"],[1,"mdc-linear-progress__bar-inner"],["aria-hidden","true",1,"mdc-linear-progress__bar","mdc-linear-progress__secondary-bar"]],template:function(n,o){n&1&&(_o(0,"div",0),jr(1,"div",1),A(2,pme,1,0,"div",2),wo(),_o(3,"div",3),jr(4,"span",4),wo(),_o(5,"div",5),jr(6,"span",4),wo()),n&2&&(u(),yn("flex-basis",o._getBufferBarFlexBasis()),u(),O(o.mode==="buffer"?2:-1),u(),yn("transform",o._getPrimaryBarTransform()))},styles:[`.mat-mdc-progress-bar{--mat-progress-bar-animation-multiplier: 1;display:block;text-align:start}.mat-mdc-progress-bar[mode=query]{transform:scaleX(-1)}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-dots,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__secondary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__bar-inner.mdc-linear-progress__bar-inner{animation:none}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-bar{transition:transform 1ms}.mat-progress-bar-reduced-motion{--mat-progress-bar-animation-multiplier: 2}.mdc-linear-progress{position:relative;width:100%;transform:translateZ(0);outline:1px solid rgba(0,0,0,0);overflow-x:hidden;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);height:max(var(--mat-progress-bar-track-height, 4px),var(--mat-progress-bar-active-indicator-height, 4px))}@media(forced-colors: active){.mdc-linear-progress{outline-color:CanvasText}}.mdc-linear-progress__bar{position:absolute;top:0;bottom:0;margin:auto 0;width:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);height:var(--mat-progress-bar-active-indicator-height, 4px)}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}[dir=rtl] .mdc-linear-progress__bar{right:0;transform-origin:center right}.mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;animation:none;border-top-style:solid;border-color:var(--mat-progress-bar-active-indicator-color, var(--mat-sys-primary));border-top-width:var(--mat-progress-bar-active-indicator-height, 4px)}.mdc-linear-progress__buffer{display:flex;position:absolute;top:0;bottom:0;margin:auto 0;width:100%;overflow:hidden;height:var(--mat-progress-bar-track-height, 4px);border-radius:var(--mat-progress-bar-track-shape, var(--mat-sys-corner-none))}.mdc-linear-progress__buffer-dots{background-image:radial-gradient(circle, var(--mat-progress-bar-track-color, var(--mat-sys-surface-variant)) calc(var(--mat-progress-bar-track-height, 4px) / 2), transparent 0);background-repeat:repeat-x;background-size:calc(calc(var(--mat-progress-bar-track-height, 4px) / 2)*5);background-position:left;flex:auto;transform:rotate(180deg);animation:mdc-linear-progress-buffering calc(250ms*var(--mat-progress-bar-animation-multiplier)) infinite linear}@media(forced-colors: active){.mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}[dir=rtl] .mdc-linear-progress__buffer-dots{animation:mdc-linear-progress-buffering-reverse calc(250ms*var(--mat-progress-bar-animation-multiplier)) infinite linear;transform:rotate(0)}.mdc-linear-progress__buffer-bar{flex:0 1 100%;transition:flex-basis 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);background-color:var(--mat-progress-bar-track-color, var(--mat-sys-surface-variant))}.mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation:mdc-linear-progress-primary-indeterminate-translate calc(2s*var(--mat-progress-bar-animation-multiplier)) infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-primary-indeterminate-scale calc(2s*var(--mat-progress-bar-animation-multiplier)) infinite linear}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation-name:mdc-linear-progress-primary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}.mdc-linear-progress__secondary-bar{display:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;display:block}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation:mdc-linear-progress-secondary-indeterminate-translate calc(2s*var(--mat-progress-bar-animation-multiplier)) infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-secondary-indeterminate-scale calc(2s*var(--mat-progress-bar-animation-multiplier)) infinite linear}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation-name:mdc-linear-progress-secondary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}@keyframes mdc-linear-progress-buffering{from{transform:rotate(180deg) translateX(calc(var(--mat-progress-bar-track-height, 4px) * -2.5))}}@keyframes mdc-linear-progress-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(83.67142%)}100%{transform:translateX(200.611057%)}}@keyframes mdc-linear-progress-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(84.386165%)}100%{transform:translateX(160.277782%)}}@keyframes mdc-linear-progress-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(-83.67142%)}100%{transform:translateX(-200.611057%)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(-37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(-84.386165%)}100%{transform:translateX(-160.277782%)}}@keyframes mdc-linear-progress-buffering-reverse{from{transform:translateX(-10px)}}
|
||
`],encapsulation:2,changeDetection:0})}return t})();function OV(t,i=0,e=100){return Math.max(i,Math.min(e,t))}var Pl=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[wn]})}return t})();var Il=(()=>{class t{data;_snackRef=f(Yu);_US=f(Dl);uploadProgress=me(0);subscription;upload_file_type;constructor(e){this.data=e}ngOnInit(){this.upload_file_type=this.data.upload_file_type,this.subscription=this._US.currentCount.subscribe(e=>{this.uploadProgress.set(e),(this.uploadProgress()===100||this.uploadProgress()==null)&&this.dismiss()})}dismiss(){this._snackRef.dismiss()}cancelItem(){this._US.cancelFileUploading(!0)}ngOnDestroy(){this.subscription.unsubscribe()}static \u0275fac=function(n){return new(n||t)(st(Gy))};static \u0275cmp=L({type:t,selectors:[["app-uploading-processbar"]],decls:8,vars:3,consts:[[1,"row","proccessBar-row"],[1,"col-md-9","proccessBar-col"],["mode","determinate","aria-valuemin","0","aria-valuemax","100",3,"value"],[1,"col-md-3","proccessBar-col"],["mat-button","","color","primary",1,"file-button",3,"click"]],template:function(n,o){n&1&&(s(0,"p"),d(1),l(),s(2,"div",0)(3,"div",1),F(4,"mat-progress-bar",2),l(),s(5,"div",3)(6,"button",4),v("click",function(){return o.cancelItem()}),d(7,"Cancel"),l()()()),n&2&&(u(),Hi("",o.upload_file_type," Uploading please wait .... ",o.uploadProgress,"%"),u(3),x("value",o.uploadProgress))},dependencies:[$,le,Pl,nd],styles:[".mat-snack-bar-container[_ngcontent-%COMP%]{min-width:450px}.proccessBar-row[_ngcontent-%COMP%]{display:flex}.proccessBar-col[_ngcontent-%COMP%]{margin:auto}"],changeDetection:0})}return t})();var sp=class{auto_delete_disks;builtin;category;chassis;compute_id;console_auto_start;console_type;aux_type;default_name_format;disk0;disk1;exec_area;idlemax;idlepc;idlesleep;image;iomem;mac_addr;mmap;name;nvram;platform;private_config;ram;slot0;slot1;slot2;slot3;slot4;slot5;slot6;slot7;sparsemem;startup_config;symbol;system_id;template_id;template_type;usage;wic0;wic1;wic2;tags};var lp=(()=>{class t{c2600_nms=["NM-1FE-TX","NM-1E","NM-4E","NM-16ESW"];c3600_nms=["NM-1FE-TX","NM-1E","NM-4E","NM-16ESW","NM-4T"];c3700_nms=["NM-1FE-TX","NM-4T","NM-16ESW"];c7200_pas=["PA-A1","PA-FE-TX","PA-2FE-TX","PA-GE","PA-4T+","PA-8T","PA-4E","PA-8E","PA-POS-OC3"];c7200_io=["C7200-IO-FE","C7200-IO-2FE","C7200-IO-GE-E"];c1700_wics=["WIC-1T","WIC-2T","WIC-1ENET"];c2600_wics=["WIC-1T","WIC-2T"];c3700_wics=["WIC-1T","WIC-2T"];getConsoleTypes(){return["telnet","none"]}getCategories(){return[["Default","guest"],["Routers","router"],["Switches","switch"],["End devices","guest"],["Security devices","firewall"]]}getDefaultRamSettings(){return{c1700:160,c2600:160,c2691:192,c3600:192,c3725:128,c3745:256,c7200:512}}getDefaultNvRamSettings(){return{c1700:128,c2600:128,c2691:256,c3600:256,c3725:256,c3745:256,c7200:512}}getAvailablePlatforms(){return["c1700","c2600","c2691","c3725","c3745","c3600","c7200"]}getPlatformsWithEtherSwitchRouterOption(){return{c1700:!1,c2600:!0,c2691:!0,c3725:!0,c3745:!0,c3600:!0,c7200:!1}}getPlatformsWithChassis(){return{c1700:!0,c2600:!0,c2691:!1,c3725:!1,c3745:!1,c3600:!0,c7200:!1}}getChassis(){return{c1700:["1720","1721","1750","1751","1760"],c2600:["2610","2611","2620","2621","2610XM","2611XM","2620XM","2621XM","2650XM","2651XM"],c3600:["3620","3640","3660"]}}getNPETypes(){return["npe-100","npe-150","npe-175","npe-200","npe-225","npe-300","npe-400","npe-g2"]}getMidplaneTypes(){return["std","vxr"]}getAdapterMatrix(){let e={};for(let n of["c1700","c2600","c2691","c3725","c3745","c3600","c7200"])e[n]={};for(let n of["1720","1721","1750","1751","1760"])e.c1700[n]={0:["C1700-MB-1FE"]};for(let n of["1751","1760"])e.c1700[n][1]=["C1700-MB-WIC1"];for(let n of["2620","2610XM","2620XM","2650XM"])e.c2600[n]={0:["C2600-MB-1FE"],1:this.c2600_nms};for(let n of["2621","2611XM","2621XM","2651XM"])e.c2600[n]={0:["C2600-MB-2FE"],1:this.c2600_nms};e.c2600[2610]={0:["C2600-MB-1E"],1:this.c2600_nms},e.c2600[2611]={0:["C2600-MB-2E"],1:this.c2600_nms},e.c2691[""]={0:["GT96100-FE"],1:this.c3700_nms},e.c3600[3620]={};for(let n=0;n<2;n++)e.c3600[3620][n]=this.c3600_nms;e.c3600[3640]={};for(let n=0;n<4;n++)e.c3600[3640][n]=this.c3600_nms;e.c3600[3660]={0:["Leopard-2FE"]};for(let n=1;n<7;n++)e.c3600[3660][n]=this.c3600_nms;e.c3725[""]={0:["GT96100-FE"]};for(let n=1;n<3;n++)e.c3725[""][n]=this.c3700_nms;e.c3745[""]={0:["GT96100-FE"]};for(let n=1;n<5;n++)e.c3745[""][n]=this.c3700_nms;e.c7200[""]={0:this.c7200_io};for(let n=1;n<7;n++)e.c7200[""][n]=this.c7200_pas;return e}getWicMatrix(){let e={};return e.c1700={0:this.c1700_wics,1:this.c1700_wics},e.c2600={0:this.c2600_wics,1:this.c2600_wics,2:this.c2600_wics},e.c2691={0:this.c3700_wics,1:this.c3700_wics,2:this.c3700_wics},e.c3725={0:this.c3700_wics,1:this.c3700_wics,2:this.c3700_wics},e.c3745={0:this.c3700_wics,1:this.c3700_wics,2:this.c3700_wics},e}getIdlepcRegex(){return/^(0x[0-9a-fA-F]+)?$|^$/}getMacAddrRegex(){return/^([0-9a-fA-F]{4}\.){2}[0-9a-fA-F]{4}$|^$/}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Ss=(()=>{class t{httpController;constructor(e){this.httpController=e}getImages(e){return this.httpController.get(e,"/images?image_type=ios")}getImagePath(e,n){return`${e.protocol}//${e.host}:${e.port}/${Ai.current_version}/images/upload/${n}`}getTemplates(e){return this.httpController.get(e,"/templates")}getTemplate(e,n){return this.httpController.get(e,`/templates/${n}`)}addTemplate(e,n){return this.httpController.post(e,"/templates",n)}saveTemplate(e,n){return this.httpController.put(e,`/templates/${n.template_id}`,n)}findIdlePC(e,n){return this.httpController.post(e,`/computes/${Ai.compute_id}/dynamips/auto_idlepc`,n)}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var hme=()=>[0,1,2,3,4,5,6],fme=()=>[0,1,2],gme=(t,i)=>i.filename;function _me(t,i){if(t&1){let e=j();s(0,"button",6),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function vme(t,i){if(t&1&&(s(0,"mat-option",20),d(1),l()),t&2){let e=i.$implicit;x("value",e.filename),u(),X(" ",e.filename," ")}}function bme(t,i){if(t&1&&(s(0,"mat-option",20),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Cme(t,i){if(t&1&&(s(0,"mat-option",20),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function xme(t,i){if(t&1){let e=j();s(0,"mat-form-field",18)(1,"mat-label"),d(2,"Chassis"),l(),s(3,"mat-select",39),v("selectionChange",function(o){D(e);let r=b(2);return r.chassis.set(o.value),P(r.onChassisChosen())}),J(4,Cme,2,2,"mat-option",20,Fe),l()()}if(t&2){let e=b(2);u(3),x("value",e.chassis()),u(),ee(e.chassisOptions()[e.platform()])}}function yme(t,i){if(t&1){let e=j();s(0,"mat-checkbox",40),v("change",function(o){D(e);let r=b(2);return P(r.isEtherSwitchRouter.set(o.checked))}),d(1," This is an EtherSwitch router "),l()}if(t&2){let e=b(2);x("checked",e.isEtherSwitchRouter())}}function Sme(t,i){t&1&&F(0,"mat-option",20)}function wme(t,i){if(t&1&&(s(0,"mat-option",20),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Mme(t,i){if(t&1){let e=j();s(0,"mat-form-field",18)(1,"mat-label"),d(2),l(),s(3,"mat-select",41),v("selectionChange",function(o){D(e);let r=b().$implicit,a=b(3);return P(a.onAdapterChange(r,o.value))}),A(4,Sme,1,0,"mat-option",20),J(5,wme,2,2,"mat-option",20,Fe),l()()}if(t&2){let e=b().$implicit,n=b(3);u(2),X("Slot ",e),u(),x("placeholder",no("Slot ",e))("value",n.networkAdaptersForTemplate()[e]||""),u(),O(n.adapterMatrix()[n.platform()][n.chassis()||""][e].length>1&&!n.adapterMatrix()[n.platform()][n.chassis()||""][e][0].startsWith("C7200")?4:-1),u(),ee(n.adapterMatrix()[n.platform()][n.chassis()||""][e])}}function kme(t,i){if(t&1&&A(0,Mme,7,5,"mat-form-field",18),t&2){let e=i.$implicit,n=b(3);O(n.adapterMatrix()[n.platform()][n.chassis()||""]&&n.adapterMatrix()[n.platform()][n.chassis()||""][e]?0:-1)}}function Tme(t,i){t&1&&(s(0,"div",31),J(1,kme,1,1,null,null,Fe),l()),t&2&&(u(),ee(Jt(0,hme)))}function Eme(t,i){if(t&1&&(s(0,"mat-option",20),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Dme(t,i){if(t&1){let e=j();s(0,"mat-form-field",18)(1,"mat-label"),d(2),l(),s(3,"mat-select",41),v("selectionChange",function(o){D(e);let r=b().$implicit,a=b(3);return P(a.onWicChange(r,o.value))}),s(4,"mat-option",20),d(5),l(),J(6,Eme,2,2,"mat-option",20,Fe),l()()}if(t&2){let e=b().$implicit,n=b(3);u(2),X("WIC ",e),u(),x("placeholder",no("WIC ",e))("value",n.wicsForTemplate()[e]||""),u(2),X(" ",""," "),u(),ee(n.wicMatrix()[n.platform()][e])}}function Pme(t,i){if(t&1&&A(0,Dme,8,5,"mat-form-field",18),t&2){let e=i.$implicit,n=b(3);O(n.wicMatrix()[n.platform()]&&n.wicMatrix()[n.platform()][e]?0:-1)}}function Ime(t,i){t&1&&(s(0,"mat-step",32)(1,"div",10)(2,"div",31),J(3,Pme,1,1,null,null,Fe),l()()()),t&2&&(u(3),ee(Jt(0,fme)))}function Ame(t,i){if(t&1){let e=j();s(0,"main",5)(1,"section",7)(2,"mat-vertical-stepper",8)(3,"mat-step",9)(4,"div",10)(5,"mat-radio-group",11)(6,"mat-radio-button",12),v("click",function(){D(e);let o=b();return P(o.setControllerType("local"))}),d(7," Run this IOS router locally "),l()()()(),s(8,"mat-step",13)(9,"div",10)(10,"input",14,0),v("change",function(o){D(e);let r=b();return P(r.addImage(o))}),l(),s(12,"button",15),v("click",function(){D(e);let o=Re(11);return P(o.click())}),d(13," Click to add image "),l(),s(14,"span",16),d(15,"or create from existing one"),l(),s(16,"div",17)(17,"mat-form-field",18)(18,"mat-label"),d(19,"Image"),l(),s(20,"mat-select",19),v("selectionChange",function(o){D(e);let r=b();return r.imageName.set(o.value),P(r.onImageChosen())}),J(21,vme,2,2,"mat-option",20,gme),l()()()()(),s(23,"mat-step",21)(24,"div",10)(25,"div",17)(26,"mat-form-field",18)(27,"mat-label"),d(28,"Name"),l(),s(29,"input",22),v("input",function(o){D(e);let r=b();return P(r.templateName.set(o.target.value))}),l()(),s(30,"mat-form-field",18)(31,"mat-label"),d(32,"Platform"),l(),s(33,"mat-select",23),v("selectionChange",function(o){D(e);let r=b();return r.platform.set(o.value),P(r.onPlatformChosen())}),J(34,bme,2,2,"mat-option",20,Fe),l()(),A(36,xme,6,1,"mat-form-field",18),l(),A(37,yme,2,1,"mat-checkbox",24),l()(),s(38,"mat-step",25)(39,"div",10)(40,"div",17)(41,"mat-form-field",18)(42,"mat-label"),d(43,"Default RAM"),l(),s(44,"input",26),v("input",function(o){D(e);let r=b();return P(r.memory.set(o.target.value))}),l(),s(45,"span",27),d(46,"MB"),l()(),s(47,"mat-label",28)(48,"a",29),d(49,"Check for minimum and maximum RAM requirement"),l()()()()(),s(50,"mat-step",30)(51,"div",10),A(52,Tme,3,1,"div",31),l()(),A(53,Ime,5,1,"mat-step",32),s(54,"mat-step",33)(55,"div",10)(56,"div",17)(57,"mat-form-field",18)(58,"mat-label"),d(59,"Idle-PC"),l(),s(60,"input",34),v("input",function(o){D(e);let r=b();return P(r.idlepc.set(o.target.value))}),l()(),s(61,"button",35),v("click",function(){D(e);let o=b();return P(o.findIdlePC())}),d(62,"Idle-PC finder"),l()()()()()(),s(63,"div",36)(64,"button",37),v("click",function(){D(e);let o=b();return P(o.goBack())}),d(65,"Cancel"),l(),s(66,"button",38),v("click",function(){D(e);let o=b();return P(o.addTemplate())}),d(67," Add template "),l()()()}if(t&2){let e=b();u(2),x("linear",!0),u(),x("completed",e.isLocalComputerChosen()),u(3),x("checked",!0),u(2),x("completed",e.imageStepCompleted()),u(2),x("uploader",e.uploader()),u(10),x("value",e.imageName()),u(),ee(e.iosImages()),u(2),x("completed",e.namePlatformStepCompleted()),u(6),x("value",e.templateName()),u(4),x("value",e.platform()),u(),ee(e.platforms()),u(2),O(e.chassisOptions()[e.platform()]?36:-1),u(),O(e.platformsWithEtherSwitchRouterOption()[e.iosTemplate().platform]?37:-1),u(),x("completed",e.memoryStepCompleted()),u(6),x("value",e.memory()),u(4),x("href",e.ciscoUrl,$a),u(4),O(e.platform()?52:-1),u(),O(e.platform()&&e.wicMatrix()[e.platform()]?53:-1),u(7),x("value",e.idlepc())}}var yS=(()=>{class t{route=f(Ye);controllerService=f(We);iosService=f(Ss);toasterService=f(fe);router=f(ut);templateMocksService=f(Fr);iosConfigurationService=f(lp);computeService=f(Lo);uploadServiceService=f(Dl);progressService=f(zo);snackBar=f(Qr);cd=f(K);controller=me(void 0);iosTemplate=me(new sp);isEtherSwitchRouter=me(!1);imageName=ae("");templateName=ae("");platform=ae("");chassis=ae("");memory=ae("");idlepc=ae("");iosImages=me([]);platforms=me([]);platformsWithEtherSwitchRouterOption=me({});chassisOptions=me({});defaultRam=me({});networkAdaptersForTemplate=me([]);wicsForTemplate=me([]);adapterMatrix=me({});wicMatrix=me({});ciscoUrl="https://cfn.cloudapps.cisco.com/ITDIT/CFN/jsp/SearchBySoftware.jsp";uploader=me(void 0);isLocalComputerChosen=me(!0);subscription;imageStepCompleted=ri(()=>!!this.imageName());namePlatformStepCompleted=ri(()=>!!this.templateName()&&!!this.platform());memoryStepCompleted=ri(()=>!!this.memory());ngOnInit(){this.uploader.set(new Ka({url:""})),this.uploader().onAfterAddingFile=n=>{n.withCredentials=!1},this.uploader().onErrorItem=(n,o,r,a)=>{this.toasterService.error("An error occured: "+o)},this.uploader().onSuccessItem=(n,o,r,a)=>{this.getImages(),this.toasterService.success("Image uploaded")},this.uploader().onProgressItem=n=>{this.uploadServiceService.processBarCount(n.progress)},this.subscription=this.uploadServiceService.currentCancelItemDetails.subscribe(n=>{n&&this.cancelUploading()});let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller.set(n),this.getImages(),this.templateMocksService.getIosTemplate().subscribe(o=>{this.iosTemplate.set(o),this.platforms.set(this.iosConfigurationService.getAvailablePlatforms()),this.platformsWithEtherSwitchRouterOption.set(this.iosConfigurationService.getPlatformsWithEtherSwitchRouterOption()),this.chassisOptions.set(this.iosConfigurationService.getChassis()),this.defaultRam.set(this.iosConfigurationService.getDefaultRamSettings()),this.adapterMatrix.set(this.iosConfigurationService.getAdapterMatrix()),this.wicMatrix.set(this.iosConfigurationService.getWicMatrix())})})}fillDefaultSlots(){if(this.platform()){let e=this.adapterMatrix();for(let n=0;n<=6;n++){let o=e[this.platform()][this.chassis()||""][n];if(o&&(o.length===1||o[0].startsWith("C7200"))){let r=[...this.networkAdaptersForTemplate()];r[n]=o[0],this.networkAdaptersForTemplate.set(r)}}}}setControllerType(e){e==="local"&&this.isLocalComputerChosen.set(!0)}getImages(){this.iosService.getImages(this.controller()).subscribe(e=>{this.iosImages.set(e)})}addImage(e){let n=e.target.files[0].name.split("-")[0];this.templateName.set(n);let o=e.target.files[0].name,r=this.iosService.getImagePath(this.controller(),o);this.uploader().queue.forEach(c=>c.url=r);let a=this.uploader().queue[0];a.options&&(a.options.disableMultipart=!0),a.options.headers=[{name:"Authorization",value:"Bearer "+this.controller().authToken}],this.uploader().uploadItem(a),this.snackBar.openFromComponent(Il,{panelClass:"uplaoding-file-snackabar",data:{upload_file_type:"Image"}})}addTemplate(){if(this.imageName()&&this.templateName()&&this.platform()&&this.memory()){let e=this.iosTemplate();e.template_id=Ti(),e.image=this.imageName(),e.name=this.templateName(),e.platform=this.platform(),this.chassisOptions()[this.platform()]&&(e.chassis=this.chassis()),e.ram=+this.memory(),this.isEtherSwitchRouter()&&(e.symbol="multilayer_switch",e.category="switch"),this.networkAdaptersForTemplate().length>0&&this.completeAdaptersData(e),this.wicsForTemplate().length>0&&this.completeWicsData(e),this.idlepc()&&(e.idlepc=this.idlepc()),e.compute_id="local",this.iosService.addTemplate(this.controller(),e).subscribe({next:n=>{this.goBack()},error:n=>{let o=n.error?.message||n.message||"Failed to add ios template";this.toasterService.error(o),this.cd.markForCheck()}})}else this.toasterService.error("Fill all required fields")}completeAdaptersData(e){let n=this.adapterMatrix();for(let o=0;o<=6;o++)n[e.platform][e.chassis||""][o]&&(this.networkAdaptersForTemplate()[o]===void 0?e[`slot${o}`]="":e[`slot${o}`]=this.networkAdaptersForTemplate()[o])}completeWicsData(e){let n=this.wicMatrix();for(let o=0;o<=3;o++)n[e.platform][o]&&(this.wicsForTemplate()[o]===void 0?e[`wic${o}`]="":e[`wic${o}`]=this.wicsForTemplate()[o])}goBack(){this.router.navigate(["/controller",this.controller().id,"preferences","dynamips","templates"])}onImageChosen(){let e=this.imageName().split("-")[0];this.templateName.set(e),e==="c3620"||e==="c3640"||e==="c3660"?this.platform.set("c3600"):this.platform.set(e),e==="c3620"||e==="c3640"||e==="c3660"?this.chassis.set(e.substring(1)):e==="c1700"?this.chassis.set("1760"):e==="c2600"?this.chassis.set("2651XM"):this.chassis.set(""),this.memory.set(String(this.defaultRam()[this.platform()])),this.fillDefaultSlots()}onPlatformChosen(){let e=this.iosTemplate();e.chassis="",this.iosTemplate.set(H({},e)),this.networkAdaptersForTemplate.set([]),this.wicsForTemplate.set([]),this.chassisOptions()[this.platform()]||this.fillDefaultSlots()}onChassisChosen(){this.networkAdaptersForTemplate.set([]),this.chassisOptions()[this.platform()]&&this.fillDefaultSlots()}cancelUploading(){this.uploader().clearQueue(),this.uploadServiceService.processBarCount(null),this.toasterService.warning("File upload cancelled")}onAdapterChange(e,n){this.networkAdaptersForTemplate.update(o=>{let r=[...o];return r[e]=n,r})}onWicChange(e,n){this.wicsForTemplate.update(o=>{let r=[...o];return r[e]=n,r})}findIdlePC(){let e={image:this.imageName(),platform:this.platform(),ram:+this.memory()};this.progressService.activate(),this.iosService.findIdlePC(this.controller(),e).subscribe(n=>{this.progressService.deactivate(),n.idlepc!==null&&(this.idlepc.set(n.idlepc),this.toasterService.success(`Idle-PC value found: ${n.idlepc}`))},n=>{this.progressService.deactivate(),this.toasterService.error("Error while finding an idle-PC value")})}ngOnDestroy(){this.subscription.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-add-ios-template"]],inputs:{imageName:[1,"imageName"],templateName:[1,"templateName"],platform:[1,"platform"],chassis:[1,"chassis"],memory:[1,"memory"],idlepc:[1,"idlepc"]},outputs:{imageName:"imageNameChange",templateName:"templateNameChange",platform:"platformChange",chassis:"chassisChange",memory:"memoryChange",idlepc:"idlepcChange"},decls:6,vars:2,consts:[["file",""],[1,"ios-add"],[1,"ios-add__header"],["mat-icon-button","",1,"ios-add__back-btn"],[1,"ios-add__title"],[1,"ios-add__content"],["mat-icon-button","",1,"ios-add__back-btn",3,"click"],[1,"ios-add__stepper-card"],[1,"ios-add__stepper",3,"linear"],["label","Controller type",3,"completed"],[1,"ios-add__step-content"],[1,"ios-add__radio-group"],["value","1",1,"ios-add__radio",3,"click","checked"],["label","IOS image",3,"completed"],["type","file","accept",".bin, .image","ng2FileSelect","",1,"ios-add__file-input",3,"change","uploader"],["mat-raised-button","","color","primary",1,"ios-add__upload-btn",3,"click"],[1,"ios-add__or-text"],[1,"ios-add__form"],["appearance","fill",1,"ios-add__field"],["placeholder","Image",3,"selectionChange","value"],[3,"value"],["label","Name and platform",3,"completed"],["matInput","","type","text","placeholder","Name",3,"input","value"],["placeholder","Platform",3,"selectionChange","value"],[1,"ios-add__checkbox",3,"checked"],["label","Memory",3,"completed"],["matInput","","type","number","placeholder","Default RAM",3,"input","value"],["matSuffix",""],[1,"ios-add__ram-link"],[3,"href"],["label","Network adapters"],[1,"ios-add__adapters"],["label","WIC modules"],["label","Idle-PC"],["matInput","","type","text","placeholder","Idle-PC",3,"input","value"],["mat-button","",1,"ios-add__action-btn",3,"click"],[1,"ios-add__actions"],["mat-button","",1,"ios-add__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"ios-add__submit-btn",3,"click"],["placeholder","Chassis",3,"selectionChange","value"],[1,"ios-add__checkbox",3,"change","checked"],[3,"selectionChange","placeholder","value"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"header",2),A(2,_me,3,0,"button",3),s(3,"h1",4),d(4,"New IOS router template"),l()(),A(5,Ame,68,17,"main",5),l()),n&2&&(u(2),O(o.controller()?2:-1),u(3),O(o.iosTemplate()?5:-1))},dependencies:[Z,nt,at,te,se,$,le,ze,Dt,go,Io,ko,Me,ke,lt,Fo,we,Te,Mt,At,St,El,cc,dc,xl,Gc],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.ios-add__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.ios-add__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.ios-add__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.ios-add__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.ios-add__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.ios-add__stepper-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.ios-add__stepper[_ngcontent-%COMP%]{background:transparent}.ios-add__step-content[_ngcontent-%COMP%]{padding:16px 24px 24px;display:flex;flex-direction:column;gap:16px}.ios-add__radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.ios-add__radio[_ngcontent-%COMP%]{font-size:16px}.ios-add__file-input[_ngcontent-%COMP%]{display:none}.ios-add__upload-btn[_ngcontent-%COMP%]{align-self:flex-start}.ios-add__or-text[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface-variant)}.ios-add__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.ios-add__field[_ngcontent-%COMP%]{width:100%}.ios-add__checkbox[_ngcontent-%COMP%]{margin-top:8px}.ios-add__ram-link[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-primary)}.ios-add__ram-link[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:var(--mat-sys-primary);text-decoration:none}.ios-add__ram-link[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.ios-add__adapters[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}.ios-add__action-btn[_ngcontent-%COMP%]{align-self:flex-start;text-transform:none}.ios-add__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.ios-add__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.ios-add__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.ios-add__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.ios-add__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.ios-add__title[_ngcontent-%COMP%]{font-size:24px}.ios-add__content[_ngcontent-%COMP%]{padding:0 16px 16px}.ios-add__step-content[_ngcontent-%COMP%]{padding:12px 16px 20px}.ios-add__adapters[_ngcontent-%COMP%]{grid-template-columns:1fr}.ios-add__actions[_ngcontent-%COMP%]{flex-direction:column}.ios-add__cancel-btn[_ngcontent-%COMP%], .ios-add__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();function Ome(t,i){if(t&1){let e=j();s(0,"button",12),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}var SS=(()=>{class t{route=f(Ye);controllerService=f(We);iosService=f(Ss);toasterService=f(fe);router=f(ut);formBuilder=f(jt);cd=f(K);controller;templateName="";iosTemplate;formGroup;constructor(){this.formGroup=this.formBuilder.group({templateName:new re("",be.required)})}ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.iosService.getTemplate(this.controller,n).subscribe(r=>{this.iosTemplate=r,this.templateName=`Copy of ${this.iosTemplate.name}`,this.cd.markForCheck()})})}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","dynamips","templates"])}addTemplate(){this.formGroup.invalid?this.toasterService.error("Fill all required fields"):(this.iosTemplate.template_id=Ti(),this.iosTemplate.name=this.formGroup.get("templateName").value,this.iosService.addTemplate(this.controller,this.iosTemplate).subscribe({next:e=>{this.goBack()},error:e=>{let n=e.error?.message||e.message||"Failed to copy ios template";this.toasterService.error(n),this.cd.markForCheck()}}))}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-copy-ios-template"]],decls:17,vars:2,consts:[[1,"ios-copy"],[1,"ios-copy__header"],["mat-icon-button","",1,"ios-copy__back-btn"],[1,"ios-copy__title"],[1,"ios-copy__content"],[1,"ios-copy__form-card"],[1,"ios-copy__form",3,"formGroup"],["appearance","fill",1,"ios-copy__field"],["matInput","","type","text","placeholder","Name","formControlName","templateName"],[1,"ios-copy__actions"],["mat-button","",1,"ios-copy__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"ios-copy__submit-btn",3,"click"],["mat-icon-button","",1,"ios-copy__back-btn",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1),A(2,Ome,3,0,"button",2),s(3,"h1",3),d(4,"Copy IOS router template"),l()(),s(5,"main",4)(6,"section",5)(7,"form",6)(8,"mat-form-field",7)(9,"mat-label"),d(10,"Template name"),l(),F(11,"input",8),l()()(),s(12,"div",9)(13,"button",10),v("click",function(){return o.goBack()}),d(14,"Cancel"),l(),s(15,"button",11),v("click",function(){return o.addTemplate()}),d(16," Copy template "),l()()()()),n&2&&(u(2),O(o.controller?2:-1),u(5),x("formGroup",o.formGroup))},dependencies:[Z,nt,Ue,vt,mt,He,ct,pt,bt,at,te,se,$,le,ze,Dt,Me,ke,lt,we,Te],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.ios-copy__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.ios-copy__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.ios-copy__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.ios-copy__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.ios-copy__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.ios-copy__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);padding:24px}.ios-copy__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.ios-copy__field[_ngcontent-%COMP%]{width:100%}.ios-copy__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.ios-copy__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.ios-copy__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.ios-copy__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.ios-copy__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.ios-copy__title[_ngcontent-%COMP%]{font-size:24px}.ios-copy__content[_ngcontent-%COMP%]{padding:0 16px 16px}.ios-copy__form-card[_ngcontent-%COMP%]{padding:16px}.ios-copy__actions[_ngcontent-%COMP%]{flex-direction:column}.ios-copy__cancel-btn[_ngcontent-%COMP%], .ios-copy__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var NV=()=>({standalone:!0}),Nme=()=>["c1700","c2600","c2691","c3600","c3725","c3745"],Rme=()=>[0,1,2,3,4,5,6],Fme=()=>[0,1,2];function Lme(t,i){if(t&1){let e=j();s(0,"button",6),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function Bme(t,i){if(t&1&&(s(0,"div",24)(1,"span",25),d(2,"Chassis"),l(),s(3,"span",26),d(4),l()()),t&2){let e=b(3);u(4),U(e.iosTemplate.chassis)}}function Vme(t,i){if(t&1&&(s(0,"mat-option",28),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),U(e[0])}}function zme(t,i){if(t&1){let e=j();s(0,"mat-chip",36),v("removed",function(){let o=D(e).$implicit,r=b(3);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",37),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function jme(t,i){if(t&1&&(s(0,"mat-option",28),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function $me(t,i){if(t&1&&(s(0,"mat-option",28),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function Hme(t,i){if(t&1){let e=j();s(0,"form",11)(1,"mat-form-field",17)(2,"mat-label"),d(3,"Template name"),l(),F(4,"input",18),l(),s(5,"mat-form-field",17)(6,"mat-label"),d(7,"Default name format"),l(),F(8,"input",19),l(),s(9,"div",20)(10,"mat-form-field",21)(11,"mat-label"),d(12,"Symbol"),l(),F(13,"input",22),l(),s(14,"button",23),v("click",function(){D(e);let o=b(2);return P(o.chooseSymbol())}),d(15,"Choose symbol"),l()(),s(16,"div",24)(17,"span",25),d(18,"Platform"),l(),s(19,"span",26),d(20),l()(),A(21,Bme,5,1,"div",24),s(22,"mat-form-field",17)(23,"mat-label"),d(24,"Category"),l(),s(25,"mat-select",27),J(26,Vme,2,2,"mat-option",28,Fe),l()(),s(28,"mat-form-field",17)(29,"mat-label"),d(30,"Tags"),l(),s(31,"mat-chip-grid",null,0),J(33,zme,4,1,"mat-chip",null,Fe),l(),s(35,"input",29),v("matChipInputTokenEnd",function(o){D(e);let r=b(2);return P(r.addTag(o))}),l()(),s(36,"mat-form-field",17)(37,"mat-label"),d(38,"IOS image path"),l(),F(39,"input",30),l(),s(40,"mat-form-field",17)(41,"mat-label"),d(42,"Initial startup-config"),l(),F(43,"input",31),s(44,"mat-hint"),d(45,"Filename only (e.g. ios-startup-config.txt)"),l()(),s(46,"mat-form-field",17)(47,"mat-label"),d(48,"Initial private-config"),l(),F(49,"input",32),s(50,"mat-hint"),d(51,"Filename only (e.g. ios-private-config.txt)"),l()(),s(52,"mat-form-field",17)(53,"mat-label"),d(54,"Console type"),l(),s(55,"mat-select",33),J(56,jme,2,2,"mat-option",28,Fe),l()(),s(58,"mat-form-field",17)(59,"mat-label"),d(60,"Auxiliary console type"),l(),s(61,"mat-select",34),J(62,$me,2,2,"mat-option",28,Fe),l()(),s(64,"mat-checkbox",35),d(65,"Auto start console"),l()()}if(t&2){let e=Re(32),n=b(2);x("formGroup",n.generalSettingsForm),u(20),U(n.iosTemplate.platform),u(),O(n.iosTemplate.chassis?21:-1),u(4),x("ngModelOptions",Jt(7,NV)),u(),ee(n.categories),u(7),ee(n.iosTemplate==null?null:n.iosTemplate.tags),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(14),x("ngModelOptions",Jt(8,NV)),u(7),ee(n.consoleTypes),u(6),ee(n.consoleTypes)}}function Ume(t,i){t&1&&(s(0,"mat-form-field",17)(1,"mat-label"),d(2,"I/O memory"),l(),F(3,"input",45),s(4,"mat-hint"),d(5,"Percentage of RAM for I/O memory"),l()())}function Gme(t,i){if(t&1&&(s(0,"div",11)(1,"h6",38),d(2,"Memory"),l(),s(3,"div",39)(4,"mat-form-field",17)(5,"mat-label"),d(6,"RAM size"),l(),F(7,"input",40),s(8,"span",41),d(9,"MB"),l()(),s(10,"mat-form-field",17)(11,"mat-label"),d(12,"NVRAM size"),l(),F(13,"input",42),s(14,"span",41),d(15,"MB"),l()(),A(16,Ume,6,0,"mat-form-field",17),l(),s(17,"h6",38),d(18,"Disk"),l(),s(19,"div",39)(20,"mat-form-field",17)(21,"mat-label"),d(22,"PCMCIA disk0"),l(),F(23,"input",43),l(),s(24,"mat-form-field",17)(25,"mat-label"),d(26,"PCMCIA disk1"),l(),F(27,"input",44),l()(),s(28,"mat-checkbox",35),d(29,"Automatically delete NVRAM and disk files"),l()()),t&2){let e=b(2);x("formGroup",e.memoryForm),u(16),O(Jt(2,Nme).includes(e.iosTemplate.platform)?16:-1)}}function Wme(t,i){t&1&&(s(0,"mat-option",28),d(1),l()),t&2&&(u(),U(""))}function qme(t,i){if(t&1&&(s(0,"mat-option",28),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function Xme(t,i){if(t&1){let e=j();s(0,"mat-form-field",17)(1,"mat-label"),d(2),l(),s(3,"mat-select",46),v("selectionChange",function(o){D(e);let r=b().$implicit,a=b(3);return P(a.networkAdaptersForTemplate[r]=o.value)}),A(4,Wme,2,1,"mat-option",28),J(5,qme,2,2,"mat-option",28,Fe),l()()}if(t&2){let e=b().$implicit,n=b(3);u(2),X("Slot ",e),u(),x("placeholder",no("Slot ",e))("value",n.networkAdaptersForTemplate[e]),u(),O(n.adapterMatrix[n.iosTemplate.platform][n.iosTemplate.chassis||""][e].length>1&&!n.adapterMatrix[n.iosTemplate.platform][n.iosTemplate.chassis||""][e][0].startsWith("C7200")?4:-1),u(),ee(n.adapterMatrix[n.iosTemplate.platform][n.iosTemplate.chassis||""][e])}}function Qme(t,i){if(t&1&&A(0,Xme,7,5,"mat-form-field",17),t&2){let e=i.$implicit,n=b(3);O(n.adapterMatrix[n.iosTemplate.platform]&&n.adapterMatrix[n.iosTemplate.platform][n.iosTemplate.chassis||""]&&n.adapterMatrix[n.iosTemplate.platform][n.iosTemplate.chassis||""][e]?0:-1)}}function Yme(t,i){if(t&1&&(s(0,"mat-option",28),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function Kme(t,i){if(t&1){let e=j();s(0,"mat-form-field",17)(1,"mat-label"),d(2),l(),s(3,"mat-select",46),v("selectionChange",function(o){D(e);let r=b().$implicit,a=b(4);return P(a.wicsForTemplate[r]=o.value)}),s(4,"mat-option",28),d(5),l(),J(6,Yme,2,2,"mat-option",28,Fe),l()()}if(t&2){let e=b().$implicit,n=b(4);u(2),X("WIC ",e),u(),x("placeholder",no("WIC ",e))("value",n.wicsForTemplate[e]),u(2),U(""),u(),ee(n.wicMatrix[n.iosTemplate.platform][e])}}function Zme(t,i){if(t&1&&A(0,Kme,8,5,"mat-form-field",17),t&2){let e=i.$implicit,n=b(4);O(n.wicMatrix[n.iosTemplate.platform]&&n.wicMatrix[n.iosTemplate.platform][e]?0:-1)}}function Jme(t,i){t&1&&(s(0,"h6",38),d(1,"WICs"),l(),s(2,"div",39),J(3,Zme,1,1,null,null,Fe),l()),t&2&&(u(3),ee(Jt(0,Fme)))}function epe(t,i){if(t&1&&(s(0,"div",12)(1,"h6",38),d(2,"Adapters"),l(),s(3,"div",39),J(4,Qme,1,1,null,null,Fe),l(),A(6,Jme,5,1),l()),t&2){let e=b(2);u(4),ee(Jt(1,Rme)),u(2),O(e.wicMatrix[e.iosTemplate.platform]?6:-1)}}function tpe(t,i){if(t&1){let e=j();s(0,"form",11)(1,"mat-form-field",17)(2,"mat-label"),d(3,"System ID"),l(),F(4,"input",47),l(),s(5,"div",20)(6,"mat-form-field",21)(7,"mat-label"),d(8,"Base MAC (format: xxxx.xxxx.xxxx)"),l(),F(9,"input",48),s(10,"mat-hint"),d(11,"Example: aaaa.bbbb.cccc (leave empty to let the server allocate a MAC address)."),l()(),s(12,"button",49),v("click",function(){D(e);let o=b(2);return P(o.generateBaseMAC())}),d(13,"Generate Base MAC"),l()(),s(14,"div",20)(15,"mat-form-field",21)(16,"mat-label"),d(17,"Idle-PC"),l(),F(18,"input",50),l(),s(19,"button",49),v("click",function(){D(e);let o=b(2);return P(o.findIdlePC())}),d(20,"Idle-PC finder"),l()(),s(21,"mat-form-field",17)(22,"mat-label"),d(23,"Idlemax"),l(),F(24,"input",51),l(),s(25,"mat-form-field",17)(26,"mat-label"),d(27,"Idlesleep"),l(),F(28,"input",52),l(),s(29,"mat-form-field",17)(30,"mat-label"),d(31,"Exec area"),l(),F(32,"input",53),l(),s(33,"mat-checkbox",54),d(34,"Enable mmap support"),l(),s(35,"mat-checkbox",55),d(36,"Enable sparse memory support"),l()()}if(t&2){let e=b(2);x("formGroup",e.advancedForm)}}function npe(t,i){t&1&&(s(0,"div",13)(1,"mat-form-field",56)(2,"mat-label"),d(3,"Usage"),l(),F(4,"textarea",57),l()())}function ipe(t,i){if(t&1){let e=j();s(0,"main",5)(1,"section",7)(2,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("general"))}),s(3,"h3",9),d(4,"General settings"),l(),s(5,"mat-icon",10),d(6),l()(),A(7,Hme,66,9,"form",11),l(),s(8,"section",7)(9,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("memory"))}),s(10,"h3",9),d(11,"Memories and disks"),l(),s(12,"mat-icon",10),d(13),l()(),A(14,Gme,30,3,"div",11),l(),s(15,"section",7)(16,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("slots"))}),s(17,"h3",9),d(18,"Slots"),l(),s(19,"mat-icon",10),d(20),l()(),A(21,epe,7,2,"div",12),l(),s(22,"section",7)(23,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("advanced"))}),s(24,"h3",9),d(25,"Advanced"),l(),s(26,"mat-icon",10),d(27),l()(),A(28,tpe,37,1,"form",11),l(),s(29,"section",7)(30,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("usage"))}),s(31,"h3",9),d(32,"Usage"),l(),s(33,"mat-icon",10),d(34),l()(),A(35,npe,5,0,"div",13),l(),s(36,"div",14)(37,"button",15),v("click",function(){D(e);let o=b();return P(o.goBack())}),d(38,"Cancel"),l(),s(39,"button",16),v("click",function(){D(e);let o=b();return P(o.onSave())}),d(40,"Save"),l()()()}if(t&2){let e=b();u(6),U(e.generalSettingsExpanded?"expand_less":"expand_more"),u(),O(e.generalSettingsExpanded?7:-1),u(6),U(e.memoryExpanded?"expand_less":"expand_more"),u(),O(e.memoryExpanded?14:-1),u(6),U(e.slotsExpanded?"expand_less":"expand_more"),u(),O(e.slotsExpanded?21:-1),u(6),U(e.advancedExpanded?"expand_less":"expand_more"),u(),O(e.advancedExpanded?28:-1),u(6),U(e.usageExpanded?"expand_less":"expand_more"),u(),O(e.usageExpanded?35:-1)}}var wS=(()=>{class t{route=f(Ye);controllerService=f(We);iosService=f(Ss);toasterService=f(fe);formBuilder=f(jt);iosConfigurationService=f(lp);progressService=f(zo);router=f(ut);cd=f(K);dialog=f(Je);dialogConfig=f(Ji);controller;iosTemplate;platforms=[];consoleTypes=[];categories=[];platformsWithEtherSwitchRouterOption={};platformsWithChassis={};chassis={};defaultRam={};defaultNvram={};networkAdaptersForTemplate=[];wicsForTemplate=[];adapterMatrix={};wicMatrix={};separatorKeysCodes=[13,188];generalSettingsForm;memoryForm;advancedForm;generalSettingsExpanded=!1;memoryExpanded=!1;slotsExpanded=!1;advancedExpanded=!1;usageExpanded=!1;constructor(){this.generalSettingsForm=this.formBuilder.group({templateName:new re("",be.required),defaultName:new re("",be.required),symbol:new re("",be.required),path:new re("",be.required),initialConfig:new re("",be.required)}),this.memoryForm=this.formBuilder.group({ram:new re("",be.required),nvram:new re("",be.required),iomemory:new re(""),disk0:new re("",be.required),disk1:new re("",be.required)}),this.advancedForm=this.formBuilder.group({systemId:new re("",be.required),idlemax:new re("",be.required),idlesleep:new re("",be.required),execarea:new re("",be.required),idlepc:new re("",be.pattern(this.iosConfigurationService.getIdlepcRegex())),mac_addr:new re("",be.pattern(this.iosConfigurationService.getMacAddrRegex())),mmap:new re(!0),sparsemem:new re(!0)})}ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.getConfiguration(),this.iosService.getTemplate(this.controller,n).subscribe(r=>{this.iosTemplate=r,this.iosTemplate.tags||(this.iosTemplate.tags=[]),this.fillSlotsData(),this.populateForms(),this.cd.markForCheck()})})}getConfiguration(){this.platforms=this.iosConfigurationService.getAvailablePlatforms(),this.platformsWithEtherSwitchRouterOption=this.iosConfigurationService.getPlatformsWithEtherSwitchRouterOption(),this.platformsWithChassis=this.iosConfigurationService.getPlatformsWithChassis(),this.chassis=this.iosConfigurationService.getChassis(),this.defaultRam=this.iosConfigurationService.getDefaultRamSettings(),this.consoleTypes=this.iosConfigurationService.getConsoleTypes(),this.categories=this.iosConfigurationService.getCategories(),this.adapterMatrix=this.iosConfigurationService.getAdapterMatrix(),this.wicMatrix=this.iosConfigurationService.getWicMatrix()}findIdlePC(){let e={image:this.iosTemplate.image,platform:this.iosTemplate.platform,ram:this.iosTemplate.ram};this.progressService.activate(),this.iosService.findIdlePC(this.controller,e).subscribe(n=>{this.progressService.deactivate(),n.idlepc!==null&&(this.iosTemplate.idlepc=n.idlepc,this.advancedForm.get("idlepc").setValue(n.idlepc),this.toasterService.success(`Idle-PC value found: ${n.idlepc}`))},n=>{this.progressService.deactivate(),this.toasterService.error("Error while finding an idle-PC value")})}generateBaseMAC(){let e="0123456789abcdef",n=new Uint8Array(6);crypto.getRandomValues(n);let o="";for(let r=0;r<3;r++){for(let a=0;a<4;a++){let c=r*2+Math.floor(a/2),m=a%2,p=n[c]>>m*4&15;o+=e[p]}r<2&&(o+=".")}this.iosTemplate.mac_addr=o,this.advancedForm.get("mac_addr").setValue(o),this.toasterService.success(`Base MAC generated: ${o}`)}fillSlotsData(){for(let e=0;e<=6;e++)this.iosTemplate[`slot${e}`]&&(this.networkAdaptersForTemplate[e]=this.iosTemplate[`slot${e}`]);for(let e=0;e<=3;e++)this.iosTemplate[`wic${e}`]&&(this.wicsForTemplate[e]=this.iosTemplate[`wic${e}`])}populateForms(){this.generalSettingsForm.patchValue({templateName:this.iosTemplate.name,defaultName:this.iosTemplate.default_name_format,symbol:this.iosTemplate.symbol,path:this.iosTemplate.image,initialConfig:this.iosTemplate.startup_config}),this.memoryForm.patchValue({ram:this.iosTemplate.ram,nvram:this.iosTemplate.nvram,disk0:this.iosTemplate.disk0,disk1:this.iosTemplate.disk1}),this.advancedForm.patchValue({systemId:this.iosTemplate.system_id,idlemax:this.iosTemplate.idlemax,idlesleep:this.iosTemplate.idlesleep,execarea:this.iosTemplate.exec_area,idlepc:this.iosTemplate.idlepc,mac_addr:this.iosTemplate.mac_addr,mmap:this.iosTemplate.mmap,sparsemem:this.iosTemplate.sparsemem})}saveSlotsData(){for(let e=0;e<=6;e++)this.adapterMatrix?.[this.iosTemplate.platform]?.[this.iosTemplate.chassis||""]?.[e]?this.networkAdaptersForTemplate[e]===void 0?this.iosTemplate[`slot${e}`]="":this.iosTemplate[`slot${e}`]=this.networkAdaptersForTemplate[e]:delete this.iosTemplate[`slot${e}`];for(let e=0;e<=3;e++)this.wicMatrix?.[this.iosTemplate.platform]?.[e]?this.wicsForTemplate[e]===void 0?this.iosTemplate[`wic${e}`]="":this.iosTemplate[`wic${e}`]=this.wicsForTemplate[e]:delete this.iosTemplate[`wic${e}`]}onSave(){if(this.generalSettingsForm.invalid||this.memoryForm.invalid||this.advancedForm.invalid){let e=[];this.generalSettingsForm.get("templateName").invalid&&e.push("Template name"),this.generalSettingsForm.get("defaultName").invalid&&e.push("Default name format"),this.generalSettingsForm.get("symbol").invalid&&e.push("Symbol"),this.generalSettingsForm.get("path").invalid&&e.push("IOS image path"),this.generalSettingsForm.get("initialConfig").invalid&&e.push("Initial startup-config"),this.memoryForm.get("ram").invalid&&e.push("RAM size"),this.memoryForm.get("nvram").invalid&&e.push("NVRAM size"),this.memoryForm.get("disk0").invalid&&e.push("PCMCIA disk0"),this.memoryForm.get("disk1").invalid&&e.push("PCMCIA disk1"),this.advancedForm.get("systemId").invalid&&e.push("System ID"),this.advancedForm.get("mac_addr").invalid&&e.push("Base MAC (format: xxxx.xxxx.xxxx)"),this.advancedForm.get("idlemax").invalid&&e.push("Idlemax"),this.advancedForm.get("idlesleep").invalid&&e.push("Idlesleep"),this.advancedForm.get("execarea").invalid&&e.push("Exec area"),this.toasterService.error(`Missing required fields: ${e.join(", ")}`)}else this.saveSlotsData(),this.iosTemplate.name=this.generalSettingsForm.get("templateName").value,this.iosTemplate.default_name_format=this.generalSettingsForm.get("defaultName").value,this.iosTemplate.symbol=this.generalSettingsForm.get("symbol").value,this.iosTemplate.image=this.generalSettingsForm.get("path").value,this.iosTemplate.startup_config=this.generalSettingsForm.get("initialConfig").value,this.iosTemplate.ram=this.memoryForm.get("ram").value,this.iosTemplate.nvram=this.memoryForm.get("nvram").value,this.iosTemplate.disk0=this.memoryForm.get("disk0").value,this.iosTemplate.disk1=this.memoryForm.get("disk1").value,this.iosTemplate.system_id=this.advancedForm.get("systemId").value,this.iosTemplate.idlemax=this.advancedForm.get("idlemax").value,this.iosTemplate.idlesleep=this.advancedForm.get("idlesleep").value,this.iosTemplate.exec_area=this.advancedForm.get("execarea").value,this.iosTemplate.idlepc=this.advancedForm.get("idlepc").value,this.iosTemplate.mac_addr=this.advancedForm.get("mac_addr").value,this.iosTemplate.mmap=this.advancedForm.get("mmap").value,this.iosTemplate.sparsemem=this.advancedForm.get("sparsemem").value,this.iosService.saveTemplate(this.controller,this.iosTemplate).subscribe(e=>{this.toasterService.success("Changes saved")})}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","dynamips","templates"])}chooseSymbol(){let e=this.dialogConfig.openConfig("templateSymbol",{autoFocus:!1,disableClose:!1,data:{controller:this.controller,symbol:this.iosTemplate.symbol}});this.dialog.open(pr,e).afterClosed().subscribe(o=>{o&&(this.iosTemplate.symbol=o,this.generalSettingsForm.get("symbol").setValue(o))})}symbolChanged(e){this.iosTemplate.symbol=e}addTag(e){let n=(e.value||"").trim();n&&this.iosTemplate&&(this.iosTemplate.tags||(this.iosTemplate.tags=[]),this.iosTemplate.tags.push(n)),e.chipInput&&e.chipInput.clear()}removeTag(e){if(!this.iosTemplate.tags)return;let n=this.iosTemplate.tags.indexOf(e);n>=0&&this.iosTemplate.tags.splice(n,1)}toggleSection(e){switch(e){case"general":this.generalSettingsExpanded=!this.generalSettingsExpanded;break;case"memory":this.memoryExpanded=!this.memoryExpanded;break;case"slots":this.slotsExpanded=!this.slotsExpanded;break;case"advanced":this.advancedExpanded=!this.advancedExpanded;break;case"usage":this.usageExpanded=!this.usageExpanded;break}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-ios-template-details"]],decls:6,vars:2,consts:[["chipList",""],[1,"ios-details"],[1,"ios-details__header"],["mat-icon-button","",1,"ios-details__back-btn"],[1,"ios-details__title"],[1,"ios-details__content"],["mat-icon-button","",1,"ios-details__back-btn",3,"click"],[1,"ios-details__form-card"],[1,"ios-details__section-header",3,"click"],[1,"ios-details__section-title"],[1,"ios-details__expand-icon"],[1,"ios-details__form",3,"formGroup"],[1,"ios-details__form"],[1,"preferences__usage-form"],[1,"ios-details__actions"],["mat-button","",1,"ios-details__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"ios-details__save-btn",3,"click"],["appearance","fill",1,"ios-details__field"],["matInput","","type","text","formControlName","templateName","placeholder","Template name"],["matInput","","type","text","formControlName","defaultName","placeholder","Default name format"],[1,"ios-details__symbol-row"],["appearance","fill",1,"ios-details__field","ios-details__field--flex"],["matInput","","type","text","formControlName","symbol","placeholder","Symbol"],["mat-button","",1,"ios-details__symbol-btn",3,"click"],[1,"ios-details__info-row"],[1,"ios-details__info-label"],[1,"ios-details__info-value"],["placeholder","Category",3,"ngModelOptions"],[3,"value"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],["matInput","","type","text","formControlName","path","placeholder","IOS image path"],["matInput","","type","text","formControlName","initialConfig","placeholder","Initial startup-config"],["matInput","","type","text","placeholder","Initial private-config",3,"ngModelOptions"],["placeholder","Console type"],["placeholder","Auxiliary console type"],[1,"ios-details__checkbox"],[3,"removed"],["matChipRemove",""],[1,"ios-details__section-subtitle"],[1,"ios-details__adapters"],["matInput","","type","number","min","32","step","32","formControlName","ram","placeholder","RAM size"],["matSuffix",""],["matInput","","type","number","min","32","step","32","formControlName","nvram","placeholder","NVRAM size"],["matInput","","type","number","min","0","step","4","formControlName","disk0","placeholder","PCMCIA disk0"],["matInput","","type","number","min","0","step","4","formControlName","disk1","placeholder","PCMCIA disk1"],["matInput","","type","number","min","0","max","100","step","5","formControlName","iomemory","placeholder","I/O memory"],[3,"selectionChange","placeholder","value"],["matInput","","type","text","formControlName","systemId","placeholder","System ID"],["matInput","","type","text","formControlName","mac_addr","placeholder","Base MAC"],["mat-button","",1,"ios-details__action-btn",3,"click"],["matInput","","type","text","formControlName","idlepc","placeholder","Idle-PC"],["matInput","","type","number","min","100","step","100","formControlName","idlemax","placeholder","Idlemax"],["matInput","","type","number","min","1","step","10","formControlName","idlesleep","placeholder","Idlesleep"],["matInput","","type","number","min","0","step","4","formControlName","execarea","placeholder","Exec area"],["formControlName","mmap",1,"ios-details__checkbox"],["formControlName","sparsemem",1,"ios-details__checkbox"],["appearance","fill",1,"preferences__usage-field--full"],["matInput","","type","text"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"header",2),A(2,Lme,3,0,"button",3),s(3,"h1",4),d(4,"IOS router template configuration"),l()(),A(5,ipe,41,10,"main",5),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.iosTemplate?5:-1))},dependencies:[Z,nt,Ue,vt,xi,mt,He,Ro,Sc,ct,pt,bt,at,ti,zn,mi,pi,di,Me,ke,lt,qC,Fo,we,Te,Mt,At,St,$,le,ze,te,se,wl,Ot,Ht],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.ios-details__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.ios-details__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.ios-details__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.ios-details__title[_ngcontent-%COMP%]{flex:1;font-size:28px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.ios-details__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.ios-details--hidden[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.ios-details__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);margin-bottom:16px}.ios-details__section-header[_ngcontent-%COMP%]{padding:16px 24px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color .2s ease;border-bottom:1px solid color-mix(in srgb,var(--mat-sys-outline) 30%,transparent)}.ios-details__section-header[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.ios-details__section-title[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.ios-details__expand-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);transition:transform .2s ease}.ios-details__form[_ngcontent-%COMP%]{padding:16px 24px 24px;display:flex;flex-direction:column;gap:16px}.ios-details__field[_ngcontent-%COMP%]{width:100%}.ios-details__field--flex[_ngcontent-%COMP%]{flex:1}.ios-details__field--full[_ngcontent-%COMP%]{width:100%;padding:0 24px 24px}.ios-details__symbol-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.ios-details__symbol-btn[_ngcontent-%COMP%], .ios-details__action-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.ios-details__info-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:8px 0}.ios-details__info-label[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:var(--mat-sys-on-surface-variant);min-width:100px}.ios-details__info-value[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}.ios-details__section-subtitle[_ngcontent-%COMP%]{font-size:12px;font-weight:600;color:var(--mat-sys-on-surface-variant);text-transform:uppercase;letter-spacing:.5px;margin:8px 0}.ios-details__adapters[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.ios-details__checkbox[_ngcontent-%COMP%]{margin-top:8px}.ios-details__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.ios-details__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.ios-details__save-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.ios-details__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.ios-details__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.ios-details__title[_ngcontent-%COMP%]{font-size:22px}.ios-details__content[_ngcontent-%COMP%]{padding:0 16px 16px}.ios-details__section-header[_ngcontent-%COMP%]{padding:12px 16px}.ios-details__form[_ngcontent-%COMP%]{padding:16px}.ios-details__field--full[_ngcontent-%COMP%]{padding:0 16px 16px}.ios-details__symbol-row[_ngcontent-%COMP%]{flex-direction:column}.ios-details__symbol-btn[_ngcontent-%COMP%], .ios-details__action-btn[_ngcontent-%COMP%]{width:100%}.ios-details__adapters[_ngcontent-%COMP%]{grid-template-columns:1fr}.ios-details__actions[_ngcontent-%COMP%]{flex-direction:column}.ios-details__cancel-btn[_ngcontent-%COMP%], .ios-details__save-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var ope=(t,i)=>i.template_id;function rpe(t,i){if(t&1&&(s(0,"button",4)(1,"mat-icon"),d(2,"arrow_back"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences")}}function ape(t,i){if(t&1&&(s(0,"button",6)(1,"mat-icon"),d(2,"add_circle_outline"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences/dynamips/templates/addtemplate")}}function spe(t,i){t&1&&F(0,"app-empty-templates-list")}function lpe(t,i){if(t&1){let e=j();s(0,"div",10)(1,"mat-icon",11),d(2,"router"),l(),s(3,"span",12),d(4),l(),s(5,"button",13),v("click",function(o){return o.stopPropagation()}),s(6,"mat-icon"),d(7,"more_vert"),l()(),s(8,"mat-menu",14,1)(10,"button",15),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.deleteTemplate(o))}),s(11,"mat-icon"),d(12,"delete"),l(),s(13,"span"),d(14,"Delete"),l()(),s(15,"button",15),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.copyTemplate(o))}),s(16,"mat-icon"),d(17,"content_copy"),l(),s(18,"span"),d(19,"Copy"),l()(),s(20,"a",16)(21,"mat-icon"),d(22,"edit"),l(),s(23,"span"),d(24,"Edit"),l()()()()}if(t&2){let e=i.$implicit,n=Re(9);x("routerLink",e.template_id),u(4),U(e.name),u(),x("matMenuTriggerFor",n),u(15),x("routerLink",e.template_id)}}function cpe(t,i){if(t&1&&(s(0,"nav",8),J(1,lpe,25,4,"div",10,ope),l()),t&2){let e=b();u(),ee(e.iosTemplates)}}var MS=(()=>{class t{route=f(Ye);controllerService=f(We);iosService=f(Ss);router=f(ut);cd=f(K);controller;iosTemplates=[];deleteComponent=Ut(ui);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck(),this.getTemplates()})}getTemplates(){this.iosService.getTemplates(this.controller).subscribe(e=>{this.iosTemplates=e.filter(n=>n.template_type==="dynamips"&&!n.builtin),this.cd.markForCheck()})}deleteTemplate(e){this.deleteComponent().deleteItem(e.name,e.template_id)}onDeleteEvent(){this.getTemplates()}copyTemplate(e){this.router.navigate(["/controller",this.controller.id,"preferences","dynamips","templates",e.template_id,"copy"])}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-ios-templates"]],viewQuery:function(n,o){n&1&&tn(o.deleteComponent,ui,5),n&2&&nn()},decls:11,vars:5,consts:[["deleteComponent",""],["menu","matMenu"],[1,"ios-templates"],[1,"ios-templates__header"],["mat-icon-button","",1,"ios-templates__back-btn",3,"routerLink"],[1,"ios-templates__title"],["matTooltip","Add IOS router template","matTooltipClass","custom-tooltip","mat-icon-button","",1,"ios-templates__add-btn",3,"routerLink"],[1,"ios-templates__content"],[1,"ios-templates__list"],[3,"deleteEvent","controller"],[1,"ios-templates__list-item",3,"routerLink"],[1,"ios-templates__list-icon"],[1,"ios-templates__list-name"],["mat-icon-button","",1,"ios-templates__menu-btn",3,"click","matMenuTriggerFor"],["xPosition","before"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"routerLink"]],template:function(n,o){n&1&&(s(0,"div",2)(1,"header",3),A(2,rpe,3,1,"button",4),s(3,"h1",5),d(4,"IOS router templates"),l(),A(5,ape,3,1,"button",6),l(),s(6,"main",7),A(7,spe,1,0,"app-empty-templates-list"),A(8,cpe,3,0,"nav",8),l()(),s(9,"app-delete-template",9,0),v("deleteEvent",function(){return o.onDeleteEvent()}),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.controller?5:-1),u(2),O(o.iosTemplates.length?-1:7),u(),O(o.iosTemplates.length?8:-1),u(),x("controller",o.controller))},dependencies:[Z,at,cn,$,ze,te,se,Ri,Qe,Fn,ot,kn,Gt,Kt,ui,ur],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.ios-templates__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.ios-templates__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.ios-templates__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.ios-templates__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.ios-templates__add-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-primary);transition:all .2s cubic-bezier(.4,0,.2,1)}.ios-templates__add-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent)}.ios-templates__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.ios-templates__list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.ios-templates__list-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;text-decoration:none;color:var(--mat-sys-on-surface)}.ios-templates__list-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.ios-templates__list-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.ios-templates__list-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.ios-templates__list-name[_ngcontent-%COMP%]{flex:1;font-size:16px;font-weight:500}.ios-templates__menu-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);flex-shrink:0}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.ios-templates__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.ios-templates__back-btn[_ngcontent-%COMP%], .ios-templates__add-btn[_ngcontent-%COMP%]{width:44px;height:44px}.ios-templates__title[_ngcontent-%COMP%]{font-size:24px}.ios-templates__content[_ngcontent-%COMP%]{padding:0 16px 16px}.ios-templates__list-item[_ngcontent-%COMP%]{padding:14px 16px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var cp=class{builtin;category;compute_id;console_auto_start;console_type;default_name_format;ethernet_adapters;l1_keepalives;name;nvram;path;private_config;ram;serial_adapters;startup_config;symbol;template_id;template_type;usage;use_default_iou_values;tags};var ws=(()=>{class t{httpController;constructor(e){this.httpController=e}getTemplates(e){return this.httpController.get(e,"/templates")}getTemplate(e,n){return this.httpController.get(e,`/templates/${n}`)}getImages(e){return this.httpController.get(e,"/images?image_type=iou")}getImagePath(e,n){return`${e.protocol}//${e.host}:${e.port}/${Ai.current_version}/images/upload/${n}`}addTemplate(e,n){return this.httpController.post(e,"/templates",n)}saveTemplate(e,n){return this.httpController.put(e,`/templates/${n.template_id}`,n)}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var dpe=(t,i)=>i.path;function mpe(t,i){if(t&1){let e=j();s(0,"button",23),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function ppe(t,i){if(t&1&&(s(0,"mat-option",18),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function upe(t,i){if(t&1&&(s(0,"mat-option",18),d(1),l()),t&2){let e=i.$implicit;x("value",e.path),u(),X(" ",e.path," ")}}function hpe(t,i){if(t&1){let e=j();s(0,"mat-form-field",13)(1,"mat-label"),d(2,"IOU image"),l(),s(3,"mat-select",24),v("selectionChange",function(o){D(e);let r=b();return P(r.iouTemplate.update(a=>tt(H({},a),{path:o.value})))}),J(4,upe,2,2,"mat-option",18,dpe),l()()}if(t&2){let e=b();u(3),x("value",e.iouTemplate().path),u(),ee(e.iouImages())}}function fpe(t,i){if(t&1){let e=j();s(0,"div",19)(1,"input",25,0),v("change",function(o){D(e);let r=b();return P(r.uploadImageFile(o))}),l(),s(3,"button",26),v("click",function(){D(e);let o=Re(2);return P(o.click())}),d(4," Browse "),l(),s(5,"mat-form-field",27)(6,"mat-label"),d(7,"IOU image"),l(),s(8,"input",28),v("input",function(o){D(e);let r=b();return P(r.imageName.set(o.target.value))}),l()()()}if(t&2){let e=b();u(),x("uploader",e.uploader()),u(7),x("value",e.imageName())}}var kS=(()=>{class t{route=f(Ye);controllerService=f(We);iouService=f(ws);toasterService=f(fe);router=f(ut);templateMocksService=f(Fr);computeService=f(Lo);uploadServiceService=f(Dl);snackBar=f(Qr);cd=f(K);controller=me(void 0);iouTemplate=me(new cp);newImageSelected=me(!1);types=me(["L2 image","L3 image"]);iouImages=me([]);uploader=me(void 0);isLocalComputerChosen=me(!0);subscription;templateName=ae("");imageName=ae("");selectedType=ae("");nameStepCompleted=ri(()=>!!this.templateName());ngOnInit(){this.uploader.set(new Ka({url:""})),this.uploader().onAfterAddingFile=n=>{n.withCredentials=!1},this.uploader().onErrorItem=(n,o,r,a)=>{this.toasterService.error("An error occured: "+o)},this.uploader().onProgressItem=n=>{this.uploadServiceService.processBarCount(n.progress)},this.uploader().onSuccessItem=(n,o,r,a)=>{this.getImages(),this.toasterService.success("Image uploaded")};let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller.set(n),this.getImages(),this.templateMocksService.getIouTemplate().subscribe(o=>{this.iouTemplate.set(o)})}),this.subscription=this.uploadServiceService.currentCancelItemDetails.subscribe(n=>{n&&this.cancelUploading()})}getImages(){this.iouService.getImages(this.controller()).subscribe(e=>{this.iouImages.set(e)})}setControllerType(e){e==="local"&&this.isLocalComputerChosen.set(!0)}setDiskImage(e){this.newImageSelected.set(e==="newImage")}uploadImageFile(e){let n=e.target.files[0].name;this.imageName.set(n);let o=this.iouService.getImagePath(this.controller(),n);this.uploader().queue.forEach(a=>a.url=o);let r=this.uploader().queue[0];r.options&&(r.options.disableMultipart=!0),r.options.headers=[{name:"Authorization",value:"Bearer "+this.controller().authToken}],this.uploader().uploadItem(r),this.snackBar.openFromComponent(Il,{panelClass:"uplaoding-file-snackabar",data:{upload_file_type:"Image"}})}cancelUploading(){this.uploader().clearQueue(),this.uploadServiceService.processBarCount(100),this.toasterService.warning("File upload cancelled")}goBack(){this.router.navigate(["/controller",this.controller().id,"preferences","iou","templates"])}addTemplate(){if(this.templateName()&&(this.newImageSelected()&&this.imageName()||!this.newImageSelected()&&this.iouTemplate().path)){let e=this.iouTemplate();e.template_id=Ti(),e.name=this.templateName(),this.newImageSelected()&&(e.path=this.imageName()),e.compute_id="local",this.selectedType()==="L2 image"?(e.ethernet_adapters=4,e.serial_adapters=0):this.selectedType()==="L3 image"&&(e.ethernet_adapters=2,e.serial_adapters=2),this.iouService.addTemplate(this.controller(),e).subscribe({next:n=>{this.goBack()},error:n=>{let o=n.error?.message||n.message||"Failed to add iou template";this.toasterService.error(o),this.cd.markForCheck()}})}else this.toasterService.error("Fill all required fields")}ngOnDestroy(){this.subscription.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-add-iou-template"]],inputs:{templateName:[1,"templateName"],imageName:[1,"imageName"],selectedType:[1,"selectedType"]},outputs:{templateName:"templateNameChange",imageName:"imageNameChange",selectedType:"selectedTypeChange"},decls:38,vars:11,consts:[["file",""],[1,"iou-add"],[1,"iou-add__header"],["mat-icon-button","",1,"iou-add__back-btn"],[1,"iou-add__title"],[1,"iou-add__content"],[1,"iou-add__form-card"],[1,"iou-add__stepper",3,"linear"],["label","Controller type",3,"completed"],[1,"iou-add__radio-group"],["value","1",1,"iou-add__radio",3,"click","checked"],["label","Name",3,"completed"],[1,"iou-add__form"],["appearance","fill",1,"iou-add__field"],["matInput","","placeholder","Name","type","text",3,"input","value"],["label","Image"],["value","2",1,"iou-add__radio",3,"click","checked"],["placeholder","Type",3,"selectionChange","value"],[3,"value"],[1,"iou-add__file-row"],[1,"iou-add__actions"],["mat-button","",1,"iou-add__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"iou-add__submit-btn",3,"click"],["mat-icon-button","",1,"iou-add__back-btn",3,"click"],["placeholder","IOU image",3,"selectionChange","value"],["type","file","accept",".bin, .image, .iol","ng2FileSelect","",1,"iou-add__file-input",3,"change","uploader"],["mat-raised-button","","color","primary",1,"iou-add__browse-btn",3,"click"],["appearance","fill",1,"iou-add__field","iou-add__field--flex"],["matInput","","type","text","placeholder","IOU image",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"header",2),A(2,mpe,3,0,"button",3),s(3,"h1",4),d(4,"New IOU device template"),l()(),s(5,"main",5)(6,"section",6)(7,"mat-vertical-stepper",7)(8,"mat-step",8)(9,"mat-radio-group",9)(10,"mat-radio-button",10),v("click",function(){return o.setControllerType("local")}),d(11," Run this IOU device locally "),l()()(),s(12,"mat-step",11)(13,"div",12)(14,"mat-form-field",13)(15,"mat-label"),d(16,"Template name"),l(),s(17,"input",14),v("input",function(a){return o.templateName.set(a.target.value)}),l()()()(),s(18,"mat-step",15)(19,"div",12)(20,"mat-radio-group",9)(21,"mat-radio-button",10),v("click",function(){return o.setDiskImage("existingImage")}),d(22," Existing image "),l(),s(23,"mat-radio-button",16),v("click",function(){return o.setDiskImage("newImage")}),d(24," New image "),l()(),s(25,"mat-form-field",13)(26,"mat-label"),d(27,"Type"),l(),s(28,"mat-select",17),v("selectionChange",function(a){return o.selectedType.set(a.value)}),J(29,ppe,2,2,"mat-option",18,Fe),l()(),A(31,hpe,6,1,"mat-form-field",13),A(32,fpe,9,2,"div",19),l()()()(),s(33,"div",20)(34,"button",21),v("click",function(){return o.goBack()}),d(35,"Cancel"),l(),s(36,"button",22),v("click",function(){return o.addTemplate()}),d(37," Add template "),l()()()()),n&2&&(u(2),O(o.controller()?2:-1),u(5),x("linear",!0),u(),x("completed",o.isLocalComputerChosen()),u(2),x("checked",!0),u(2),x("completed",o.nameStepCompleted()),u(5),x("value",o.templateName()),u(4),x("checked",!o.newImageSelected()),u(2),x("checked",o.newImageSelected()),u(5),x("value",o.selectedType()),u(),ee(o.types()),u(2),O(o.newImageSelected()?-1:31),u(),O(o.newImageSelected()?32:-1))},dependencies:[Z,nt,at,te,se,$,le,ze,Dt,go,Io,ko,Me,ke,lt,we,Te,Mt,At,St,El,cc,dc,xl,Gc],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.iou-add__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.iou-add__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.iou-add__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.iou-add__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.iou-add__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.iou-add__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);padding:24px}.iou-add__stepper[_ngcontent-%COMP%]{background:transparent}.iou-add__radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.iou-add__radio[_ngcontent-%COMP%]{font-size:16px}.iou-add__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.iou-add__field[_ngcontent-%COMP%]{width:100%}.iou-add__field--flex[_ngcontent-%COMP%]{flex:1}.iou-add__file-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.iou-add__file-input[_ngcontent-%COMP%]{display:none}.iou-add__browse-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.iou-add__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.iou-add__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.iou-add__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.iou-add__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.iou-add__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.iou-add__title[_ngcontent-%COMP%]{font-size:24px}.iou-add__content[_ngcontent-%COMP%]{padding:0 16px 16px}.iou-add__form-card[_ngcontent-%COMP%]{padding:16px}.iou-add__file-row[_ngcontent-%COMP%], .iou-add__actions[_ngcontent-%COMP%]{flex-direction:column}.iou-add__cancel-btn[_ngcontent-%COMP%], .iou-add__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();function gpe(t,i){if(t&1){let e=j();s(0,"button",12),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}var TS=(()=>{class t{route=f(Ye);controllerService=f(We);iouService=f(ws);toasterService=f(fe);router=f(ut);formBuilder=f(jt);cd=f(K);controller;templateName="";iouTemplate;templateNameForm;constructor(){this.templateNameForm=this.formBuilder.group({templateName:new re("",be.required)})}ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.iouService.getTemplate(this.controller,n).subscribe(r=>{this.iouTemplate=r,this.templateName=`Copy of ${this.iouTemplate.name}`,this.cd.markForCheck()})})}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","iou","templates"])}addTemplate(){this.templateNameForm.invalid?this.toasterService.error("Fill all required fields"):(this.iouTemplate.template_id=Ti(),this.iouTemplate.name=this.templateNameForm.get("templateName").value,this.iouService.addTemplate(this.controller,this.iouTemplate).subscribe({next:e=>{this.goBack()},error:e=>{let n=e.error?.message||e.message||"Failed to copy iou template";this.toasterService.error(n),this.cd.markForCheck()}}))}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-copy-iou-template"]],decls:17,vars:2,consts:[[1,"iou-copy"],[1,"iou-copy__header"],["mat-icon-button","",1,"iou-copy__back-btn"],[1,"iou-copy__title"],[1,"iou-copy__content"],[1,"iou-copy__form-card"],[1,"iou-copy__form",3,"formGroup"],["appearance","fill",1,"iou-copy__field"],["matInput","","type","text","placeholder","Name","formControlName","templateName"],[1,"iou-copy__actions"],["mat-button","",1,"iou-copy__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"iou-copy__submit-btn",3,"click"],["mat-icon-button","",1,"iou-copy__back-btn",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1),A(2,gpe,3,0,"button",2),s(3,"h1",3),d(4,"Copy IOU device template"),l()(),s(5,"main",4)(6,"section",5)(7,"form",6)(8,"mat-form-field",7)(9,"mat-label"),d(10,"Template name"),l(),F(11,"input",8),l()()(),s(12,"div",9)(13,"button",10),v("click",function(){return o.goBack()}),d(14,"Cancel"),l(),s(15,"button",11),v("click",function(){return o.addTemplate()}),d(16," Copy template "),l()()()()),n&2&&(u(2),O(o.controller?2:-1),u(5),x("formGroup",o.templateNameForm))},dependencies:[Z,nt,Ue,vt,mt,He,ct,pt,bt,at,te,se,$,le,ze,Dt,Me,ke,lt,we,Te],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.iou-copy__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.iou-copy__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.iou-copy__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.iou-copy__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.iou-copy__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.iou-copy__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);padding:24px}.iou-copy__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.iou-copy__field[_ngcontent-%COMP%]{width:100%}.iou-copy__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.iou-copy__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.iou-copy__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.iou-copy__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.iou-copy__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.iou-copy__title[_ngcontent-%COMP%]{font-size:24px}.iou-copy__content[_ngcontent-%COMP%]{padding:0 16px 16px}.iou-copy__form-card[_ngcontent-%COMP%]{padding:16px}.iou-copy__actions[_ngcontent-%COMP%]{flex-direction:column}.iou-copy__cancel-btn[_ngcontent-%COMP%], .iou-copy__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var eg=(()=>{class t{getConsoleTypes(){return["telnet","none"]}getCategories(){return[["Default","guest"],["Routers","router"],["Switches","switch"],["End devices","guest"],["Security devices","firewall"]]}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function _pe(t,i){if(t&1){let e=j();s(0,"button",7),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function vpe(t,i){if(t&1){let e=j();s(0,"mat-chip",34),v("removed",function(){let o=D(e).$implicit,r=b(3);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",35),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function bpe(t,i){if(t&1&&(s(0,"mat-option",26),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function Cpe(t,i){if(t&1&&(s(0,"mat-option",26),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function xpe(t,i){if(t&1){let e=j();s(0,"mat-form-field",17)(1,"mat-label"),d(2,"RAM size"),l(),s(3,"input",36),v("input",function(o){D(e);let r=b(3);return P(r.ram.set(+o.target.value))}),l(),s(4,"span",37),d(5,"MB"),l()()}if(t&2){let e=b(3);u(3),x("value",e.ram())}}function ype(t,i){if(t&1){let e=j();s(0,"mat-form-field",17)(1,"mat-label"),d(2,"NVRAM size"),l(),s(3,"input",38),v("input",function(o){D(e);let r=b(3);return P(r.nvram.set(+o.target.value))}),l(),s(4,"span",37),d(5,"KB"),l()()}if(t&2){let e=b(3);u(3),x("value",e.nvram())}}function Spe(t,i){if(t&1){let e=j();s(0,"form",12)(1,"mat-form-field",17)(2,"mat-label"),d(3,"Template name"),l(),s(4,"input",18),v("input",function(o){D(e);let r=b(2);return P(r.templateName.set(o.target.value))}),l()(),s(5,"mat-form-field",17)(6,"mat-label"),d(7,"Default name format"),l(),s(8,"input",19),v("input",function(o){D(e);let r=b(2);return P(r.defaultName.set(o.target.value))}),l()(),s(9,"div",20)(10,"mat-form-field",21)(11,"mat-label"),d(12,"Symbol"),l(),s(13,"input",22),v("input",function(o){D(e);let r=b(2);return P(r.symbol.set(o.target.value))}),l()(),s(14,"button",23),v("click",function(){D(e);let o=b(2);return P(o.chooseSymbol())}),d(15,"Choose symbol"),l()(),s(16,"mat-form-field",17)(17,"mat-label"),d(18,"Tags"),l(),s(19,"mat-chip-grid",null,0),J(21,vpe,4,1,"mat-chip",null,Fe),l(),s(23,"input",24),v("matChipInputTokenEnd",function(o){D(e);let r=b(2);return P(r.addTag(o))}),l()(),s(24,"mat-form-field",17)(25,"mat-label"),d(26,"Category"),l(),s(27,"mat-select",25),v("selectionChange",function(o){D(e);let r=b(2);return P(r.category.set(o.value))}),J(28,bpe,2,2,"mat-option",26,Ii),l()(),s(30,"div",27)(31,"input",28,1),v("change",function(o){D(e);let r=b(2);return P(r.uploadImageFile(o))}),l(),s(33,"button",29),v("click",function(){D(e);let o=Re(32);return P(o.click())}),d(34," Browse "),l(),s(35,"mat-form-field",21)(36,"mat-label"),d(37,"IOU image path"),l(),s(38,"input",30),v("input",function(o){D(e);let r=b(2);return P(r.path.set(o.target.value))}),l()()(),s(39,"mat-form-field",17)(40,"mat-label"),d(41,"Startup config"),l(),s(42,"input",31),v("input",function(o){D(e);let r=b(2);return P(r.initialConfig.set(o.target.value))}),l()(),s(43,"mat-form-field",17)(44,"mat-label"),d(45,"Private config"),l(),s(46,"input",32),v("input",function(o){D(e);let r=b(2);return P(r.privateConfig.set(o.target.value))}),l()(),s(47,"mat-form-field",17)(48,"mat-label"),d(49,"Console type"),l(),s(50,"mat-select",25),v("selectionChange",function(o){D(e);let r=b(2);return P(r.consoleType.set(o.value))}),J(51,Cpe,2,2,"mat-option",26,Fe),l()(),s(53,"mat-checkbox",33),v("change",function(o){D(e);let r=b(2);return P(r.consoleAutoStart.set(o.checked))}),d(54," Auto start console "),l(),s(55,"mat-checkbox",33),v("change",function(o){D(e);let r=b(2);return P(r.l1Keepalives.set(o.checked))}),d(56," Enable layer 1 keepalive messages (non-functional) "),l(),s(57,"mat-checkbox",33),v("change",function(o){D(e);let r=b(2);return P(r.useDefaultIouValues.set(o.checked))}),d(58," Use default IOU values for memories "),l(),A(59,xpe,6,1,"mat-form-field",17),A(60,ype,6,1,"mat-form-field",17),l()}if(t&2){let e=Re(20),n=b(2);u(4),x("value",n.templateName()),u(4),x("value",n.defaultName()),u(5),x("value",n.symbol()),u(8),ee(n.tags()),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(4),x("value",n.category()),u(),ee(n.categories),u(10),x("value",n.path()),u(4),x("value",n.initialConfig()),u(4),x("value",n.privateConfig()),u(4),x("value",n.consoleType()),u(),ee(n.consoleTypes),u(2),x("checked",n.consoleAutoStart()),u(2),x("checked",n.l1Keepalives()),u(2),x("checked",n.useDefaultIouValues()),u(2),O(n.useDefaultIouValues()?-1:59),u(),O(n.useDefaultIouValues()?-1:60)}}function wpe(t,i){if(t&1){let e=j();s(0,"form",12)(1,"mat-form-field",17)(2,"mat-label"),d(3,"Ethernet adapters"),l(),s(4,"input",39),v("input",function(o){D(e);let r=b(2);return P(r.ethernetAdapters.set(+o.target.value))}),l()(),s(5,"mat-form-field",17)(6,"mat-label"),d(7,"Serial adapters"),l(),s(8,"input",40),v("input",function(o){D(e);let r=b(2);return P(r.serialAdapters.set(+o.target.value))}),l()()()}if(t&2){let e=b(2);u(4),x("value",e.ethernetAdapters()),u(4),x("value",e.serialAdapters())}}function Mpe(t,i){if(t&1){let e=j();s(0,"div",13)(1,"mat-form-field",41)(2,"mat-label"),d(3,"Usage notes"),l(),s(4,"textarea",42),v("input",function(o){D(e);let r=b(2);return P(r.usage.set(o.target.value))}),l()()()}if(t&2){let e=b(2);u(4),x("value",e.usage())}}function kpe(t,i){if(t&1){let e=j();s(0,"main",6)(1,"section",8)(2,"div",9),v("click",function(){D(e);let o=b();return P(o.toggleSection("general"))}),s(3,"h3",10),d(4,"General settings"),l(),s(5,"mat-icon",11),d(6),l()(),A(7,Spe,61,15,"form",12),l(),s(8,"section",8)(9,"div",9),v("click",function(){D(e);let o=b();return P(o.toggleSection("network"))}),s(10,"h3",10),d(11,"Network"),l(),s(12,"mat-icon",11),d(13),l()(),A(14,wpe,9,2,"form",12),l(),s(15,"section",8)(16,"div",9),v("click",function(){D(e);let o=b();return P(o.toggleSection("usage"))}),s(17,"h3",10),d(18,"Usage"),l(),s(19,"mat-icon",11),d(20),l()(),A(21,Mpe,5,1,"div",13),l(),s(22,"div",14)(23,"button",15),v("click",function(){D(e);let o=b();return P(o.goBack())}),d(24,"Cancel"),l(),s(25,"button",16),v("click",function(){D(e);let o=b();return P(o.onSave())}),d(26,"Save"),l()()()}if(t&2){let e=b();u(6),U(e.generalSettingsExpanded()?"expand_less":"expand_more"),u(),O(e.generalSettingsExpanded()?7:-1),u(6),U(e.networkExpanded()?"expand_less":"expand_more"),u(),O(e.networkExpanded()?14:-1),u(6),U(e.usageExpanded()?"expand_less":"expand_more"),u(),O(e.usageExpanded()?21:-1)}}var ES=(()=>{class t{route=f(Ye);controllerService=f(We);iouService=f(ws);toasterService=f(fe);configurationService=f(eg);router=f(ut);cd=f(K);dialog=f(Je);dialogConfig=f(Ji);controller;iouTemplate;separatorKeysCodes=[13,188];consoleTypes=[];categories=[];templateName=ae("");defaultName=ae("");symbol=ae("");path=ae("");initialConfig=ae("");privateConfig=ae("");category=ae("");consoleType=ae("");consoleAutoStart=ae(!1);l1Keepalives=ae(!1);useDefaultIouValues=ae(!1);ram=ae(256);nvram=ae(128);ethernetAdapters=ae(0);serialAdapters=ae(0);usage=ae("");tags=ae([]);generalSettingsExpanded=ae(!1);networkExpanded=ae(!1);usageExpanded=ae(!1);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.getConfiguration(),this.iouService.getTemplate(this.controller,n).subscribe(r=>{this.iouTemplate=r,this.iouTemplate.tags||(this.iouTemplate.tags=[]),this.templateName.set(r.name||""),this.defaultName.set(r.default_name_format||""),this.symbol.set(r.symbol||""),this.path.set(r.path||""),this.initialConfig.set(r.startup_config||""),this.privateConfig.set(r.private_config||""),this.category.set(r.category||""),this.consoleType.set(r.console_type||""),this.consoleAutoStart.set(r.console_auto_start||!1),this.l1Keepalives.set(r.l1_keepalives||!1),this.useDefaultIouValues.set(r.use_default_iou_values!==!1),this.ram.set(r.ram||256),this.nvram.set(r.nvram||128),this.ethernetAdapters.set(r.ethernet_adapters||0),this.serialAdapters.set(r.serial_adapters||0),this.usage.set(r.usage||""),this.tags.set(r.tags||[]),this.cd.markForCheck()})})}getConfiguration(){this.consoleTypes=this.configurationService.getConsoleTypes(),this.categories=this.configurationService.getCategories()}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","iou","templates"])}onSave(){this.iouTemplate.name=this.templateName(),this.iouTemplate.default_name_format=this.defaultName(),this.iouTemplate.symbol=this.symbol(),this.iouTemplate.path=this.path(),this.iouTemplate.startup_config=this.initialConfig(),this.iouTemplate.private_config=this.privateConfig(),this.iouTemplate.category=this.category(),this.iouTemplate.console_type=this.consoleType(),this.iouTemplate.console_auto_start=this.consoleAutoStart(),this.iouTemplate.l1_keepalives=this.l1Keepalives(),this.iouTemplate.use_default_iou_values=this.useDefaultIouValues(),this.iouTemplate.ram=this.ram(),this.iouTemplate.nvram=this.nvram(),this.iouTemplate.ethernet_adapters=this.ethernetAdapters(),this.iouTemplate.serial_adapters=this.serialAdapters(),this.iouTemplate.usage=this.usage(),this.iouTemplate.tags=this.tags(),this.iouService.saveTemplate(this.controller,this.iouTemplate).subscribe(()=>{this.toasterService.success("Changes saved")})}uploadImageFile(e){let n=e.target;n.files&&n.files.length>0&&this.path.set(n.files[0].name)}chooseSymbol(){let e=this.dialogConfig.openConfig("templateSymbol",{autoFocus:!1,disableClose:!1,data:{controller:this.controller,symbol:this.symbol()}});this.dialog.open(pr,e).afterClosed().subscribe(o=>{o&&this.symbol.set(o)})}addTag(e){let n=(e.value||"").trim(),o=this.tags();n&&this.tags.set([...o,n]),e.chipInput&&e.chipInput.clear()}removeTag(e){let n=this.tags(),o=n.indexOf(e);if(o>=0){let r=[...n];r.splice(o,1),this.tags.set(r)}}toggleSection(e){switch(e){case"general":this.generalSettingsExpanded.set(!this.generalSettingsExpanded());break;case"network":this.networkExpanded.set(!this.networkExpanded());break;case"usage":this.usageExpanded.set(!this.usageExpanded());break}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-iou-template-details"]],inputs:{templateName:[1,"templateName"],defaultName:[1,"defaultName"],symbol:[1,"symbol"],path:[1,"path"],initialConfig:[1,"initialConfig"],privateConfig:[1,"privateConfig"],category:[1,"category"],consoleType:[1,"consoleType"],consoleAutoStart:[1,"consoleAutoStart"],l1Keepalives:[1,"l1Keepalives"],useDefaultIouValues:[1,"useDefaultIouValues"],ram:[1,"ram"],nvram:[1,"nvram"],ethernetAdapters:[1,"ethernetAdapters"],serialAdapters:[1,"serialAdapters"],usage:[1,"usage"],tags:[1,"tags"],generalSettingsExpanded:[1,"generalSettingsExpanded"],networkExpanded:[1,"networkExpanded"],usageExpanded:[1,"usageExpanded"]},outputs:{templateName:"templateNameChange",defaultName:"defaultNameChange",symbol:"symbolChange",path:"pathChange",initialConfig:"initialConfigChange",privateConfig:"privateConfigChange",category:"categoryChange",consoleType:"consoleTypeChange",consoleAutoStart:"consoleAutoStartChange",l1Keepalives:"l1KeepalivesChange",useDefaultIouValues:"useDefaultIouValuesChange",ram:"ramChange",nvram:"nvramChange",ethernetAdapters:"ethernetAdaptersChange",serialAdapters:"serialAdaptersChange",usage:"usageChange",tags:"tagsChange",generalSettingsExpanded:"generalSettingsExpandedChange",networkExpanded:"networkExpandedChange",usageExpanded:"usageExpandedChange"},decls:6,vars:2,consts:[["chipList",""],["file",""],[1,"iou-template-details"],[1,"iou-template-details__header"],["mat-icon-button","",1,"iou-template-details__back-btn"],[1,"iou-template-details__title"],[1,"iou-template-details__content"],["mat-icon-button","",1,"iou-template-details__back-btn",3,"click"],[1,"iou-template-details__form-card"],[1,"iou-template-details__section-header",3,"click"],[1,"iou-template-details__section-title"],[1,"iou-template-details__expand-icon"],[1,"iou-template-details__form"],[1,"preferences__usage-form"],[1,"iou-template-details__actions"],["mat-button","",1,"iou-template-details__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"iou-template-details__save-btn",3,"click"],["appearance","fill",1,"iou-template-details__field"],["matInput","","type","text","placeholder","Template name",3,"input","value"],["matInput","","type","text","placeholder","Default name format",3,"input","value"],[1,"iou-template-details__symbol-row"],["appearance","fill",1,"iou-template-details__field","iou-template-details__field--flex"],["matInput","","type","text","placeholder","Symbol",3,"input","value"],["mat-button","",1,"iou-template-details__symbol-btn",3,"click"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],[3,"selectionChange","value"],[3,"value"],[1,"iou-template-details__file-row"],["type","file","accept",".bin, .image, .iol",1,"iou-template-details__file-input",3,"change"],["mat-raised-button","","color","primary",1,"iou-template-details__browse-btn",3,"click"],["matInput","","type","text","placeholder","IOU image path",3,"input","value"],["matInput","","type","text","placeholder","Startup config",3,"input","value"],["matInput","","type","text","placeholder","Private config",3,"input","value"],[3,"change","checked"],[3,"removed"],["matChipRemove",""],["matInput","","type","number","min","1","placeholder","RAM size",3,"input","value"],["matSuffix",""],["matInput","","type","number","min","1","placeholder","NVRAM size",3,"input","value"],["matInput","","type","number","placeholder","Ethernet adapters",3,"input","value"],["matInput","","type","number","placeholder","Serial adapters",3,"input","value"],["appearance","fill",1,"preferences__usage-field--full"],["matInput","","type","text",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",2)(1,"header",3),A(2,_pe,3,0,"button",4),s(3,"h1",5),d(4,"IOU device template configuration"),l()(),A(5,kpe,27,6,"main",6),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.iouTemplate?5:-1))},dependencies:[Z,nt,Ue,He,Ci,at,te,se,$,le,ze,Me,ke,lt,Fo,we,Te,Mt,At,St,ti,zn,mi,pi,di,Ot,Ht],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.iou-template-details__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.iou-template-details__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.iou-template-details__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.iou-template-details__title[_ngcontent-%COMP%]{flex:1;font-size:28px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.iou-template-details__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.iou-template-details--hidden[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.iou-template-details__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);margin-bottom:16px}.iou-template-details__form[_ngcontent-%COMP%]{padding:24px;display:flex;flex-direction:column;gap:16px}.iou-template-details__field[_ngcontent-%COMP%]{width:100%}.iou-template-details__field--flex[_ngcontent-%COMP%]{flex:1}.iou-template-details__field--full[_ngcontent-%COMP%]{width:100%}.iou-template-details__section-title[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.iou-template-details__section-header[_ngcontent-%COMP%]{padding:16px 24px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color .2s ease;border-bottom:1px solid color-mix(in srgb,var(--mat-sys-outline) 30%,transparent)}.iou-template-details__section-header[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.iou-template-details__expand-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);transition:transform .2s ease}.iou-template-details__symbol-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.iou-template-details__symbol-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.iou-template-details__file-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.iou-template-details__file-input[_ngcontent-%COMP%]{display:none}.iou-template-details__browse-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.iou-template-details__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.iou-template-details__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.iou-template-details__save-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.iou-template-details__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.iou-template-details__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.iou-template-details__title[_ngcontent-%COMP%]{font-size:22px}.iou-template-details__content[_ngcontent-%COMP%]{padding:0 16px 16px}.iou-template-details__form[_ngcontent-%COMP%]{padding:16px}.iou-template-details__section-header[_ngcontent-%COMP%]{padding:12px 16px}.iou-template-details__symbol-row[_ngcontent-%COMP%], .iou-template-details__file-row[_ngcontent-%COMP%], .iou-template-details__actions[_ngcontent-%COMP%]{flex-direction:column}.iou-template-details__cancel-btn[_ngcontent-%COMP%], .iou-template-details__save-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var Tpe=(t,i)=>i.template_id;function Epe(t,i){if(t&1&&(s(0,"button",4)(1,"mat-icon"),d(2,"arrow_back"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences")}}function Dpe(t,i){if(t&1&&(s(0,"button",6)(1,"mat-icon"),d(2,"add_circle_outline"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences/iou/addtemplate")}}function Ppe(t,i){t&1&&F(0,"app-empty-templates-list")}function Ipe(t,i){if(t&1){let e=j();s(0,"div",10)(1,"mat-icon",11),d(2,"settings_ethernet"),l(),s(3,"span",12),d(4),l(),s(5,"button",13),v("click",function(o){return o.stopPropagation()}),s(6,"mat-icon"),d(7,"more_vert"),l()(),s(8,"mat-menu",14,1)(10,"button",15),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.deleteTemplate(o))}),s(11,"mat-icon"),d(12,"delete"),l(),s(13,"span"),d(14,"Delete"),l()(),s(15,"button",15),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.copyTemplate(o))}),s(16,"mat-icon"),d(17,"content_copy"),l(),s(18,"span"),d(19,"Copy"),l()(),s(20,"a",16)(21,"mat-icon"),d(22,"edit"),l(),s(23,"span"),d(24,"Edit"),l()()()()}if(t&2){let e=i.$implicit,n=Re(9);x("routerLink",e.template_id),u(4),U(e.name),u(),x("matMenuTriggerFor",n),u(15),x("routerLink",e.template_id)}}function Ape(t,i){if(t&1&&(s(0,"nav",8),J(1,Ipe,25,4,"div",10,Tpe),l()),t&2){let e=b();u(),ee(e.iouTemplates)}}var DS=(()=>{class t{route=f(Ye);controllerService=f(We);iouService=f(ws);router=f(ut);cd=f(K);controller;iouTemplates=[];deleteComponent=Ut(ui);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck(),this.getTemplates()})}getTemplates(){this.iouService.getTemplates(this.controller).subscribe(e=>{this.iouTemplates=e.filter(n=>n.template_type==="iou"&&!n.builtin),this.cd.markForCheck()})}deleteTemplate(e){this.deleteComponent().deleteItem(e.name,e.template_id)}onDeleteEvent(){this.getTemplates()}copyTemplate(e){this.router.navigate(["/controller",this.controller.id,"preferences","iou","templates",e.template_id,"copy"])}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-iou-templates"]],viewQuery:function(n,o){n&1&&tn(o.deleteComponent,ui,5),n&2&&nn()},decls:11,vars:5,consts:[["deleteComponent",""],["menu","matMenu"],[1,"iou-templates"],[1,"iou-templates__header"],["mat-icon-button","",1,"iou-templates__back-btn",3,"routerLink"],[1,"iou-templates__title"],["matTooltip","Add IOU device template","matTooltipClass","custom-tooltip","mat-icon-button","",1,"iou-templates__add-btn",3,"routerLink"],[1,"iou-templates__content"],[1,"iou-templates__list"],[3,"deleteEvent","controller"],[1,"iou-templates__list-item",3,"routerLink"],[1,"iou-templates__list-icon"],[1,"iou-templates__list-name"],["mat-icon-button","",1,"iou-templates__menu-btn",3,"click","matMenuTriggerFor"],["xPosition","before"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"routerLink"]],template:function(n,o){n&1&&(s(0,"div",2)(1,"header",3),A(2,Epe,3,1,"button",4),s(3,"h1",5),d(4,"IOU device templates"),l(),A(5,Dpe,3,1,"button",6),l(),s(6,"main",7),A(7,Ppe,1,0,"app-empty-templates-list"),A(8,Ape,3,0,"nav",8),l()(),s(9,"app-delete-template",9,0),v("deleteEvent",function(){return o.onDeleteEvent()}),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.controller?5:-1),u(2),O(o.iouTemplates.length?-1:7),u(),O(o.iouTemplates.length?8:-1),u(),x("controller",o.controller))},dependencies:[Z,at,cn,$,ze,te,se,Ri,Qe,Fn,ot,kn,Gt,Kt,ui,ur],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.iou-templates__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.iou-templates__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.iou-templates__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.iou-templates__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.iou-templates__add-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-primary);transition:all .2s cubic-bezier(.4,0,.2,1)}.iou-templates__add-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent)}.iou-templates__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.iou-templates__list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.iou-templates__list-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;text-decoration:none;color:var(--mat-sys-on-surface)}.iou-templates__list-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.iou-templates__list-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.iou-templates__list-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.iou-templates__list-name[_ngcontent-%COMP%]{flex:1;font-size:16px;font-weight:500}.iou-templates__menu-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);flex-shrink:0}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.iou-templates__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.iou-templates__back-btn[_ngcontent-%COMP%], .iou-templates__add-btn[_ngcontent-%COMP%]{width:44px;height:44px}.iou-templates__title[_ngcontent-%COMP%]{font-size:24px}.iou-templates__content[_ngcontent-%COMP%]{padding:0 16px 16px}.iou-templates__list-item[_ngcontent-%COMP%]{padding:14px 16px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var PS=(()=>{class t{controllerId="";route=f(Ye);ngOnInit(){this.controllerId=this.route.snapshot.paramMap.get("controller_id")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-preferences"]],decls:41,vars:18,consts:[[1,"preferences"],[1,"preferences__header"],["mat-icon-button","",1,"preferences__back-btn",3,"routerLink"],[1,"preferences__title"],[1,"preferences__content"],[1,"preferences__nav-list"],["mat-list-item","",1,"preferences__nav-item",3,"routerLink"],[1,"preferences__nav-icon"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1)(2,"button",2)(3,"mat-icon"),d(4,"arrow_back"),l()(),s(5,"h1",3),d(6,"Template preferences"),l()(),s(7,"main",4)(8,"nav",5)(9,"a",6)(10,"mat-icon",7),d(11,"settings"),l(),d(12," Built-in "),l(),s(13,"a",6)(14,"mat-icon",7),d(15,"router"),l(),d(16," Dynamips "),l(),s(17,"a",6)(18,"mat-icon",7),d(19,"keyboard"),l(),d(20," IOS on Unix "),l(),s(21,"a",6)(22,"mat-icon",7),d(23,"computer"),l(),d(24," VPCS "),l(),s(25,"a",6)(26,"mat-icon",7),d(27,"memory"),l(),d(28," QEMU "),l(),s(29,"a",6)(30,"mat-icon",7),d(31,"desktop_windows"),l(),d(32," VirtualBox "),l(),s(33,"a",6)(34,"mat-icon",7),d(35,"devices"),l(),d(36," VMware "),l(),s(37,"a",6)(38,"mat-icon",7),d(39,"dns"),l(),d(40," Docker "),l()()()()),n&2&&(u(2),x("routerLink",no("/controller/",o.controllerId,"/projects")),u(7),x("routerLink",no("/controller/",o.controllerId,"/preferences/builtin")),u(4),x("routerLink",no("/controller/",o.controllerId,"/preferences/dynamips/templates")),u(4),x("routerLink",no("/controller/",o.controllerId,"/preferences/iou/templates")),u(4),x("routerLink",no("/controller/",o.controllerId,"/preferences/vpcs/templates")),u(4),x("routerLink",no("/controller/",o.controllerId,"/preferences/qemu/templates")),u(4),x("routerLink",no("/controller/",o.controllerId,"/preferences/virtualbox/templates")),u(4),x("routerLink",no("/controller/",o.controllerId,"/preferences/vmware/templates")),u(4),x("routerLink",no("/controller/",o.controllerId,"/preferences/docker/templates")))},dependencies:[Z,at,cn,$,ze,te,se,Ri,Mc],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var dp=class{adapter_type;adapters;bios_image;boot_priority;builtin;category;cdrom_image;compute_id;console_auto_start;console_type;aux_type;cpu_throttling;cpus;custom_adapters;default_name_format;first_port_name;hda_disk_image;hda_disk_interface;hdb_disk_image;hdb_disk_interface;hdc_disk_image;hdc_disk_interface;hdd_disk_image;hdd_disk_interface;initrd;kernel_command_line;kernel_image;linked_clone;mac_address;name;on_close;options;platform;port_name_format;port_segment_size;process_priority;qemu_path;ram;symbol;template_id;template_type;usage;replicate_network_connection_state;tpm;uefi;tags};var mp=(()=>{class t{getPlatform(){return["x86_64","aarch64","alpha","arm","cris","i386","lm32","m68k","microblaze","microblazeel","mips","mips64","mips64el","mipsel","moxie","or32","ppc","ppc64","ppcemb","s390x","sh4","sh4eb","sparc","sparc64","tricore","unicore32","xtensa","xtensaeb"]}getConsoleTypes(){return["telnet","vnc","spice","spice+agent","none"]}getAuxConsoleTypes(){return["telnet","none"]}getDiskInterfaces(){return["ide","sata","scsi","sd","mtd","floppy","pflash","virtio","nvme","none"]}getNetworkTypes(){return[{value:"e1000",name:"Intel Gigabit Ethernet"},{value:"e1000-82544gc",name:"Intel 82544GC Gigabit Ethernet"},{value:"e1000-82545em",name:"Intel 82545EM Gigabit Ethernet"},{value:"e1000e",name:"Intel PCIe Gigabit Ethernet"},{value:"i82550",name:"Intel i82550 Ethernet"},{value:"i82551",name:"Intel i82551 Ethernet"},{value:"i82557a",name:"Intel i82557A Ethernet"},{value:"i82557b",name:"Intel i82557B Ethernet"},{value:"i82557c",name:"Intel i82557C Ethernet"},{value:"i82558a",name:"Intel i82558A Ethernet"},{value:"i82558b",name:"Intel i82558B Ethernet"},{value:"i82559a",name:"Intel i82559A Ethernet"},{value:"i82559b",name:"Intel i82559B Ethernet"},{value:"i82559c",name:"Intel i82559C Ethernet"},{value:"i82559er",name:"Intel i82559ER Ethernet"},{value:"i82562",name:"Intel i82562 Ethernet"},{value:"i82801",name:"Intel i82801 Ethernet"},{value:"igb",name:"Intel I350 Gigabit Ethernet"},{value:"ne2k_pci",name:"NE2000 Ethernet"},{value:"pcnet",name:"AMD PCNet Ethernet"},{value:"rocker",name:"Rocker L2 switch device"},{value:"rtl8139",name:"Realtek 8139 Ethernet"},{value:"virtio",name:"Virtio network"},{value:"virtio-net-pci",name:"Virtio network PCI"},{value:"vmxnet3",name:"VMWare Paravirtualized Ethernet v3"}]}getBootPriorities(){return[["HDD","c"],["CD/DVD-ROM","d"],["Network","n"],["HDD or Network","cn"],["HDD or CD/DVD-ROM","cd"]]}getOnCloseOptions(){return[["Power off the VM","power_off"],["Send the shutdown signal (ACPI)","shutdown_signal"],["Save the VM state","save_vm_state"]]}getCategories(){return[["Default","guest"],["Routers","router"],["Switches","switch"],["End devices","guest"],["Security devices","firewall"]]}getPriorities(){return["realtime","very high","high","normal","low","very low"]}getMacAddrRegex(){return/^([0-9a-fA-F]{2}[:]){5}([0-9a-fA-F]{2})$/}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var ra=(()=>{class t{httpController;constructor(e){this.httpController=e}getTemplates(e){return this.httpController.get(e,"/templates")}getTemplate(e,n){return this.httpController.get(e,`/templates/${n}`)}getImagePath(e,n){return`${e.protocol}//${e.host}:${e.port}/${Ai.current_version}/images/upload/${n}`}getImages(e){return this.httpController.get(e,"/images?image_type=qemu")}createDiskImage(e,n,o,r,a){return this.httpController.post(e,`/projects/${n}/nodes/${o}/qemu/disk_image/${r}`,a)}addTemplate(e,n){let o=this.prepareTemplate(n);return this.httpController.post(e,"/templates",o)}saveTemplate(e,n){let o=this.prepareTemplate(n);return this.httpController.put(e,`/templates/${n.template_id}`,o)}prepareTemplate(e){return tt(H({},e),{custom_adapters:e.custom_adapters||[]})}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Ope=(t,i)=>i.filename;function Npe(t,i){if(t&1){let e=j();s(0,"button",30),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function Rpe(t,i){if(t&1&&(s(0,"mat-option",17),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Fpe(t,i){if(t&1&&(s(0,"mat-option",17),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Lpe(t,i){if(t&1&&(s(0,"mat-option",17),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Bpe(t,i){if(t&1&&(s(0,"mat-option",17),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e.filename," ")}}function Vpe(t,i){if(t&1){let e=j();s(0,"mat-form-field",13)(1,"mat-label"),d(2,"Disk image (hda)"),l(),s(3,"mat-select",31),v("selectionChange",function(o){D(e);let r=b();return P(r.selectedImage.set(o.value))}),J(4,Bpe,2,2,"mat-option",17,Ope),l()()}if(t&2){let e=b();u(3),x("value",e.selectedImage()),u(),ee(e.qemuImages())}}function zpe(t,i){if(t&1){let e=j();s(0,"div",26)(1,"input",32,0),v("change",function(o){D(e);let r=b();return P(r.uploadImageFile(o))}),l(),s(3,"button",33),v("click",function(){D(e);let o=Re(2);return P(o.click())}),d(4," Browse "),l(),s(5,"mat-form-field",34)(6,"mat-label"),d(7,"Image name"),l(),s(8,"input",35),v("input",function(o){D(e);let r=b();return P(r.fileName.set(o.target.value))}),l()()()}if(t&2){let e=b();u(),x("uploader",e.uploader()),u(7),x("value",e.fileName())}}var IS=(()=>{class t{route=f(Ye);controllerService=f(We);qemuService=f(ra);toasterService=f(fe);router=f(ut);templateMocksService=f(Fr);configurationService=f(mp);computeService=f(Lo);snackBar=f(Qr);uploadServiceService=f(Dl);cd=f(K);subscription;controller=me(void 0);selectPlatform=me([]);consoleTypes=me([]);auxConsoleTypes=me([]);newImageSelected=me(!1);qemuImages=me([]);selectedImage=me(void 0);chosenImage=me("");qemuTemplate=me(new dp);uploader=me(void 0);isLocalComputerChosen=me(!0);templateName=ae("");ramMemory=ae(256);fileName=ae("");selectedPlatform=ae("");consoleType=ae("");auxConsoleType=ae("");nameStepCompleted=ri(()=>!!this.templateName());platformStepCompleted=ri(()=>!!this.ramMemory()&&!!this.selectedPlatform());consoleStepCompleted=ri(()=>!!this.consoleType());auxConsoleStepCompleted=ri(()=>!!this.auxConsoleType());ngOnInit(){this.uploader.set(new Ka({url:""})),this.uploader().onAfterAddingFile=n=>{n.withCredentials=!1},this.uploader().onErrorItem=(n,o,r,a)=>{this.toasterService.error("An error occured: "+o)},this.uploader().onSuccessItem=(n,o,r,a)=>{this.qemuService.getImages(this.controller()).subscribe(c=>{this.qemuImages.set(c)}),this.toasterService.success("Image uploaded")},this.uploader().onProgressItem=n=>{this.uploadServiceService.processBarCount(n.progress)};let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller.set(n),this.templateMocksService.getQemuTemplate().subscribe(o=>{this.qemuTemplate.set(o)}),this.qemuService.getImages(this.controller()).subscribe(o=>{this.qemuImages.set(o)}),this.selectPlatform.set(this.configurationService.getPlatform()),this.selectedPlatform.set(this.selectPlatform()[0]),this.consoleTypes.set(this.configurationService.getConsoleTypes()),this.auxConsoleTypes.set(this.configurationService.getAuxConsoleTypes())}),this.subscription=this.uploadServiceService.currentCancelItemDetails.subscribe(n=>{n&&this.cancelUploading()})}setControllerType(e){e==="local"&&this.isLocalComputerChosen.set(!0)}setDiskImage(e){this.newImageSelected.set(e==="newImage")}uploadImageFile(e){let n=e.target.files[0].name;this.fileName.set(n),this.chosenImage.set(n);let o=this.qemuService.getImagePath(this.controller(),n);this.uploader().queue.forEach(a=>a.url=o);let r=this.uploader().queue[0];r.options&&(r.options.disableMultipart=!0),r.options.headers=[{name:"Authorization",value:"Bearer "+this.controller().authToken}],this.uploader().uploadItem(r),this.snackBar.openFromComponent(Il,{panelClass:"uplaoding-file-snackabar",data:{upload_file_type:"Image"}})}cancelUploading(){this.uploader().clearQueue(),this.uploadServiceService.processBarCount(null),this.toasterService.warning("Image Uploading canceled"),this.uploadServiceService.cancelFileUploading(!1)}goBack(){this.router.navigate(["/controller",this.controller().id,"preferences","qemu","templates"])}addTemplate(){if(this.templateName()&&this.ramMemory()&&(this.selectedImage()||this.chosenImage())){let e=this.qemuTemplate();e.ram=this.ramMemory(),e.platform=this.selectedPlatform(),this.newImageSelected()?e.hda_disk_image=this.fileName():e.hda_disk_image=this.selectedImage().path,e.template_id=Ti(),e.name=this.templateName(),e.compute_id="local",e.console_type=this.consoleType(),e.aux_type=this.auxConsoleType(),this.qemuService.addTemplate(this.controller(),e).subscribe({next:n=>{this.goBack()},error:n=>{let o=n.error?.message||n.message||"Failed to add qemu template";this.toasterService.error(o),this.cd.markForCheck()}})}else this.toasterService.error("Fill all required fields")}ngOnDestroy(){this.subscription.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-add-qemu-virtual-machine-template"]],inputs:{templateName:[1,"templateName"],ramMemory:[1,"ramMemory"],fileName:[1,"fileName"],selectedPlatform:[1,"selectedPlatform"],consoleType:[1,"consoleType"],auxConsoleType:[1,"auxConsoleType"]},outputs:{templateName:"templateNameChange",ramMemory:"ramMemoryChange",fileName:"fileNameChange",selectedPlatform:"selectedPlatformChange",consoleType:"consoleTypeChange",auxConsoleType:"auxConsoleTypeChange"},decls:60,vars:17,consts:[["file",""],[1,"qemu-add"],[1,"qemu-add__header"],["mat-icon-button","",1,"qemu-add__back-btn"],[1,"qemu-add__title"],[1,"qemu-add__content"],[1,"qemu-add__form-card"],[1,"qemu-add__stepper",3,"linear"],["label","Controller type",3,"completed"],[1,"qemu-add__radio-group"],["value","1",1,"qemu-add__radio",3,"click","checked"],["label","QEMU VM Name",3,"completed"],[1,"qemu-add__form"],["appearance","fill",1,"qemu-add__field"],["matInput","","type","text","placeholder","Please choose a descriptive name for your new QEMU virtual machine",3,"input","value"],["label","Platform and memory",3,"completed"],["placeholder","Platform",3,"selectionChange","value"],[3,"value"],["matInput","","type","number","min","1","placeholder","RAM",3,"input","value"],["matSuffix",""],["label","Console type",3,"completed"],["placeholder","Console type",3,"selectionChange","value"],["label","Auxiliary console type",3,"completed"],["placeholder","Auxiliary console type",3,"selectionChange","value"],["label","Disk image"],["value","2",1,"qemu-add__radio",3,"click","checked"],[1,"qemu-add__file-row"],[1,"qemu-add__actions"],["mat-button","",1,"qemu-add__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"qemu-add__submit-btn",3,"click"],["mat-icon-button","",1,"qemu-add__back-btn",3,"click"],["placeholder","Disk image (hda)",3,"selectionChange","value"],["type","file","accept",".qcow2","ng2FileSelect","",1,"qemu-add__file-input",3,"change","uploader"],["mat-raised-button","","color","primary",1,"qemu-add__browse-btn",3,"click"],["appearance","fill",1,"qemu-add__field","qemu-add__field--flex"],["matInput","","type","text","placeholder","Please enter name",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"header",2),A(2,Npe,3,0,"button",3),s(3,"h1",4),d(4,"New QEMU VM template"),l()(),s(5,"main",5)(6,"section",6)(7,"mat-vertical-stepper",7)(8,"mat-step",8)(9,"mat-radio-group",9)(10,"mat-radio-button",10),v("click",function(){return o.setControllerType("local")}),d(11," Run this QEMU VM locally "),l()()(),s(12,"mat-step",11)(13,"div",12)(14,"mat-form-field",13)(15,"mat-label"),d(16,"Template name"),l(),s(17,"input",14),v("input",function(a){return o.templateName.set(a.target.value)}),l()()()(),s(18,"mat-step",15)(19,"div",12)(20,"mat-form-field",13)(21,"mat-label"),d(22,"Platform"),l(),s(23,"mat-select",16),v("selectionChange",function(a){return o.selectedPlatform.set(a.value)}),J(24,Rpe,2,2,"mat-option",17,Fe),l()(),s(26,"mat-form-field",13)(27,"mat-label"),d(28,"RAM"),l(),s(29,"input",18),v("input",function(a){return o.ramMemory.set(+a.target.value)}),l(),s(30,"span",19),d(31,"MB"),l()()()(),s(32,"mat-step",20)(33,"mat-form-field",13)(34,"mat-label"),d(35,"Console type"),l(),s(36,"mat-select",21),v("selectionChange",function(a){return o.consoleType.set(a.value)}),J(37,Fpe,2,2,"mat-option",17,Fe),l()()(),s(39,"mat-step",22)(40,"mat-form-field",13)(41,"mat-label"),d(42,"Auxiliary console type"),l(),s(43,"mat-select",23),v("selectionChange",function(a){return o.auxConsoleType.set(a.value)}),J(44,Lpe,2,2,"mat-option",17,Fe),l()()(),s(46,"mat-step",24)(47,"div",12)(48,"mat-radio-group",9)(49,"mat-radio-button",10),v("click",function(){return o.setDiskImage("existingImage")}),d(50," Existing image "),l(),s(51,"mat-radio-button",25),v("click",function(){return o.setDiskImage("newImage")}),d(52," New image "),l()(),A(53,Vpe,6,1,"mat-form-field",13),A(54,zpe,9,2,"div",26),l()()()(),s(55,"div",27)(56,"button",28),v("click",function(){return o.goBack()}),d(57,"Cancel"),l(),s(58,"button",29),v("click",function(){return o.addTemplate()}),d(59," Add template "),l()()()()),n&2&&(u(2),O(o.controller()?2:-1),u(5),x("linear",!0),u(),x("completed",o.isLocalComputerChosen()),u(2),x("checked",!0),u(2),x("completed",o.nameStepCompleted()),u(5),x("value",o.templateName()),u(),x("completed",o.platformStepCompleted()),u(5),x("value",o.selectedPlatform()),u(),ee(o.selectPlatform()),u(5),x("value",o.ramMemory()),u(3),x("completed",o.consoleStepCompleted()),u(4),x("value",o.consoleType()),u(),ee(o.consoleTypes()),u(2),x("completed",o.auxConsoleStepCompleted()),u(4),x("value",o.auxConsoleType()),u(),ee(o.auxConsoleTypes()),u(5),x("checked",!o.newImageSelected()),u(2),x("checked",o.newImageSelected()),u(2),O(o.newImageSelected()?-1:53),u(),O(o.newImageSelected()?54:-1))},dependencies:[Z,nt,at,te,se,$,le,ze,Dt,go,Io,ko,Me,ke,lt,Fo,we,Te,Mt,At,St,El,cc,dc,xl,Gc],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.qemu-add__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.qemu-add__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.qemu-add__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.qemu-add__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.qemu-add__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.qemu-add__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);padding:24px}.qemu-add__stepper[_ngcontent-%COMP%]{background:transparent}.qemu-add__radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.qemu-add__radio[_ngcontent-%COMP%]{font-size:16px}.qemu-add__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.qemu-add__field[_ngcontent-%COMP%]{width:100%}.qemu-add__field--flex[_ngcontent-%COMP%]{flex:1}.qemu-add__file-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.qemu-add__file-input[_ngcontent-%COMP%]{display:none}.qemu-add__browse-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.qemu-add__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.qemu-add__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.qemu-add__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.qemu-add__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.qemu-add__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.qemu-add__title[_ngcontent-%COMP%]{font-size:24px}.qemu-add__content[_ngcontent-%COMP%]{padding:0 16px 16px}.qemu-add__form-card[_ngcontent-%COMP%]{padding:16px}.qemu-add__file-row[_ngcontent-%COMP%], .qemu-add__actions[_ngcontent-%COMP%]{flex-direction:column}.qemu-add__cancel-btn[_ngcontent-%COMP%], .qemu-add__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();function jpe(t,i){if(t&1){let e=j();s(0,"button",12),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}var AS=(()=>{class t{route=f(Ye);controllerService=f(We);qemuService=f(ra);toasterService=f(fe);router=f(ut);formBuilder=f(jt);cd=f(K);controller;templateName="";qemuTemplate;nameForm;constructor(){this.nameForm=this.formBuilder.group({templateName:new re("",be.required)})}ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.qemuService.getTemplate(this.controller,n).subscribe(r=>{this.qemuTemplate=r,this.templateName=`Copy of ${this.qemuTemplate.name}`,this.cd.markForCheck()})})}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","qemu","templates"])}addTemplate(){this.nameForm.invalid?this.toasterService.error("Fill all required fields"):(this.qemuTemplate.template_id=Ti(),this.qemuTemplate.name=this.nameForm.get("templateName").value,this.qemuService.addTemplate(this.controller,this.qemuTemplate).subscribe({next:e=>{this.goBack()},error:e=>{let n=e.error?.message||e.message||"Failed to copy qemu template";this.toasterService.error(n),this.cd.markForCheck()}}))}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-copy-qemu-virtual-machine-template"]],decls:17,vars:2,consts:[[1,"qemu-copy"],[1,"qemu-copy__header"],["mat-icon-button","",1,"qemu-copy__back-btn"],[1,"qemu-copy__title"],[1,"qemu-copy__content"],[1,"qemu-copy__form-card"],[1,"qemu-copy__form",3,"formGroup"],["appearance","fill",1,"qemu-copy__field"],["matInput","","type","text","placeholder","Name","formControlName","templateName"],[1,"qemu-copy__actions"],["mat-button","",1,"qemu-copy__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"qemu-copy__submit-btn",3,"click"],["mat-icon-button","",1,"qemu-copy__back-btn",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1),A(2,jpe,3,0,"button",2),s(3,"h1",3),d(4,"Copy QEMU VM template"),l()(),s(5,"main",4)(6,"section",5)(7,"form",6)(8,"mat-form-field",7)(9,"mat-label"),d(10,"Template name"),l(),F(11,"input",8),l()()(),s(12,"div",9)(13,"button",10),v("click",function(){return o.goBack()}),d(14,"Cancel"),l(),s(15,"button",11),v("click",function(){return o.addTemplate()}),d(16," Copy template "),l()()()()),n&2&&(u(2),O(o.controller?2:-1),u(5),x("formGroup",o.nameForm))},dependencies:[Z,nt,Ue,vt,mt,He,ct,pt,bt,at,te,se,$,le,ze,Dt,Me,ke,lt,we,Te],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.qemu-copy__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.qemu-copy__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.qemu-copy__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.qemu-copy__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.qemu-copy__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.qemu-copy__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);padding:24px}.qemu-copy__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.qemu-copy__field[_ngcontent-%COMP%]{width:100%}.qemu-copy__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.qemu-copy__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.qemu-copy__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.qemu-copy__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.qemu-copy__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.qemu-copy__title[_ngcontent-%COMP%]{font-size:24px}.qemu-copy__content[_ngcontent-%COMP%]{padding:0 16px 16px}.qemu-copy__form-card[_ngcontent-%COMP%]{padding:16px}.qemu-copy__actions[_ngcontent-%COMP%]{flex-direction:column}.qemu-copy__cancel-btn[_ngcontent-%COMP%], .qemu-copy__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var $pe=(t,i)=>i.adapter_number,Hpe=(t,i)=>i.value;function Upe(t,i){if(t&1&&(s(0,"mat-option",18),d(1),l()),t&2){let e=i.$implicit;x("value",e.value),u(),U(e.name)}}function Gpe(t,i){if(t&1&&(s(0,"mat-error"),d(1),l()),t&2){let e=b().$implicit,n=b();u(),U(n.getMacErrorMessage(e.mac_address))}}function Wpe(t,i){if(t&1){let e=j();s(0,"div",7)(1,"span",14),d(2),l(),s(3,"mat-form-field",15)(4,"input",16),v("input",function(o){let r=D(e).$implicit,a=b();return P(a.onPortNameChange(r.adapter_number,o.target.value))}),l()(),s(5,"mat-form-field",15)(6,"mat-select",17),v("selectionChange",function(o){let r=D(e).$implicit,a=b();return P(a.onAdapterTypeChange(r.adapter_number,o.value))}),J(7,Upe,2,2,"mat-option",18,Hpe),l()(),s(9,"mat-form-field",15)(10,"input",19),v("input",function(o){let r=D(e).$implicit,a=b();return P(a.onMacAddressChange(r.adapter_number,o.target.value))}),l(),A(11,Gpe,2,1,"mat-error"),l(),s(12,"button",20),v("click",function(){let o=D(e).$implicit,r=b();return P(r.delete(o))}),s(13,"mat-icon"),d(14,"delete"),l()()()}if(t&2){let e=i.$implicit,n=i.$index,o=b();u(2),X("Adapter ",e.adapter_number),u(2),x("name",no("port_name_",n))("value",e.port_name),u(2),x("name",no("adapter_type_",n))("value",e.adapter_type),u(),ee(o.networkTypes),u(3),x("name",no("mac_address_",n))("value",e.mac_address),u(),O(e.mac_address&&!o.isValidMacAddress(e.mac_address)?11:-1)}}var Ms=(()=>{class t{data;dialogRef=f(Pe);cd=f(K);toasterService=f(fe);adapters=ae([]);numberOfAdapters;constructor(e){this.data=e,this.adapters.set(e.adapters?[...e.adapters]:[])}get networkTypes(){return this.data.networkTypes||[]}onAdd(){let e=this.adapters(),o=(e.length>0?Math.max(...e.map(p=>p.adapter_number)):-1)+1,r=this.data.portNameFormat||"Ethernet{0}",a=this.data.portSegmentSize||0,c;if(a>0){let p=Math.floor(o/a),h=o%a;c=r.replace("{0}",String(p*a+h))}else c=r.replace("{0}",String(o));let m={adapter_number:o,adapter_type:this.networkTypes[0]?.value||"e1000",port_name:c,mac_address:""};this.adapters.set([...e,m])}delete(e){this.adapters.set(this.adapters().filter(n=>n!==e))}onPortNameChange(e,n){this.adapters.update(o=>o.map(r=>r.adapter_number===e?tt(H({},r),{port_name:n}):r)),this.cd.markForCheck()}onAdapterTypeChange(e,n){this.adapters.update(o=>o.map(r=>r.adapter_number===e?tt(H({},r),{adapter_type:n}):r)),this.cd.markForCheck()}onMacAddressChange(e,n){let o=this.formatMacAddress(n);this.adapters.update(r=>r.map(a=>a.adapter_number===e?tt(H({},a),{mac_address:o}):a)),this.cd.markForCheck()}formatMacAddress(e){if(!e)return e;let n=e.replace(/[^0-9A-Fa-f]/g,"");return n.length!==12?e:n.match(/.{1,2}/g)?.join(":")||e}isValidMacAddress(e){return e?/^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$/.test(e):!0}hasInvalidMacAddresses(){return this.adapters().some(e=>e.mac_address&&!this.isValidMacAddress(e.mac_address))}getMacErrorMessage(e){if(!e)return" ";let n=e.replace(/[^0-9A-Fa-f]/g,"");return n.length===0?"Invalid MAC address format":n.length<12?`Too short (${n.length}/12 hex digits)`:n.length>12?`Too long (${n.length}/12 hex digits)`:"Invalid MAC address format (12 hex digits required)"}cancelConfigureCustomAdapters(){this.dialogRef.close()}configureCustomAdapters(){if(this.hasInvalidMacAddresses()){let p=this.adapters().filter(h=>h.mac_address&&!this.isValidMacAddress(h.mac_address)).map(h=>{let g=this.getMacErrorMessage(h.mac_address);return`Adapter ${h.adapter_number}: ${g}`});this.toasterService.error(`Invalid MAC addresses:
|
||
`+p.join(`
|
||
`));return}let e=this.data.portNameFormat||"Ethernet{0}",n=this.data.portSegmentSize||0,o=this.data.defaultAdapterType||"e1000",r=[];for(let m of this.adapters()){let p;if(n>0){let C=Math.floor(m.adapter_number/n),_=m.adapter_number%n;p=e.replace("{0}",String(C*n+_))}else p=e.replace("{0}",String(m.adapter_number));let h=m.port_name!==p,g=m.adapter_type!==o,M=m.mac_address&&m.mac_address.length>0;(h||g||M)&&r.push({adapter_number:m.adapter_number,port_name:h?m.port_name:p,adapter_type:m.adapter_type,mac_address:m.mac_address||null})}let a=this.adapters().length,c={adapters:r,requiredAdapters:a};this.dialogRef.close(c)}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-custom-adapters"]],inputs:{adapters:[1,"adapters"]},outputs:{adapters:"adaptersChange"},decls:28,vars:0,consts:[["mat-dialog-title",""],["mat-dialog-content","",1,"content"],[1,"adapter-form"],[1,"adapter-header"],[1,"adapter-header-label"],[1,"adapter-header-field"],[1,"adapter-header-actions"],[1,"adapter-item"],[1,"add-adapter-row"],["mat-button","",1,"add-btn",3,"click"],[1,"info-note-text"],["mat-dialog-actions","","align","end"],["mat-button","",3,"click"],["mat-raised-button","","color","primary",3,"click"],[1,"adapter-label"],["appearance","fill","subscriptSizing","dynamic",1,"adapter-field"],["matInput","",3,"input","value","name"],[3,"selectionChange","value","name"],[3,"value"],["matInput","","placeholder","Paste any MAC format",3,"input","value","name"],["mat-icon-button","","matTooltip","Delete",1,"adapter-actions",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Custom adapters configuration"),l(),s(2,"div",1)(3,"div",2)(4,"div",3)(5,"span",4),d(6,"Adapter"),l(),s(7,"span",5),d(8,"Port name"),l(),s(9,"span",5),d(10,"Type"),l(),s(11,"span",5),d(12,"MAC address"),l(),F(13,"span",6),l(),J(14,Wpe,15,11,"div",7,$pe),l(),s(16,"div",8)(17,"button",9),v("click",function(){return o.onAdd()}),s(18,"mat-icon"),d(19,"add"),l(),d(20," Add adapter "),l(),s(21,"div",10),d(22," Deleting an adapter reduces the total number of adapters. Adapter numbers will be renumbered when reopened. Adapters without custom configuration will use default settings. "),l()()(),s(23,"div",11)(24,"button",12),v("click",function(){return o.cancelConfigureCustomAdapters()}),d(25,"Cancel"),l(),s(26,"button",13),v("click",function(){return o.configureCustomAdapters()}),d(27,"Apply"),l()()),n&2&&(u(14),ee(o.adapters()))},dependencies:[$,le,ze,Me,ke,Ni,te,se,we,Te,Mt,At,St,Gt,Kt,Ce,Ve,Be,Wt],styles:["[_nghost-%COMP%]{display:block}.adapter-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;max-height:500px;overflow-y:auto}.adapter-item[_ngcontent-%COMP%]{display:grid;grid-template-columns:100px 1fr 2fr 1.5fr auto;gap:12px;align-items:center;padding:12px 16px;background:var(--mat-sys-surface-container-lowest);border-radius:12px;border:1px solid color-mix(in srgb,var(--mat-sys-outline) 15%,transparent)}.adapter-item[_ngcontent-%COMP%]:hover{border-color:color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.adapter-label[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:var(--mat-sys-on-surface);text-align:center}.adapter-header[_ngcontent-%COMP%]{display:grid;grid-template-columns:100px 1fr 2fr 1.5fr auto;gap:12px;align-items:center;padding:8px 16px;margin-bottom:8px;border-bottom:2px solid color-mix(in srgb,var(--mat-sys-outline) 30%,transparent);position:sticky;top:0;z-index:10;background:var(--mat-sys-surface);box-shadow:0 2px 4px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.adapter-header-label[_ngcontent-%COMP%], .adapter-header-field[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--mat-sys-on-surface-variant);text-transform:uppercase;letter-spacing:.5px;text-align:center}.adapter-header-actions[_ngcontent-%COMP%]{width:40px;text-align:center}.adapter-field[_ngcontent-%COMP%], .adapter-actions[_ngcontent-%COMP%]{margin:0;text-align:center}.add-btn[_ngcontent-%COMP%]{flex-shrink:0;width:auto;margin-top:12px;height:48px;border-radius:12px;font-size:14px;font-weight:500;text-transform:none;border:2px dashed color-mix(in srgb,var(--mat-sys-outline) 40%,transparent);color:var(--mat-sys-on-surface-variant)}.add-btn[_ngcontent-%COMP%]:hover{border-color:var(--mat-sys-primary);color:var(--mat-sys-primary);background:color-mix(in srgb,var(--mat-sys-primary) 8%,transparent)}"],changeDetection:0})}return t})();var RV=(t,i)=>i[1],qpe=(t,i)=>i.value;function Xpe(t,i){if(t&1){let e=j();s(0,"button",10),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function Qpe(t,i){if(t&1){let e=j();s(0,"mat-chip",36),v("removed",function(){let o=D(e).$implicit,r=b(3);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",37),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function Ype(t,i){if(t&1&&(s(0,"mat-option",31),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function Kpe(t,i){if(t&1&&(s(0,"mat-option",31),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Zpe(t,i){if(t&1&&(s(0,"mat-option",31),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function Jpe(t,i){if(t&1&&(s(0,"mat-option",31),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function eue(t,i){if(t&1&&(s(0,"mat-option",31),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function tue(t,i){if(t&1&&(s(0,"mat-option",31),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function nue(t,i){if(t&1){let e=j();s(0,"form",15)(1,"mat-form-field",22)(2,"mat-label"),d(3,"Template name"),l(),s(4,"input",23),v("input",function(o){D(e);let r=b(2);return P(r.templateName.set(o.target.value))}),l()(),s(5,"mat-form-field",22)(6,"mat-label"),d(7,"Default name format"),l(),s(8,"input",24),v("input",function(o){D(e);let r=b(2);return P(r.defaultName.set(o.target.value))}),l()(),s(9,"div",25)(10,"mat-form-field",26)(11,"mat-label"),d(12,"Symbol"),l(),s(13,"input",27),v("input",function(o){D(e);let r=b(2);return P(r.symbol.set(o.target.value))}),l()(),s(14,"button",28),v("click",function(){D(e);let o=b(2);return P(o.chooseSymbol())}),d(15,"Choose symbol"),l()(),s(16,"mat-form-field",22)(17,"mat-label"),d(18,"Tags"),l(),s(19,"mat-chip-grid",null,0),J(21,Qpe,4,1,"mat-chip",null,Fe),l(),s(23,"input",29),v("matChipInputTokenEnd",function(o){D(e);let r=b(2);return P(r.addTag(o))}),l()(),s(24,"mat-form-field",22)(25,"mat-label"),d(26,"Category"),l(),s(27,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.category.set(o.value))}),J(28,Ype,2,2,"mat-option",31,Ii),l()(),s(30,"mat-form-field",22)(31,"mat-label"),d(32,"Platform"),l(),s(33,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.platform.set(o.value))}),J(34,Kpe,2,2,"mat-option",31,Fe),l()(),s(36,"mat-form-field",22)(37,"mat-label"),d(38,"RAM"),l(),s(39,"input",32),v("input",function(o){D(e);let r=b(2);return P(r.ram.set(+o.target.value))}),l(),s(40,"span",33),d(41,"MB"),l()(),s(42,"mat-form-field",22)(43,"mat-label"),d(44,"vCPUs"),l(),s(45,"input",34),v("input",function(o){D(e);let r=b(2);return P(r.cpus.set(+o.target.value))}),l()(),s(46,"mat-form-field",22)(47,"mat-label"),d(48,"Boot priority"),l(),s(49,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.bootPriority.set(o.value))}),J(50,Zpe,2,2,"mat-option",31,RV),l()(),s(52,"mat-form-field",22)(53,"mat-label"),d(54,"On close"),l(),s(55,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.onClose.set(o.value))}),J(56,Jpe,2,2,"mat-option",31,RV),l()(),s(58,"mat-form-field",22)(59,"mat-label"),d(60,"Console type"),l(),s(61,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.consoleType.set(o.value))}),J(62,eue,2,2,"mat-option",31,Fe),l()(),s(64,"mat-form-field",22)(65,"mat-label"),d(66,"Auxiliary console type"),l(),s(67,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.auxConsoleType.set(o.value))}),J(68,tue,2,2,"mat-option",31,Fe),l()(),s(70,"mat-checkbox",35),v("change",function(o){D(e);let r=b(2);return P(r.consoleAutoStart.set(o.checked))}),d(71,"Auto start console"),l()()}if(t&2){let e=Re(20),n=b(2);u(4),x("value",n.templateName()),u(4),x("value",n.defaultName()),u(5),x("value",n.symbol()),u(8),ee(n.tags()),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(4),x("value",n.category()),u(),ee(n.categories),u(5),x("value",n.platform()),u(),ee(n.selectPlatform),u(5),x("value",n.ram()),u(6),x("value",n.cpus()),u(4),x("value",n.bootPriority()),u(),ee(n.bootPriorities),u(5),x("value",n.onClose()),u(),ee(n.onCloseOptions),u(5),x("value",n.consoleType()),u(),ee(n.consoleTypes),u(5),x("value",n.auxConsoleType()),u(),ee(n.auxConsoleTypes),u(2),x("checked",n.consoleAutoStart())}}function iue(t,i){if(t&1&&(s(0,"mat-option",31),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function oue(t,i){if(t&1&&(s(0,"mat-option",31),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function rue(t,i){if(t&1&&(s(0,"mat-option",31),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function aue(t,i){if(t&1&&(s(0,"mat-option",31),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function sue(t,i){if(t&1){let e=j();s(0,"div",16)(1,"div",38)(2,"h4",39),d(3,"HDA (Primary Master)"),l(),s(4,"mat-form-field",22)(5,"mat-label"),d(6,"Disk image"),l(),s(7,"input",40),v("input",function(o){D(e);let r=b(2);return P(r.hdaDiskImage.set(o.target.value))}),l()(),s(8,"mat-form-field",22)(9,"mat-label"),d(10,"Disk interface"),l(),s(11,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.hdaDiskInterface.set(o.value))}),J(12,iue,2,2,"mat-option",31,Fe),l()()(),s(14,"div",38)(15,"h4",39),d(16,"HDB (Primary Slave)"),l(),s(17,"mat-form-field",22)(18,"mat-label"),d(19,"Disk image"),l(),s(20,"input",40),v("input",function(o){D(e);let r=b(2);return P(r.hdbDiskImage.set(o.target.value))}),l()(),s(21,"mat-form-field",22)(22,"mat-label"),d(23,"Disk interface"),l(),s(24,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.hdbDiskInterface.set(o.value))}),J(25,oue,2,2,"mat-option",31,Fe),l()()(),s(27,"div",38)(28,"h4",39),d(29,"HDC (Secondary Master)"),l(),s(30,"mat-form-field",22)(31,"mat-label"),d(32,"Disk image"),l(),s(33,"input",40),v("input",function(o){D(e);let r=b(2);return P(r.hdcDiskImage.set(o.target.value))}),l()(),s(34,"mat-form-field",22)(35,"mat-label"),d(36,"Disk interface"),l(),s(37,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.hdcDiskInterface.set(o.value))}),J(38,rue,2,2,"mat-option",31,Fe),l()()(),s(40,"div",38)(41,"h4",39),d(42,"HDD (Secondary Slave)"),l(),s(43,"mat-form-field",22)(44,"mat-label"),d(45,"Disk image"),l(),s(46,"input",40),v("input",function(o){D(e);let r=b(2);return P(r.hddDiskImage.set(o.target.value))}),l()(),s(47,"mat-form-field",22)(48,"mat-label"),d(49,"Disk interface"),l(),s(50,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.hddDiskInterface.set(o.value))}),J(51,aue,2,2,"mat-option",31,Fe),l()()()()}if(t&2){let e=b(2);u(7),x("value",e.hdaDiskImage()),u(4),x("value",e.hdaDiskInterface()),u(),ee(e.diskInterfaces),u(8),x("value",e.hdbDiskImage()),u(4),x("value",e.hdbDiskInterface()),u(),ee(e.diskInterfaces),u(8),x("value",e.hdcDiskImage()),u(4),x("value",e.hdcDiskInterface()),u(),ee(e.diskInterfaces),u(8),x("value",e.hddDiskImage()),u(4),x("value",e.hddDiskInterface()),u(),ee(e.diskInterfaces)}}function lue(t,i){if(t&1){let e=j();s(0,"div",17)(1,"input",41,1),v("change",function(o){D(e);let r=b(2);return P(r.uploadCdromImageFile(o))}),l(),s(3,"button",42),v("click",function(){D(e);let o=Re(2);return P(o.click())}),d(4," Browse "),l(),s(5,"mat-form-field",26)(6,"mat-label"),d(7,"Image"),l(),s(8,"input",43),v("input",function(o){D(e);let r=b(2);return P(r.cdromImage.set(o.target.value))}),l()()()}if(t&2){let e=b(2);u(8),x("value",e.cdromImage())}}function cue(t,i){if(t&1&&(s(0,"mat-option",31),d(1),l()),t&2){let e=i.$implicit;x("value",e.value),u(),Hi("",e.name," (",e.value,")")}}function due(t,i){if(t&1){let e=j();s(0,"form",15)(1,"mat-form-field",22)(2,"mat-label"),d(3,"Adapters"),l(),s(4,"input",44),v("input",function(o){D(e);let r=b(2);return P(r.adapters.set(+o.target.value))}),l()(),s(5,"mat-form-field",22)(6,"mat-label"),d(7,"First port name"),l(),s(8,"input",45),v("input",function(o){D(e);let r=b(2);return P(r.firstPortName.set(o.target.value))}),l()(),s(9,"mat-form-field",22)(10,"mat-label"),d(11,"Name format"),l(),s(12,"input",46),v("input",function(o){D(e);let r=b(2);return P(r.portNameFormat.set(o.target.value))}),l()(),s(13,"mat-form-field",22)(14,"mat-label"),d(15,"Segment size"),l(),s(16,"input",47),v("input",function(o){D(e);let r=b(2);return P(r.portSegmentSize.set(+o.target.value))}),l()(),s(17,"mat-form-field",22)(18,"mat-label"),d(19,"Base MAC"),l(),s(20,"input",48),v("input",function(o){D(e);let r=b(2);return P(r.macAddress.set(o.target.value))}),l()(),s(21,"mat-form-field",22)(22,"mat-label"),d(23,"Type"),l(),s(24,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.networkType.set(o.value))}),J(25,cue,2,3,"mat-option",31,qpe),l()(),s(27,"button",49),v("click",function(){D(e);let o=b(2);return P(o.openCustomAdaptersDialog())}),d(28," Configure custom adapters "),l(),s(29,"mat-checkbox",35),v("change",function(o){D(e);let r=b(2);return P(r.replicateNetworkConnectionState.set(o.checked))}),d(30,"Replicate network connection state"),l()()}if(t&2){let e=b(2);u(4),x("value",e.adapters()),u(4),x("value",e.firstPortName()),u(4),x("value",e.portNameFormat()),u(4),x("value",e.portSegmentSize()),u(4),x("value",e.macAddress()),u(4),x("value",e.networkType()),u(),ee(e.networkTypes),u(4),x("checked",e.replicateNetworkConnectionState())}}function mue(t,i){if(t&1){let e=j();s(0,"mat-form-field",22)(1,"mat-label"),d(2,"Perecentage of CPU allowed"),l(),s(3,"input",58),v("input",function(o){D(e);let r=b(3);return P(r.cpuThrottling.set(+o.target.value))}),l()()}if(t&2){let e=b(3);u(3),x("value",e.cpuThrottling())}}function pue(t,i){if(t&1&&(s(0,"mat-option",31),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function uue(t,i){if(t&1){let e=j();s(0,"div",15)(1,"div",50)(2,"h4",51),d(3,"Linux boot specific settings"),l(),s(4,"div",17)(5,"input",41,2),v("change",function(o){D(e);let r=b(2);return P(r.uploadInitrdFile(o))}),l(),s(7,"button",42),v("click",function(){D(e);let o=Re(6);return P(o.click())}),d(8," Browse "),l(),s(9,"mat-form-field",26)(10,"mat-label"),d(11,"Initial RAM disk (initrd)"),l(),s(12,"input",52),v("input",function(o){D(e);let r=b(2);return P(r.initrd.set(o.target.value))}),l()()(),s(13,"div",17)(14,"input",41,3),v("change",function(o){D(e);let r=b(2);return P(r.uploadKernelImageFile(o))}),l(),s(16,"button",42),v("click",function(){D(e);let o=Re(15);return P(o.click())}),d(17," Browse "),l(),s(18,"mat-form-field",26)(19,"mat-label"),d(20,"Kernel image"),l(),s(21,"input",53),v("input",function(o){D(e);let r=b(2);return P(r.kernelImage.set(o.target.value))}),l()()(),s(22,"mat-form-field",22)(23,"mat-label"),d(24,"Kernel command line"),l(),s(25,"input",54),v("input",function(o){D(e);let r=b(2);return P(r.kernelCommandLine.set(o.target.value))}),l()()(),s(26,"div",50)(27,"h4",51),d(28,"Bios"),l(),s(29,"div",17)(30,"input",41,4),v("change",function(o){D(e);let r=b(2);return P(r.uploadBiosFile(o))}),l(),s(32,"button",42),v("click",function(){D(e);let o=Re(31);return P(o.click())}),d(33," Browse "),l(),s(34,"mat-form-field",26)(35,"mat-label"),d(36,"Bios image"),l(),s(37,"input",55),v("input",function(o){D(e);let r=b(2);return P(r.biosImage.set(o.target.value))}),l()()()(),s(38,"div",50)(39,"h4",51),d(40,"Optimization"),l(),s(41,"mat-checkbox",35),v("change",function(o){D(e);let r=b(2);return P(r.activateCpuThrottling.set(o.checked))}),d(42,"Activate CPU throttling"),l(),A(43,mue,4,1,"mat-form-field",22),s(44,"mat-form-field",22)(45,"mat-label"),d(46,"Process priority"),l(),s(47,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.processPriority.set(o.value))}),J(48,pue,2,2,"mat-option",31,Fe),l()()(),s(50,"div",50)(51,"h4",51),d(52,"Additional settings"),l(),s(53,"mat-form-field",22)(54,"mat-label"),d(55,"Custom Qemu binary path"),l(),s(56,"input",56),v("input",function(o){D(e);let r=b(2);return P(r.qemuPath.set(o.target.value))}),l()(),s(57,"mat-form-field",22)(58,"mat-label"),d(59,"Options"),l(),s(60,"input",57),v("input",function(o){D(e);let r=b(2);return P(r.options.set(o.target.value))}),l()(),s(61,"mat-checkbox",35),v("change",function(o){D(e);let r=b(2);return P(r.linkedClone.set(o.checked))}),d(62,"Use as a linked base VM"),l(),s(63,"mat-checkbox",35),v("change",function(o){D(e);let r=b(2);return P(r.tpm.set(o.checked))}),d(64,"Enable the Trusted Platform Module (TPM)"),l(),s(65,"mat-checkbox",35),v("change",function(o){D(e);let r=b(2);return P(r.uefi.set(o.checked))}),d(66,"Enable the UEFI boot mode"),l()()()}if(t&2){let e=b(2);u(12),x("value",e.initrd()),u(9),x("value",e.kernelImage()),u(4),x("value",e.kernelCommandLine()),u(12),x("value",e.biosImage()),u(4),x("checked",e.activateCpuThrottling()),u(2),O(e.activateCpuThrottling()?43:-1),u(4),x("value",e.processPriority()),u(),ee(e.priorities),u(8),x("value",e.qemuPath()),u(4),x("value",e.options()),u(),x("checked",e.linkedClone()),u(2),x("checked",e.tpm()),u(2),x("checked",e.uefi())}}function hue(t,i){if(t&1){let e=j();s(0,"div",18)(1,"mat-form-field",59)(2,"mat-label"),d(3,"Usage notes"),l(),s(4,"textarea",60),v("input",function(o){D(e);let r=b(2);return P(r.usage.set(o.target.value))}),l()()()}if(t&2){let e=b(2);u(4),x("value",e.usage())}}function fue(t,i){if(t&1){let e=j();s(0,"main",9)(1,"section",11)(2,"div",12),v("click",function(){D(e);let o=b();return P(o.toggleSection("general"))}),s(3,"h3",13),d(4,"General settings"),l(),s(5,"mat-icon",14),d(6),l()(),A(7,nue,72,14,"form",15),l(),s(8,"section",11)(9,"div",12),v("click",function(){D(e);let o=b();return P(o.toggleSection("hdd"))}),s(10,"h3",13),d(11,"HDD"),l(),s(12,"mat-icon",14),d(13),l()(),A(14,sue,53,8,"div",16),l(),s(15,"section",11)(16,"div",12),v("click",function(){D(e);let o=b();return P(o.toggleSection("cddvd"))}),s(17,"h3",13),d(18,"CD/DVD"),l(),s(19,"mat-icon",14),d(20),l()(),A(21,lue,9,1,"div",17),l(),s(22,"section",11)(23,"div",12),v("click",function(){D(e);let o=b();return P(o.toggleSection("network"))}),s(24,"h3",13),d(25,"Network"),l(),s(26,"mat-icon",14),d(27),l()(),A(28,due,31,7,"form",15),l(),s(29,"section",11)(30,"div",12),v("click",function(){D(e);let o=b();return P(o.toggleSection("advanced"))}),s(31,"h3",13),d(32,"Advanced"),l(),s(33,"mat-icon",14),d(34),l()(),A(35,uue,67,12,"div",15),l(),s(36,"section",11)(37,"div",12),v("click",function(){D(e);let o=b();return P(o.toggleSection("usage"))}),s(38,"h3",13),d(39,"Usage"),l(),s(40,"mat-icon",14),d(41),l()(),A(42,hue,5,1,"div",18),l(),s(43,"div",19)(44,"button",20),v("click",function(){D(e);let o=b();return P(o.goBack())}),d(45,"Cancel"),l(),s(46,"button",21),v("click",function(){D(e);let o=b();return P(o.onSave())}),d(47,"Save"),l()()()}if(t&2){let e=b();u(6),U(e.generalSettingsExpanded?"expand_less":"expand_more"),u(),O(e.generalSettingsExpanded?7:-1),u(6),U(e.hddExpanded?"expand_less":"expand_more"),u(),O(e.hddExpanded?14:-1),u(6),U(e.cdDvdExpanded?"expand_less":"expand_more"),u(),O(e.cdDvdExpanded?21:-1),u(6),U(e.networkExpanded?"expand_less":"expand_more"),u(),O(e.networkExpanded?28:-1),u(6),U(e.advancedExpanded?"expand_less":"expand_more"),u(),O(e.advancedExpanded?35:-1),u(6),U(e.usageExpanded?"expand_less":"expand_more"),u(),O(e.usageExpanded?42:-1)}}var OS=(()=>{class t{route=f(Ye);controllerService=f(We);qemuService=f(ra);toasterService=f(fe);configurationService=f(mp);router=f(ut);cd=f(K);dialog=f(Je);dialogConfig=f(Ji);controller;qemuTemplate;consoleTypes=[];auxConsoleTypes=[];diskInterfaces=[];networkTypes=[];bootPriorities=[];onCloseOptions=[];categories=[];priorities=[];displayedColumns=["adapter_number","port_name","adapter_type","mac_address","actions"];selectPlatform=[];separatorKeysCodes=[13,188];generalSettingsExpanded=!1;hddExpanded=!1;cdDvdExpanded=!1;networkExpanded=!1;advancedExpanded=!1;usageExpanded=!1;templateName=ae("");defaultName=ae("");symbol=ae("");category=ae("");platform=ae("");ram=ae(256);cpus=ae(1);bootPriority=ae("");onClose=ae("");consoleType=ae("");auxConsoleType=ae("");consoleAutoStart=ae(!1);hdaDiskImage=ae("");hdaDiskInterface=ae("");hdbDiskImage=ae("");hdbDiskInterface=ae("");hdcDiskImage=ae("");hdcDiskInterface=ae("");hddDiskImage=ae("");hddDiskInterface=ae("");cdromImage=ae("");adapters=ae(0);firstPortName=ae("");portNameFormat=ae("");portSegmentSize=ae(0);macAddress=ae("");networkType=ae("");replicateNetworkConnectionState=ae(!1);initrd=ae("");kernelImage=ae("");kernelCommandLine=ae("");biosImage=ae("");activateCpuThrottling=ae(!1);cpuThrottling=ae(0);processPriority=ae("");qemuPath=ae("");options=ae("");linkedClone=ae(!1);tpm=ae(!1);uefi=ae(!1);usage=ae("");tags=ae([]);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.getConfiguration(),this.qemuService.getTemplate(this.controller,n).subscribe(r=>{this.qemuTemplate=r,this.qemuTemplate.tags||(this.qemuTemplate.tags=[]),this.initFormFromTemplate(),this.cd.markForCheck()})}),this.selectPlatform=this.configurationService.getPlatform()}initFormFromTemplate(){this.templateName.set(this.qemuTemplate.name||""),this.defaultName.set(this.qemuTemplate.default_name_format||""),this.symbol.set(this.qemuTemplate.symbol||""),this.category.set(this.qemuTemplate.category||""),this.platform.set(this.qemuTemplate.platform||""),this.ram.set(this.qemuTemplate.ram||256),this.cpus.set(this.qemuTemplate.cpus||1),this.bootPriority.set(this.qemuTemplate.boot_priority||""),this.onClose.set(this.qemuTemplate.on_close||""),this.consoleType.set(this.qemuTemplate.console_type||""),this.auxConsoleType.set(this.qemuTemplate.aux_type||""),this.consoleAutoStart.set(this.qemuTemplate.console_auto_start||!1),this.hdaDiskImage.set(this.qemuTemplate.hda_disk_image||""),this.hdaDiskInterface.set(this.qemuTemplate.hda_disk_interface||""),this.hdbDiskImage.set(this.qemuTemplate.hdb_disk_image||""),this.hdbDiskInterface.set(this.qemuTemplate.hdb_disk_interface||""),this.hdcDiskImage.set(this.qemuTemplate.hdc_disk_image||""),this.hdcDiskInterface.set(this.qemuTemplate.hdc_disk_interface||""),this.hddDiskImage.set(this.qemuTemplate.hdd_disk_image||""),this.hddDiskInterface.set(this.qemuTemplate.hdd_disk_interface||""),this.cdromImage.set(this.qemuTemplate.cdrom_image||""),this.adapters.set(this.qemuTemplate.adapters||0),this.firstPortName.set(this.qemuTemplate.first_port_name||""),this.portNameFormat.set(this.qemuTemplate.port_name_format||""),this.portSegmentSize.set(this.qemuTemplate.port_segment_size||0),this.macAddress.set(this.qemuTemplate.mac_address||""),this.networkType.set(this.qemuTemplate.adapter_type||""),this.replicateNetworkConnectionState.set(this.qemuTemplate.replicate_network_connection_state||!1),this.initrd.set(this.qemuTemplate.initrd||""),this.kernelImage.set(this.qemuTemplate.kernel_image||""),this.kernelCommandLine.set(this.qemuTemplate.kernel_command_line||""),this.biosImage.set(this.qemuTemplate.bios_image||""),this.activateCpuThrottling.set(this.qemuTemplate.cpu_throttling!==void 0&&this.qemuTemplate.cpu_throttling>0),this.cpuThrottling.set(this.qemuTemplate.cpu_throttling||0),this.processPriority.set(this.qemuTemplate.process_priority||""),this.qemuPath.set(this.qemuTemplate.qemu_path||""),this.options.set(this.qemuTemplate.options||""),this.linkedClone.set(this.qemuTemplate.linked_clone||!1),this.tpm.set(this.qemuTemplate.tpm||!1),this.uefi.set(this.qemuTemplate.uefi||!1),this.usage.set(this.qemuTemplate.usage||""),this.tags.set(this.qemuTemplate.tags||[])}getConfiguration(){this.consoleTypes=this.configurationService.getConsoleTypes(),this.auxConsoleTypes=this.configurationService.getAuxConsoleTypes(),this.diskInterfaces=this.configurationService.getDiskInterfaces(),this.networkTypes=this.configurationService.getNetworkTypes(),this.bootPriorities=this.configurationService.getBootPriorities(),this.onCloseOptions=this.configurationService.getOnCloseOptions(),this.categories=this.configurationService.getCategories(),this.priorities=this.configurationService.getPriorities()}uploadCdromImageFile(e){let n=e.target;n.files&&n.files.length>0&&this.cdromImage.set(n.files[0].name)}uploadInitrdFile(e){let n=e.target;n.files&&n.files.length>0&&this.initrd.set(n.files[0].name)}uploadKernelImageFile(e){let n=e.target;n.files&&n.files.length>0&&this.kernelImage.set(n.files[0].name)}uploadBiosFile(e){let n=e.target;n.files&&n.files.length>0&&this.biosImage.set(n.files[0].name)}openCustomAdaptersDialog(){let e=this.portNameFormat()||"Ethernet{0}",n=this.portSegmentSize()||0,o=this.networkType()||"e1000",r=this.adapters(),a=this.qemuTemplate.custom_adapters||[],c=[];for(let p=0;p<r;p++){let h=a.find(g=>g.adapter_number===p);if(h)c.push({adapter_number:h.adapter_number,adapter_type:h.adapter_type,port_name:h.port_name,mac_address:h.mac_address||""});else{let g;if(n>0){let M=Math.floor(p/n),C=p%n;g=e.replace("{0}",String(M*n+C))}else g=e.replace("{0}",String(p));c.push({adapter_number:p,adapter_type:o,port_name:g,mac_address:""})}}this.dialog.open(Ms,{panelClass:"custom-adapters-dialog-panel",data:{adapters:c,networkTypes:this.networkTypes,portNameFormat:e,portSegmentSize:n,defaultAdapterType:o,currentAdapters:r}}).afterClosed().subscribe(p=>{p&&(this.qemuTemplate.custom_adapters=p.adapters,p.requiredAdapters!==void 0&&this.adapters.set(p.requiredAdapters),this.cd.markForCheck())})}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","qemu","templates"])}onSave(){if(!this.templateName()||!this.defaultName()||!this.symbol()){let e=[];this.templateName()||e.push("Template name"),this.defaultName()||e.push("Default name format"),this.symbol()||e.push("Symbol"),this.toasterService.error(`Missing required fields: ${e.join(", ")}`);return}this.qemuTemplate.name=this.templateName(),this.qemuTemplate.default_name_format=this.defaultName(),this.qemuTemplate.symbol=this.symbol(),this.qemuTemplate.category=this.category(),this.qemuTemplate.platform=this.platform(),this.qemuTemplate.ram=this.ram(),this.qemuTemplate.cpus=this.cpus(),this.qemuTemplate.boot_priority=this.bootPriority(),this.qemuTemplate.on_close=this.onClose(),this.qemuTemplate.console_type=this.consoleType(),this.qemuTemplate.aux_type=this.auxConsoleType(),this.qemuTemplate.console_auto_start=this.consoleAutoStart(),this.qemuTemplate.hda_disk_image=this.hdaDiskImage(),this.qemuTemplate.hda_disk_interface=this.hdaDiskInterface(),this.qemuTemplate.hdb_disk_image=this.hdbDiskImage(),this.qemuTemplate.hdb_disk_interface=this.hdbDiskInterface(),this.qemuTemplate.hdc_disk_image=this.hdcDiskImage(),this.qemuTemplate.hdc_disk_interface=this.hdcDiskInterface(),this.qemuTemplate.hdd_disk_image=this.hddDiskImage(),this.qemuTemplate.hdd_disk_interface=this.hddDiskInterface(),this.qemuTemplate.cdrom_image=this.cdromImage(),this.qemuTemplate.adapters=this.adapters(),this.qemuTemplate.first_port_name=this.firstPortName(),this.qemuTemplate.port_name_format=this.portNameFormat(),this.qemuTemplate.port_segment_size=this.portSegmentSize(),this.qemuTemplate.mac_address=this.macAddress(),this.qemuTemplate.adapter_type=this.networkType(),this.qemuTemplate.replicate_network_connection_state=this.replicateNetworkConnectionState(),this.qemuTemplate.initrd=this.initrd(),this.qemuTemplate.kernel_image=this.kernelImage(),this.qemuTemplate.kernel_command_line=this.kernelCommandLine(),this.qemuTemplate.bios_image=this.biosImage(),this.qemuTemplate.cpu_throttling=this.activateCpuThrottling()?this.cpuThrottling():0,this.qemuTemplate.process_priority=this.processPriority(),this.qemuTemplate.qemu_path=this.qemuPath(),this.qemuTemplate.options=this.options(),this.qemuTemplate.linked_clone=this.linkedClone(),this.qemuTemplate.tpm=this.tpm(),this.qemuTemplate.uefi=this.uefi(),this.qemuTemplate.usage=this.usage(),this.qemuTemplate.tags=this.tags(),this.qemuService.saveTemplate(this.controller,this.qemuTemplate).subscribe({next:e=>{this.toasterService.success("Changes saved"),this.qemuTemplate=e,this.initFormFromTemplate(),this.cd.markForCheck()},error:e=>{this.toasterService.error("Failed to save template: "+(e.message||"Unknown error"))}})}chooseSymbol(){let e=this.dialogConfig.openConfig("templateSymbol",{autoFocus:!1,disableClose:!1,data:{controller:this.controller,symbol:this.symbol()}});this.dialog.open(pr,e).afterClosed().subscribe(o=>{o&&this.symbol.set(o)})}addTag(e){let n=(e.value||"").trim(),o=this.tags();n&&this.tags.set([...o,n]),e.chipInput&&e.chipInput.clear()}removeTag(e){let n=this.tags(),o=n.indexOf(e);if(o>=0){let r=[...n];r.splice(o,1),this.tags.set(r)}}toggleSection(e){switch(e){case"general":this.generalSettingsExpanded=!this.generalSettingsExpanded;break;case"hdd":this.hddExpanded=!this.hddExpanded;break;case"cddvd":this.cdDvdExpanded=!this.cdDvdExpanded;break;case"network":this.networkExpanded=!this.networkExpanded;break;case"advanced":this.advancedExpanded=!this.advancedExpanded;break;case"usage":this.usageExpanded=!this.usageExpanded;break}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-qemu-virtual-machine-template-details"]],inputs:{templateName:[1,"templateName"],defaultName:[1,"defaultName"],symbol:[1,"symbol"],category:[1,"category"],platform:[1,"platform"],ram:[1,"ram"],cpus:[1,"cpus"],bootPriority:[1,"bootPriority"],onClose:[1,"onClose"],consoleType:[1,"consoleType"],auxConsoleType:[1,"auxConsoleType"],consoleAutoStart:[1,"consoleAutoStart"],hdaDiskImage:[1,"hdaDiskImage"],hdaDiskInterface:[1,"hdaDiskInterface"],hdbDiskImage:[1,"hdbDiskImage"],hdbDiskInterface:[1,"hdbDiskInterface"],hdcDiskImage:[1,"hdcDiskImage"],hdcDiskInterface:[1,"hdcDiskInterface"],hddDiskImage:[1,"hddDiskImage"],hddDiskInterface:[1,"hddDiskInterface"],cdromImage:[1,"cdromImage"],adapters:[1,"adapters"],firstPortName:[1,"firstPortName"],portNameFormat:[1,"portNameFormat"],portSegmentSize:[1,"portSegmentSize"],macAddress:[1,"macAddress"],networkType:[1,"networkType"],replicateNetworkConnectionState:[1,"replicateNetworkConnectionState"],initrd:[1,"initrd"],kernelImage:[1,"kernelImage"],kernelCommandLine:[1,"kernelCommandLine"],biosImage:[1,"biosImage"],activateCpuThrottling:[1,"activateCpuThrottling"],cpuThrottling:[1,"cpuThrottling"],processPriority:[1,"processPriority"],qemuPath:[1,"qemuPath"],options:[1,"options"],linkedClone:[1,"linkedClone"],tpm:[1,"tpm"],uefi:[1,"uefi"],usage:[1,"usage"],tags:[1,"tags"]},outputs:{templateName:"templateNameChange",defaultName:"defaultNameChange",symbol:"symbolChange",category:"categoryChange",platform:"platformChange",ram:"ramChange",cpus:"cpusChange",bootPriority:"bootPriorityChange",onClose:"onCloseChange",consoleType:"consoleTypeChange",auxConsoleType:"auxConsoleTypeChange",consoleAutoStart:"consoleAutoStartChange",hdaDiskImage:"hdaDiskImageChange",hdaDiskInterface:"hdaDiskInterfaceChange",hdbDiskImage:"hdbDiskImageChange",hdbDiskInterface:"hdbDiskInterfaceChange",hdcDiskImage:"hdcDiskImageChange",hdcDiskInterface:"hdcDiskInterfaceChange",hddDiskImage:"hddDiskImageChange",hddDiskInterface:"hddDiskInterfaceChange",cdromImage:"cdromImageChange",adapters:"adaptersChange",firstPortName:"firstPortNameChange",portNameFormat:"portNameFormatChange",portSegmentSize:"portSegmentSizeChange",macAddress:"macAddressChange",networkType:"networkTypeChange",replicateNetworkConnectionState:"replicateNetworkConnectionStateChange",initrd:"initrdChange",kernelImage:"kernelImageChange",kernelCommandLine:"kernelCommandLineChange",biosImage:"biosImageChange",activateCpuThrottling:"activateCpuThrottlingChange",cpuThrottling:"cpuThrottlingChange",processPriority:"processPriorityChange",qemuPath:"qemuPathChange",options:"optionsChange",linkedClone:"linkedCloneChange",tpm:"tpmChange",uefi:"uefiChange",usage:"usageChange",tags:"tagsChange"},decls:6,vars:2,consts:[["chipList",""],["filecdrom",""],["fileinitrd",""],["filekernelimage",""],["filebios",""],[1,"qemu-template-details"],[1,"qemu-template-details__header"],["mat-icon-button","",1,"qemu-template-details__back-btn"],[1,"qemu-template-details__title"],[1,"qemu-template-details__content"],["mat-icon-button","",1,"qemu-template-details__back-btn",3,"click"],[1,"qemu-template-details__form-card"],[1,"qemu-template-details__section-header",3,"click"],[1,"qemu-template-details__section-title"],[1,"qemu-template-details__expand-icon"],[1,"qemu-template-details__form"],[1,"qemu-template-details__disk-grid"],[1,"qemu-template-details__file-row"],[1,"preferences__usage-form"],[1,"qemu-template-details__actions"],["mat-button","",1,"qemu-template-details__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"qemu-template-details__save-btn",3,"click"],["appearance","fill",1,"qemu-template-details__field"],["matInput","","type","text","placeholder","Template name",3,"input","value"],["matInput","","type","text","placeholder","Default name format",3,"input","value"],[1,"qemu-template-details__symbol-row"],["appearance","fill",1,"qemu-template-details__field","qemu-template-details__field--flex"],["matInput","","type","text","placeholder","Symbol",3,"input","value"],["mat-button","",1,"qemu-template-details__symbol-btn",3,"click"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],[3,"selectionChange","value"],[3,"value"],["matInput","","type","number","min","1","placeholder","RAM",3,"input","value"],["matSuffix",""],["matInput","","type","number","min","1","placeholder","vCPUs",3,"input","value"],[3,"change","checked"],[3,"removed"],["matChipRemove",""],[1,"qemu-template-details__disk-item"],[1,"qemu-template-details__disk-title"],["matInput","","placeholder","Disk image",3,"input","value"],["type","file",1,"qemu-template-details__file-input",3,"change"],["mat-raised-button","","color","primary",1,"qemu-template-details__browse-btn",3,"click"],["matInput","","type","text","placeholder","Image",3,"input","value"],["matInput","","type","number","min","0","placeholder","Adapters",3,"input","value"],["matInput","","type","text","placeholder","First port name",3,"input","value"],["matInput","","type","text","placeholder","Name format",3,"input","value"],["matInput","","type","number","min","0","placeholder","Segment size",3,"input","value"],["matInput","","type","text","placeholder","Base MAC",3,"input","value"],["mat-button","","type","button",1,"qemu-template-details__config-btn",3,"click"],[1,"qemu-template-details__subsection"],[1,"qemu-template-details__subsection-title"],["matInput","","type","text","placeholder","Initial RAM disk (initrd)",3,"input","value"],["matInput","","type","text","placeholder","Kernel image",3,"input","value"],["matInput","","type","text","placeholder","Kernel command line",3,"input","value"],["matInput","","type","text","placeholder","Bios image",3,"input","value"],["matInput","","type","text","placeholder","Custom Qemu binary path",3,"input","value"],["matInput","","type","text","placeholder","Options",3,"input","value"],["matInput","","type","number","placeholder","Perecentage of CPU allowed",3,"input","value"],["appearance","fill",1,"preferences__usage-field--full"],["matInput","","type","text",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",5)(1,"header",6),A(2,Xpe,3,0,"button",7),s(3,"h1",8),d(4,"QEMU VM template configuration"),l()(),A(5,fue,48,12,"main",9),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.qemuTemplate?5:-1))},dependencies:[Z,nt,Ue,He,Ci,at,te,se,$,le,ze,Me,ke,lt,Fo,we,Te,Mt,At,St,ti,zn,mi,pi,di,Ot,Ht],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.qemu-template-details__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.qemu-template-details__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.qemu-template-details__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.qemu-template-details__title[_ngcontent-%COMP%]{flex:1;font-size:28px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.qemu-template-details__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.qemu-template-details--hidden[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.qemu-template-details__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);margin-bottom:16px}.qemu-template-details__form[_ngcontent-%COMP%]{padding:16px 24px 24px;display:flex;flex-direction:column;gap:16px}.qemu-template-details__field[_ngcontent-%COMP%]{width:100%}.qemu-template-details__field--flex[_ngcontent-%COMP%]{flex:1}.qemu-template-details__field--full[_ngcontent-%COMP%]{width:100%}.qemu-template-details__section-title[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.qemu-template-details__section-header[_ngcontent-%COMP%]{padding:16px 24px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color .2s ease;border-bottom:1px solid color-mix(in srgb,var(--mat-sys-outline) 30%,transparent)}.qemu-template-details__section-header[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.qemu-template-details__expand-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);transition:transform .2s ease}.qemu-template-details__symbol-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.qemu-template-details__symbol-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.qemu-template-details__file-row[_ngcontent-%COMP%]{padding:16px 24px;display:flex;align-items:flex-start;gap:16px}.qemu-template-details__file-input[_ngcontent-%COMP%]{display:none}.qemu-template-details__browse-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.qemu-template-details__config-btn[_ngcontent-%COMP%]{margin-top:8px}.qemu-template-details__disk-grid[_ngcontent-%COMP%]{padding:16px 24px 24px;display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.qemu-template-details__disk-item[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--mat-sys-surface-variant) 50%,transparent);border-radius:12px;padding:16px}.qemu-template-details__disk-title[_ngcontent-%COMP%]{margin:0 0 12px;font-size:14px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.qemu-template-details__subsection[_ngcontent-%COMP%]{padding-top:16px;border-top:1px solid color-mix(in srgb,var(--mat-sys-outline) 20%,transparent)}.qemu-template-details__subsection[_ngcontent-%COMP%]:first-child{padding-top:0;border-top:none}.qemu-template-details__subsection-title[_ngcontent-%COMP%]{margin:0 0 12px;font-size:14px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.qemu-template-details__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.qemu-template-details__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.qemu-template-details__save-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.qemu-template-details__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.qemu-template-details__section-header[_ngcontent-%COMP%]{padding:12px 16px}.qemu-template-details__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.qemu-template-details__title[_ngcontent-%COMP%]{font-size:22px}.qemu-template-details__content[_ngcontent-%COMP%]{padding:0 16px 16px}.qemu-template-details__form[_ngcontent-%COMP%]{padding:16px}.qemu-template-details__symbol-row[_ngcontent-%COMP%]{flex-direction:column}.qemu-template-details__file-row[_ngcontent-%COMP%]{flex-direction:column;padding:16px}.qemu-template-details__disk-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}.qemu-template-details__actions[_ngcontent-%COMP%]{flex-direction:column}.qemu-template-details__cancel-btn[_ngcontent-%COMP%], .qemu-template-details__save-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var gue=(t,i)=>i.template_id;function _ue(t,i){if(t&1&&(s(0,"button",4)(1,"mat-icon"),d(2,"arrow_back"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences")}}function vue(t,i){if(t&1&&(s(0,"button",6)(1,"mat-icon"),d(2,"add_circle_outline"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences/qemu/addtemplate")}}function bue(t,i){t&1&&F(0,"app-empty-templates-list")}function Cue(t,i){if(t&1){let e=j();s(0,"div",10)(1,"mat-icon",11),d(2,"memory"),l(),s(3,"span",12),d(4),l(),s(5,"button",13),v("click",function(o){return o.stopPropagation()}),s(6,"mat-icon"),d(7,"more_vert"),l()(),s(8,"mat-menu",14,1)(10,"a",15)(11,"mat-icon"),d(12,"edit"),l(),s(13,"span"),d(14,"Edit"),l()(),s(15,"button",16),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.copyTemplate(o))}),s(16,"mat-icon"),d(17,"content_copy"),l(),s(18,"span"),d(19,"Copy"),l()(),s(20,"button",16),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.deleteTemplate(o))}),s(21,"mat-icon"),d(22,"delete"),l(),s(23,"span"),d(24,"Delete"),l()()()()}if(t&2){let e=i.$implicit,n=Re(9);x("routerLink",e.template_id),u(4),U(e.name),u(),x("matMenuTriggerFor",n),u(5),x("routerLink",e.template_id)}}function xue(t,i){if(t&1&&(s(0,"nav",8),J(1,Cue,25,4,"div",10,gue),l()),t&2){let e=b();u(),ee(e.qemuTemplates)}}var NS=(()=>{class t{route=f(Ye);controllerService=f(We);qemuService=f(ra);router=f(ut);cd=f(K);controller;qemuTemplates=[];deleteComponent=Ut(ui);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck(),this.getTemplates()})}getTemplates(){this.qemuService.getTemplates(this.controller).subscribe(e=>{this.qemuTemplates=e.filter(n=>n.template_type==="qemu"&&!n.builtin),this.cd.markForCheck()})}deleteTemplate(e){this.deleteComponent().deleteItem(e.name,e.template_id)}onDeleteEvent(){this.getTemplates()}copyTemplate(e){this.router.navigate(["/controller",this.controller.id,"preferences","qemu","templates",e.template_id,"copy"])}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-qemu-virtual-machines-templates"]],viewQuery:function(n,o){n&1&&tn(o.deleteComponent,ui,5),n&2&&nn()},decls:11,vars:5,consts:[["deleteComponent",""],["menu","matMenu"],[1,"qemu-vm-templates"],[1,"qemu-vm-templates__header"],["mat-icon-button","",1,"qemu-vm-templates__back-btn",3,"routerLink"],[1,"qemu-vm-templates__title"],["matTooltip","Add QEMU VM template","matTooltipClass","custom-tooltip","mat-icon-button","",1,"qemu-vm-templates__add-btn",3,"routerLink"],[1,"qemu-vm-templates__content"],[1,"qemu-vm-templates__list"],[3,"deleteEvent","controller"],[1,"qemu-vm-templates__list-item",3,"routerLink"],[1,"qemu-vm-templates__list-icon"],[1,"qemu-vm-templates__list-name"],["mat-icon-button","",1,"qemu-vm-templates__menu-btn",3,"click","matMenuTriggerFor"],["xPosition","before"],["mat-menu-item","",3,"routerLink"],["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"div",2)(1,"header",3),A(2,_ue,3,1,"button",4),s(3,"h1",5),d(4,"QEMU VM templates"),l(),A(5,vue,3,1,"button",6),l(),s(6,"main",7),A(7,bue,1,0,"app-empty-templates-list"),A(8,xue,3,0,"nav",8),l()(),s(9,"app-delete-template",9,0),v("deleteEvent",function(){return o.onDeleteEvent()}),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.controller?5:-1),u(2),O(o.qemuTemplates.length?-1:7),u(),O(o.qemuTemplates.length?8:-1),u(),x("controller",o.controller))},dependencies:[Z,at,cn,$,ze,te,se,Ri,Qe,Fn,ot,kn,Gt,Kt,ui,ur],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.qemu-vm-templates__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.qemu-vm-templates__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.qemu-vm-templates__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.qemu-vm-templates__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.qemu-vm-templates__add-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-primary);transition:all .2s cubic-bezier(.4,0,.2,1)}.qemu-vm-templates__add-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent)}.qemu-vm-templates__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.qemu-vm-templates__list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.qemu-vm-templates__list-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;text-decoration:none;color:var(--mat-sys-on-surface)}.qemu-vm-templates__list-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.qemu-vm-templates__list-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.qemu-vm-templates__list-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.qemu-vm-templates__list-name[_ngcontent-%COMP%]{flex:1;font-size:16px;font-weight:500}.qemu-vm-templates__menu-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);flex-shrink:0}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.qemu-vm-templates__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.qemu-vm-templates__back-btn[_ngcontent-%COMP%], .qemu-vm-templates__add-btn[_ngcontent-%COMP%]{width:44px;height:44px}.qemu-vm-templates__title[_ngcontent-%COMP%]{font-size:24px}.qemu-vm-templates__content[_ngcontent-%COMP%]{padding:0 16px 16px}.qemu-vm-templates__list-item[_ngcontent-%COMP%]{padding:14px 16px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var pp=(()=>{class t{httpController;constructor(e){this.httpController=e}getTemplates(e){return this.httpController.get(e,"/templates")}getTemplate(e,n){return this.httpController.get(e,`/templates/${n}`)}addTemplate(e,n){let o=this.prepareTemplate(n);return this.httpController.post(e,"/templates",o)}saveTemplate(e,n){let o=this.prepareTemplate(n);return this.httpController.put(e,`/templates/${n.template_id}`,o)}prepareTemplate(e){return tt(H({},e),{custom_adapters:e.custom_adapters||[]})}getVirtualMachines(e){return this.httpController.get(e,`/computes/${Ai.compute_id}/virtualbox/vms`)}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function yue(t,i){if(t&1){let e=j();s(0,"button",5),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function Sue(t,i){if(t&1&&(s(0,"mat-option",10),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e.vmname," ")}}function wue(t,i){if(t&1){let e=j();s(0,"main",4)(1,"section",6)(2,"div",7)(3,"mat-form-field",8)(4,"mat-label"),d(5,"VM list"),l(),s(6,"mat-select",9),v("selectionChange",function(o){D(e);let r=b();return r.vm.set(o.value),P(r.selectedVM.set(o.value))}),J(7,Sue,2,2,"mat-option",10,Fe),l()()(),s(9,"mat-checkbox",11),v("change",function(o){D(e);let r=b();return P(r.linkedClone.set(o.checked))}),d(10," Use as a linked base VM (experimental) "),l()(),s(11,"div",12)(12,"button",13),v("click",function(){D(e);let o=b();return P(o.goBack())}),d(13,"Cancel"),l(),s(14,"button",14),v("click",function(){D(e);let o=b();return P(o.addTemplate())}),d(15," Add template "),l()()()}if(t&2){let e=b();u(6),x("value",e.vm()),u(),ee(e.virtualMachines()),u(2),x("checked",e.linkedClone())}}var RS=(()=>{class t{route=f(Ye);controllerService=f(We);virtualBoxService=f(pp);toasterService=f(fe);templateMocksService=f(Fr);router=f(ut);cd=f(K);controller=me(void 0);virtualMachines=me([]);selectedVM=me(void 0);virtualBoxTemplate=me({});vm=ae("");linkedClone=ae(!1);ngOnInit(){setTimeout(()=>{this.toasterService.error("VirtualBox VM support is deprecated and will be removed in a future version, please use Qemu VMs instead")});let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller.set(n),this.cd.markForCheck(),this.virtualBoxService.getVirtualMachines(this.controller()).subscribe(o=>{this.virtualMachines.set(o),this.cd.markForCheck(),this.templateMocksService.getVirtualBoxTemplate().subscribe(r=>{this.virtualBoxTemplate.set(r),this.cd.markForCheck()})})})}goBack(){this.router.navigate(["/controller",this.controller().id,"preferences","virtualbox","templates"])}addTemplate(){if(this.vm()){let e=this.virtualBoxTemplate();e.name=this.selectedVM().vmname,e.vmname=this.selectedVM().vmname,e.ram=this.selectedVM().ram,e.linked_clone=this.linkedClone(),e.template_id=Ti(),this.virtualBoxService.addTemplate(this.controller(),e).subscribe({next:()=>{this.goBack()},error:n=>{let o=n.error?.message||n.message||"Failed to add virtual box template";this.toasterService.error(o),this.cd.markForCheck()}})}else this.toasterService.error("Fill all required fields")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-add-virtual-box-template"]],inputs:{vm:[1,"vm"],linkedClone:[1,"linkedClone"]},outputs:{vm:"vmChange",linkedClone:"linkedCloneChange"},decls:6,vars:2,consts:[[1,"virtualbox-add"],[1,"virtualbox-add__header"],["mat-icon-button","",1,"virtualbox-add__back-btn"],[1,"virtualbox-add__title"],[1,"virtualbox-add__content"],["mat-icon-button","",1,"virtualbox-add__back-btn",3,"click"],[1,"virtualbox-add__form-card"],[1,"virtualbox-add__form"],["appearance","fill",1,"virtualbox-add__field"],["placeholder","VM list",3,"selectionChange","value"],[3,"value"],[1,"virtualbox-add__checkbox",3,"change","checked"],[1,"virtualbox-add__actions"],["mat-button","",1,"virtualbox-add__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"virtualbox-add__submit-btn",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1),A(2,yue,3,0,"button",2),s(3,"h1",3),d(4,"New VirtualBox VM template"),l()(),A(5,wue,16,2,"main",4),l()),n&2&&(u(2),O(o.controller()?2:-1),u(3),O(o.virtualBoxTemplate()?5:-1))},dependencies:[Z,nt,at,te,se,$,le,ze,Dt,Mt,ke,lt,At,St,Ot,Ht,Me],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.virtualbox-add__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.virtualbox-add__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.virtualbox-add__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.virtualbox-add__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.virtualbox-add__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.virtualbox-add__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);padding:24px}.virtualbox-add__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.virtualbox-add__field[_ngcontent-%COMP%]{width:100%}.virtualbox-add__checkbox[_ngcontent-%COMP%]{margin-top:8px}.virtualbox-add__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.virtualbox-add__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.virtualbox-add__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.virtualbox-add__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.virtualbox-add__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.virtualbox-add__title[_ngcontent-%COMP%]{font-size:24px}.virtualbox-add__content[_ngcontent-%COMP%]{padding:0 16px 16px}.virtualbox-add__form-card[_ngcontent-%COMP%]{padding:16px}.virtualbox-add__actions[_ngcontent-%COMP%]{flex-direction:column}.virtualbox-add__cancel-btn[_ngcontent-%COMP%], .virtualbox-add__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var tg=(()=>{class t{getConsoleTypes(){return["telnet","none"]}getOnCloseoptions(){return[["Power off the VM","power_off"],["Send the shutdown signal (ACPI)","shutdown_signal"],["Save the VM state","save_vm_state"]]}getCategories(){return[["Default","guest"],["Routers","router"],["Switches","switch"],["End devices","guest"],["Security devices","firewall"]]}getNetworkTypes(){return["PCnet-PCI II (Am79C970A)","PCNet-FAST III (Am79C973)","Intel PRO/1000 MT Desktop (82540EM)","Intel PRO/1000 T Server (82543GC)","Intel PRO/1000 MT Server (82545EM)","Paravirtualized Network (virtio-net)"]}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Mue=(t,i)=>i[1];function kue(t,i){if(t&1){let e=j();s(0,"button",6),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function Tue(t,i){if(t&1){let e=j();s(0,"mat-chip",31),v("removed",function(){let o=D(e).$implicit,r=b(3);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",32),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function Eue(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),U(e[0])}}function Due(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function Pue(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),U(e[0])}}function Iue(t,i){if(t&1){let e=j();s(0,"form",11)(1,"mat-form-field",16)(2,"mat-label"),d(3,"Template name"),l(),s(4,"input",17),v("input",function(o){D(e);let r=b(2);return P(r.templateName.set(o.target.value))}),l()(),s(5,"mat-form-field",16)(6,"mat-label"),d(7,"Default name format"),l(),s(8,"input",18),v("input",function(o){D(e);let r=b(2);return P(r.defaultName.set(o.target.value))}),l()(),s(9,"div",19)(10,"mat-form-field",20)(11,"mat-label"),d(12,"Symbol"),l(),s(13,"input",21),v("input",function(o){D(e);let r=b(2);return P(r.symbol.set(o.target.value))}),l()(),s(14,"button",22),v("click",function(){D(e);let o=b(2);return P(o.chooseSymbol())}),d(15,"Choose symbol"),l()(),s(16,"mat-form-field",16)(17,"mat-label"),d(18,"Tags"),l(),s(19,"mat-chip-grid",null,0),J(21,Tue,4,1,"mat-chip",null,Fe),l(),s(23,"input",23),v("matChipInputTokenEnd",function(o){D(e);let r=b(2);return P(r.addTag(o))}),l()(),s(24,"mat-form-field",16)(25,"mat-label"),d(26,"Category"),l(),s(27,"mat-select",24),v("selectionChange",function(o){D(e);let r=b(2);return P(r.category.set(o.value))}),J(28,Eue,2,2,"mat-option",25,Ii),l()(),s(30,"mat-form-field",16)(31,"mat-label"),d(32,"Console type"),l(),s(33,"mat-select",26),v("selectionChange",function(o){D(e);let r=b(2);return P(r.consoleType.set(o.value))}),J(34,Due,2,2,"mat-option",25,Fe),l()(),s(36,"mat-checkbox",27),v("change",function(o){D(e);let r=b(2);return P(r.consoleAutoStart.set(o.checked))}),d(37,"Auto start console"),l(),s(38,"mat-form-field",16)(39,"mat-label"),d(40,"RAM"),l(),s(41,"input",28),v("input",function(o){D(e);let r=b(2);return P(r.ram.set(+o.target.value))}),l(),s(42,"span",29),d(43,"MB"),l()(),s(44,"mat-form-field",16)(45,"mat-label"),d(46,"On close"),l(),s(47,"mat-select",30),v("selectionChange",function(o){D(e);let r=b(2);return P(r.onClose.set(o.value))}),J(48,Pue,2,2,"mat-option",25,Mue),l()(),s(50,"mat-checkbox",27),v("change",function(o){D(e);let r=b(2);return P(r.headless.set(o.checked))}),d(51,"Start VM in headless mode"),l(),s(52,"mat-checkbox",27),v("change",function(o){D(e);let r=b(2);return P(r.linkedClone.set(o.checked))}),d(53,"Use as a linked base VM (experimental)"),l()()}if(t&2){let e=Re(20),n=b(2);u(4),x("value",n.templateName()),u(4),x("value",n.defaultName()),u(5),x("value",n.symbol()),u(8),ee(n.tags()),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(4),x("value",n.category()),u(),ee(n.categories),u(5),x("value",n.consoleType()),u(),ee(n.consoleTypes),u(2),x("checked",n.consoleAutoStart()),u(5),x("value",n.ram()),u(6),x("value",n.onClose()),u(),ee(n.onCloseOptions),u(2),x("checked",n.headless()),u(2),x("checked",n.linkedClone())}}function Aue(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function Oue(t,i){if(t&1){let e=j();s(0,"form",11)(1,"mat-form-field",16)(2,"mat-label"),d(3,"Adapters"),l(),s(4,"input",33),v("input",function(o){D(e);let r=b(2);return P(r.adapters.set(+o.target.value))}),l()(),s(5,"mat-form-field",16)(6,"mat-label"),d(7,"First port name"),l(),s(8,"input",34),v("input",function(o){D(e);let r=b(2);return P(r.firstPortName.set(o.target.value))}),l()(),s(9,"mat-form-field",16)(10,"mat-label"),d(11,"Name format"),l(),s(12,"input",35),v("input",function(o){D(e);let r=b(2);return P(r.nameFormat.set(o.target.value))}),l()(),s(13,"mat-form-field",16)(14,"mat-label"),d(15,"Segment size"),l(),s(16,"input",36),v("input",function(o){D(e);let r=b(2);return P(r.segmentSize.set(+o.target.value))}),l()(),s(17,"mat-form-field",16)(18,"mat-label"),d(19,"Type"),l(),s(20,"mat-select",37),v("selectionChange",function(o){D(e);let r=b(2);return P(r.networkType.set(o.value))}),J(21,Aue,2,2,"mat-option",25,Fe),l()()(),s(23,"button",38),v("click",function(){D(e);let o=b(2);return P(o.openCustomAdaptersDialog())}),d(24," Configure custom adapters "),l(),s(25,"mat-checkbox",27),v("change",function(o){D(e);let r=b(2);return P(r.useAnyAdapter.set(o.checked))}),d(26,"Allow GNS3 to use any configured VirtualBox adapter"),l()}if(t&2){let e=b(2);u(4),x("value",e.adapters()),u(4),x("value",e.firstPortName()),u(4),x("value",e.nameFormat()),u(4),x("value",e.segmentSize()),u(4),x("value",e.networkType()),u(),ee(e.networkTypes),u(4),x("checked",e.useAnyAdapter())}}function Nue(t,i){if(t&1){let e=j();s(0,"div",12)(1,"mat-form-field",39)(2,"mat-label"),d(3,"Usage"),l(),s(4,"textarea",40),v("input",function(o){D(e);let r=b(2);return P(r.usage.set(o.target.value))}),l()()()}if(t&2){let e=b(2);u(4),x("value",e.usage())}}function Rue(t,i){if(t&1){let e=j();s(0,"main",5)(1,"section",7)(2,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("general"))}),s(3,"h3",9),d(4,"General settings"),l(),s(5,"mat-icon",10),d(6),l()(),A(7,Iue,54,12,"form",11),l(),s(8,"section",7)(9,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("network"))}),s(10,"h3",9),d(11,"Network"),l(),s(12,"mat-icon",10),d(13),l()(),A(14,Oue,27,6),l(),s(15,"section",7)(16,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("usage"))}),s(17,"h3",9),d(18,"Usage"),l(),s(19,"mat-icon",10),d(20),l()(),A(21,Nue,5,1,"div",12),l(),s(22,"div",13)(23,"button",14),v("click",function(){D(e);let o=b();return P(o.goBack())}),d(24,"Cancel"),l(),s(25,"button",15),v("click",function(){D(e);let o=b();return P(o.onSave())}),d(26,"Save"),l()()()}if(t&2){let e=b();u(6),U(e.generalSettingsExpanded?"expand_less":"expand_more"),u(),O(e.generalSettingsExpanded?7:-1),u(6),U(e.networkExpanded?"expand_less":"expand_more"),u(),O(e.networkExpanded?14:-1),u(6),U(e.usageExpanded?"expand_less":"expand_more"),u(),O(e.usageExpanded?21:-1)}}var FS=(()=>{class t{route=f(Ye);controllerService=f(We);virtualBoxService=f(pp);toasterService=f(fe);virtualBoxConfigurationService=f(tg);router=f(ut);cd=f(K);dialog=f(Je);dialogConfig=f(Ji);controller;virtualBoxTemplate;separatorKeysCodes=[13,188];consoleTypes=[];onCloseOptions=[];categories=[];networkTypes=[];displayedColumns=["adapter_number","port_name","adapter_type","mac_address","actions"];generalSettingsExpanded=!0;networkExpanded=!1;usageExpanded=!1;templateName=ae("");defaultName=ae("");symbol=ae("");category=ae("");consoleType=ae("");consoleAutoStart=ae(!1);ram=ae(256);onClose=ae("");headless=ae(!1);linkedClone=ae(!1);adapters=ae(0);firstPortName=ae("");nameFormat=ae("");segmentSize=ae(0);networkType=ae("");useAnyAdapter=ae(!1);usage=ae("");tags=ae([]);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.getConfiguration(),this.virtualBoxService.getTemplate(this.controller,n).subscribe(r=>{this.virtualBoxTemplate=r,this.virtualBoxTemplate.tags||(this.virtualBoxTemplate.tags=[]),this.initFormFromTemplate(),this.cd.markForCheck()})})}initFormFromTemplate(){this.templateName.set(this.virtualBoxTemplate.name||""),this.defaultName.set(this.virtualBoxTemplate.default_name_format||""),this.symbol.set(this.virtualBoxTemplate.symbol||""),this.category.set(this.virtualBoxTemplate.category||""),this.consoleType.set(this.virtualBoxTemplate.console_type||""),this.consoleAutoStart.set(this.virtualBoxTemplate.console_auto_start||!1),this.ram.set(this.virtualBoxTemplate.ram||256),this.onClose.set(this.virtualBoxTemplate.on_close||""),this.headless.set(this.virtualBoxTemplate.headless||!1),this.linkedClone.set(this.virtualBoxTemplate.linked_clone||!1),this.adapters.set(this.virtualBoxTemplate.adapters||0),this.firstPortName.set(this.virtualBoxTemplate.first_port_name||""),this.nameFormat.set(this.virtualBoxTemplate.port_name_format||""),this.segmentSize.set(this.virtualBoxTemplate.port_segment_size||0),this.networkType.set(this.virtualBoxTemplate.adapter_type||""),this.useAnyAdapter.set(this.virtualBoxTemplate.use_any_adapter||!1),this.usage.set(this.virtualBoxTemplate.usage||""),this.tags.set(this.virtualBoxTemplate.tags||[])}getConfiguration(){this.consoleTypes=this.virtualBoxConfigurationService.getConsoleTypes(),this.onCloseOptions=this.virtualBoxConfigurationService.getOnCloseoptions(),this.categories=this.virtualBoxConfigurationService.getCategories(),this.networkTypes=this.virtualBoxConfigurationService.getNetworkTypes()}toggleSection(e){switch(e){case"general":this.generalSettingsExpanded=!this.generalSettingsExpanded;break;case"network":this.networkExpanded=!this.networkExpanded;break;case"usage":this.usageExpanded=!this.usageExpanded;break}}openCustomAdaptersDialog(){let e=this.nameFormat()||"Ethernet{0}",n=this.segmentSize()||0,o=this.networkType()||"e1000",r=this.adapters(),a=this.virtualBoxTemplate.custom_adapters||[],c=[];for(let p=0;p<r;p++){let h=a.find(g=>g.adapter_number===p);if(h)c.push({adapter_number:h.adapter_number,adapter_type:h.adapter_type,port_name:h.port_name,mac_address:h.mac_address||""});else{let g;if(n>0){let M=Math.floor(p/n),C=p%n;g=e.replace("{0}",String(M*n+C))}else g=e.replace("{0}",String(p));c.push({adapter_number:p,adapter_type:o,port_name:g,mac_address:""})}}this.dialog.open(Ms,{panelClass:"custom-adapters-dialog-panel",data:{adapters:c,networkTypes:this.networkTypes,portNameFormat:e,portSegmentSize:n,defaultAdapterType:o,currentAdapters:r}}).afterClosed().subscribe(p=>{p&&(this.virtualBoxTemplate.custom_adapters=p.adapters,p.requiredAdapters!==void 0&&this.adapters.set(p.requiredAdapters),this.cd.markForCheck())})}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","virtualbox","templates"])}onSave(){if(!this.templateName()||!this.defaultName()||!this.symbol()){let e=[];this.templateName()||e.push("Template name"),this.defaultName()||e.push("Default name format"),this.symbol()||e.push("Symbol"),this.toasterService.error(`Missing required fields: ${e.join(", ")}`);return}this.virtualBoxTemplate.name=this.templateName(),this.virtualBoxTemplate.default_name_format=this.defaultName(),this.virtualBoxTemplate.symbol=this.symbol(),this.virtualBoxTemplate.category=this.category(),this.virtualBoxTemplate.console_type=this.consoleType(),this.virtualBoxTemplate.console_auto_start=this.consoleAutoStart(),this.virtualBoxTemplate.ram=this.ram(),this.virtualBoxTemplate.on_close=this.onClose(),this.virtualBoxTemplate.headless=this.headless(),this.virtualBoxTemplate.linked_clone=this.linkedClone(),this.virtualBoxTemplate.adapters=this.adapters(),this.virtualBoxTemplate.first_port_name=this.firstPortName(),this.virtualBoxTemplate.port_name_format=this.nameFormat(),this.virtualBoxTemplate.port_segment_size=this.segmentSize(),this.virtualBoxTemplate.adapter_type=this.networkType(),this.virtualBoxTemplate.use_any_adapter=this.useAnyAdapter(),this.virtualBoxTemplate.usage=this.usage(),this.virtualBoxTemplate.tags=this.tags(),this.virtualBoxService.saveTemplate(this.controller,this.virtualBoxTemplate).subscribe({next:e=>{this.toasterService.success("Changes saved"),this.virtualBoxTemplate=e,this.initFormFromTemplate(),this.cd.markForCheck()},error:e=>{this.toasterService.error("Failed to save template: "+(e.message||"Unknown error"))}})}chooseSymbol(){let e=this.dialogConfig.openConfig("templateSymbol",{autoFocus:!1,disableClose:!1,data:{controller:this.controller,symbol:this.symbol()}});this.dialog.open(pr,e).afterClosed().subscribe(o=>{o&&this.symbol.set(o)})}addTag(e){let n=(e.value||"").trim(),o=this.tags();n&&this.tags.set([...o,n]),e.chipInput&&e.chipInput.clear()}removeTag(e){let n=this.tags(),o=n.indexOf(e);if(o>=0){let r=[...n];r.splice(o,1),this.tags.set(r)}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-virtual-box-template-details"]],inputs:{templateName:[1,"templateName"],defaultName:[1,"defaultName"],symbol:[1,"symbol"],category:[1,"category"],consoleType:[1,"consoleType"],consoleAutoStart:[1,"consoleAutoStart"],ram:[1,"ram"],onClose:[1,"onClose"],headless:[1,"headless"],linkedClone:[1,"linkedClone"],adapters:[1,"adapters"],firstPortName:[1,"firstPortName"],nameFormat:[1,"nameFormat"],segmentSize:[1,"segmentSize"],networkType:[1,"networkType"],useAnyAdapter:[1,"useAnyAdapter"],usage:[1,"usage"],tags:[1,"tags"]},outputs:{templateName:"templateNameChange",defaultName:"defaultNameChange",symbol:"symbolChange",category:"categoryChange",consoleType:"consoleTypeChange",consoleAutoStart:"consoleAutoStartChange",ram:"ramChange",onClose:"onCloseChange",headless:"headlessChange",linkedClone:"linkedCloneChange",adapters:"adaptersChange",firstPortName:"firstPortNameChange",nameFormat:"nameFormatChange",segmentSize:"segmentSizeChange",networkType:"networkTypeChange",useAnyAdapter:"useAnyAdapterChange",usage:"usageChange",tags:"tagsChange"},decls:6,vars:2,consts:[["chipList",""],[1,"virtualbox-details"],[1,"virtualbox-details__header"],["mat-icon-button","",1,"virtualbox-details__back-btn"],[1,"virtualbox-details__title"],[1,"virtualbox-details__content"],["mat-icon-button","",1,"virtualbox-details__back-btn",3,"click"],[1,"virtualbox-details__form-card"],[1,"virtualbox-details__section-header",3,"click"],[1,"virtualbox-details__section-title"],[1,"virtualbox-details__expand-icon"],[1,"virtualbox-details__form"],[1,"preferences__usage-form"],[1,"virtualbox-details__actions"],["mat-button","",1,"virtualbox-details__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"virtualbox-details__save-btn",3,"click"],["appearance","fill",1,"virtualbox-details__field"],["matInput","","type","text","placeholder","Template name",3,"input","value"],["matInput","","type","text","placeholder","Default name format",3,"input","value"],[1,"virtualbox-details__symbol-row"],["appearance","fill",1,"virtualbox-details__field","virtualbox-details__field--flex"],["matInput","","type","text","placeholder","Symbol",3,"input","value"],["mat-button","",1,"virtualbox-details__symbol-btn",3,"click"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],["placeholder","Category",3,"selectionChange","value"],[3,"value"],["placeholder","Console type",3,"selectionChange","value"],[1,"virtualbox-details__checkbox",3,"change","checked"],["matInput","","type","number","placeholder","RAM",3,"input","value"],["matSuffix",""],["placeholder","On close",3,"selectionChange","value"],[3,"removed"],["matChipRemove",""],["matInput","","type","number","placeholder","Adapters",3,"input","value"],["matInput","","type","text","placeholder","First port name",3,"input","value"],["matInput","","type","text","placeholder","Name format",3,"input","value"],["matInput","","type","number","placeholder","Segment size",3,"input","value"],["placeholder","Type",3,"selectionChange","value"],["mat-button","",1,"virtualbox-details__action-btn",3,"click"],["appearance","fill",1,"preferences__usage-field--full"],["matInput","","type","text",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"header",2),A(2,kue,3,0,"button",3),s(3,"h1",4),d(4,"VirtualBox VM template configuration"),l()(),A(5,Rue,27,6,"main",5),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.virtualBoxTemplate?5:-1))},dependencies:[Z,nt,Ue,He,Ci,at,te,se,$,le,ze,Me,ke,lt,Fo,we,Te,Mt,At,St,ti,zn,mi,pi,di,Ot,Ht],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.virtualbox-details__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.virtualbox-details__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.virtualbox-details__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.virtualbox-details__title[_ngcontent-%COMP%]{flex:1;font-size:28px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.virtualbox-details__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.virtualbox-details--hidden[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.virtualbox-details__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);margin-bottom:16px}.virtualbox-details__section-header[_ngcontent-%COMP%]{padding:16px 24px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color .2s ease;border-bottom:1px solid color-mix(in srgb,var(--mat-sys-outline) 30%,transparent)}.virtualbox-details__section-header[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.virtualbox-details__section-title[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.virtualbox-details__expand-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);transition:transform .2s ease}.virtualbox-details__form[_ngcontent-%COMP%]{padding:16px 24px 24px;display:flex;flex-direction:column;gap:16px}.virtualbox-details__field[_ngcontent-%COMP%]{width:100%}.virtualbox-details__field--flex[_ngcontent-%COMP%]{flex:1}.virtualbox-details__symbol-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.virtualbox-details__symbol-btn[_ngcontent-%COMP%], .virtualbox-details__action-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.virtualbox-details__checkbox[_ngcontent-%COMP%]{margin-top:8px}.virtualbox-details__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.virtualbox-details__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.virtualbox-details__save-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.virtualbox-details__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.virtualbox-details__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.virtualbox-details__title[_ngcontent-%COMP%]{font-size:22px}.virtualbox-details__content[_ngcontent-%COMP%]{padding:0 16px 16px}.virtualbox-details__section-header[_ngcontent-%COMP%]{padding:12px 16px}.virtualbox-details__form[_ngcontent-%COMP%]{padding:16px}.virtualbox-details__symbol-row[_ngcontent-%COMP%]{flex-direction:column}.virtualbox-details__symbol-btn[_ngcontent-%COMP%], .virtualbox-details__action-btn[_ngcontent-%COMP%]{width:100%}.virtualbox-details__actions[_ngcontent-%COMP%]{flex-direction:column}.virtualbox-details__cancel-btn[_ngcontent-%COMP%], .virtualbox-details__save-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var Fue=(t,i)=>i.template_id;function Lue(t,i){if(t&1&&(s(0,"button",4)(1,"mat-icon"),d(2,"arrow_back"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences")}}function Bue(t,i){if(t&1&&(s(0,"button",6)(1,"mat-icon"),d(2,"add_circle_outline"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences/virtualbox/addtemplate")}}function Vue(t,i){t&1&&F(0,"app-empty-templates-list")}function zue(t,i){if(t&1){let e=j();s(0,"div",10)(1,"mat-icon",11),d(2,"computer"),l(),s(3,"span",12),d(4),l(),s(5,"button",13),v("click",function(o){return o.stopPropagation()}),s(6,"mat-icon"),d(7,"more_vert"),l()(),s(8,"mat-menu",14,1)(10,"a",15)(11,"mat-icon"),d(12,"edit"),l(),s(13,"span"),d(14,"Edit"),l()(),s(15,"button",16),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.deleteTemplate(o))}),s(16,"mat-icon"),d(17,"delete"),l(),s(18,"span"),d(19,"Delete"),l()()()()}if(t&2){let e=i.$implicit,n=Re(9);x("routerLink",e.template_id),u(4),U(e.name),u(),x("matMenuTriggerFor",n),u(5),x("routerLink",e.template_id)}}function jue(t,i){if(t&1&&(s(0,"nav",8),J(1,zue,20,4,"div",10,Fue),l()),t&2){let e=b();u(),ee(e.virtualBoxTemplates)}}var LS=(()=>{class t{route=f(Ye);controllerService=f(We);virtualBoxService=f(pp);cd=f(K);controller;virtualBoxTemplates=[];deleteComponent=Ut(ui);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck(),this.getTemplates()})}getTemplates(){this.virtualBoxService.getTemplates(this.controller).subscribe(e=>{this.virtualBoxTemplates=e.filter(n=>n.template_type==="virtualbox"&&!n.builtin),this.cd.markForCheck()})}deleteTemplate(e){this.deleteComponent().deleteItem(e.name,e.template_id)}onDeleteEvent(){this.getTemplates()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-virtual-box-templates"]],viewQuery:function(n,o){n&1&&tn(o.deleteComponent,ui,5),n&2&&nn()},decls:11,vars:5,consts:[["deleteComponent",""],["menu","matMenu"],[1,"virtualbox-templates"],[1,"virtualbox-templates__header"],["mat-icon-button","",1,"virtualbox-templates__back-btn",3,"routerLink"],[1,"virtualbox-templates__title"],["matTooltip","Add VirtualBox VM template","matTooltipClass","custom-tooltip","mat-icon-button","",1,"virtualbox-templates__add-btn",3,"routerLink"],[1,"virtualbox-templates__content"],[1,"virtualbox-templates__list"],[3,"deleteEvent","controller"],[1,"virtualbox-templates__list-item",3,"routerLink"],[1,"virtualbox-templates__list-icon"],[1,"virtualbox-templates__list-name"],["mat-icon-button","",1,"virtualbox-templates__menu-btn",3,"click","matMenuTriggerFor"],["xPosition","before"],["mat-menu-item","",3,"routerLink"],["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"div",2)(1,"header",3),A(2,Lue,3,1,"button",4),s(3,"h1",5),d(4,"VirtualBox VM templates"),l(),A(5,Bue,3,1,"button",6),l(),s(6,"main",7),A(7,Vue,1,0,"app-empty-templates-list"),A(8,jue,3,0,"nav",8),l()(),s(9,"app-delete-template",9,0),v("deleteEvent",function(){return o.onDeleteEvent()}),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.controller?5:-1),u(2),O(o.virtualBoxTemplates.length?-1:7),u(),O(o.virtualBoxTemplates.length?8:-1),u(),x("controller",o.controller))},dependencies:[Z,at,cn,$,ze,te,se,Ri,Qe,Fn,ot,kn,Gt,Kt,ui,ur],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.virtualbox-templates__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.virtualbox-templates__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.virtualbox-templates__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.virtualbox-templates__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.virtualbox-templates__add-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-primary);transition:all .2s cubic-bezier(.4,0,.2,1)}.virtualbox-templates__add-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent)}.virtualbox-templates__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.virtualbox-templates__list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.virtualbox-templates__list-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;text-decoration:none;color:var(--mat-sys-on-surface)}.virtualbox-templates__list-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.virtualbox-templates__list-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.virtualbox-templates__list-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.virtualbox-templates__list-name[_ngcontent-%COMP%]{flex:1;font-size:16px;font-weight:500}.virtualbox-templates__menu-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);flex-shrink:0}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.virtualbox-templates__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.virtualbox-templates__back-btn[_ngcontent-%COMP%], .virtualbox-templates__add-btn[_ngcontent-%COMP%]{width:44px;height:44px}.virtualbox-templates__title[_ngcontent-%COMP%]{font-size:24px}.virtualbox-templates__content[_ngcontent-%COMP%]{padding:0 16px 16px}.virtualbox-templates__list-item[_ngcontent-%COMP%]{padding:14px 16px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var up=(()=>{class t{httpController;constructor(e){this.httpController=e}getTemplates(e){return this.httpController.get(e,"/templates")}getTemplate(e,n){return this.httpController.get(e,`/templates/${n}`)}addTemplate(e,n){let o=this.prepareTemplate(n);return this.httpController.post(e,"/templates",o)}saveTemplate(e,n){let o=this.prepareTemplate(n);return this.httpController.put(e,`/templates/${n.template_id}`,o)}prepareTemplate(e){return tt(H({},e),{custom_adapters:e.custom_adapters||[]})}getVirtualMachines(e){return this.httpController.get(e,`/computes/${Ai.compute_id}/vmware/vms`)}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function $ue(t,i){if(t&1){let e=j();s(0,"button",5),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function Hue(t,i){if(t&1&&(s(0,"mat-option",10),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e.vmname," ")}}function Uue(t,i){if(t&1){let e=j();s(0,"main",4)(1,"section",6)(2,"div",7)(3,"mat-form-field",8)(4,"mat-label"),d(5,"VM list"),l(),s(6,"mat-select",9),v("selectionChange",function(o){D(e);let r=b();return r.templateName.set(o.value),P(r.selectedVM.set(o.value))}),J(7,Hue,2,2,"mat-option",10,Fe),l()(),s(9,"mat-checkbox",11),v("change",function(o){D(e);let r=b();return P(r.linkedClone.set(o.checked))}),d(10," Use as a linked base VM (experimental) "),l()()(),s(11,"div",12)(12,"button",13),v("click",function(){D(e);let o=b();return P(o.goBack())}),d(13,"Cancel"),l(),s(14,"button",14),v("click",function(){D(e);let o=b();return P(o.addTemplate())}),d(15," Add template "),l()()()}if(t&2){let e=b();u(6),x("value",e.templateName()),u(),ee(e.virtualMachines()),u(2),x("checked",e.linkedClone())}}var BS=(()=>{class t{route=f(Ye);controllerService=f(We);vmwareService=f(up);toasterService=f(fe);templateMocksService=f(Fr);router=f(ut);cd=f(K);controller=me(void 0);virtualMachines=me([]);selectedVM=me(void 0);vmwareTemplate=me({});templateName=ae("");linkedClone=ae(!1);ngOnInit(){this.toasterService.error("VMware VM support is deprecated and will be removed in a future version, please use Qemu VMs instead");let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller.set(n),this.cd.markForCheck(),this.vmwareService.getVirtualMachines(this.controller()).subscribe(o=>{this.virtualMachines.set(o),this.cd.markForCheck(),this.templateMocksService.getVmwareTemplate().subscribe(r=>{this.vmwareTemplate.set(r),this.cd.markForCheck()})})})}goBack(){this.router.navigate(["/controller",this.controller().id,"preferences","vmware","templates"])}addTemplate(){if(this.templateName()&&this.selectedVM()){let e=this.vmwareTemplate();e.name=this.selectedVM().vmname,e.vmx_path=this.selectedVM().vmx_path,e.linked_clone=this.linkedClone(),e.template_id=Ti(),this.vmwareService.addTemplate(this.controller(),e).subscribe({next:()=>{this.goBack()},error:n=>{let o=n.error?.message||n.message||"Failed to add vmware template";this.toasterService.error(o),this.cd.markForCheck()}})}else this.toasterService.error("Fill all required fields")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-add-vmware-template"]],inputs:{templateName:[1,"templateName"],linkedClone:[1,"linkedClone"]},outputs:{templateName:"templateNameChange",linkedClone:"linkedCloneChange"},decls:6,vars:2,consts:[[1,"vmware-add"],[1,"vmware-add__header"],["mat-icon-button","",1,"vmware-add__back-btn"],[1,"vmware-add__title"],[1,"vmware-add__content"],["mat-icon-button","",1,"vmware-add__back-btn",3,"click"],[1,"vmware-add__form-card"],[1,"vmware-add__form"],["appearance","fill",1,"vmware-add__field"],["placeholder","VM list",3,"selectionChange","value"],[3,"value"],[3,"change","checked"],[1,"vmware-add__actions"],["mat-button","",1,"vmware-add__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"vmware-add__submit-btn",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1),A(2,$ue,3,0,"button",2),s(3,"h1",3),d(4,"New VMware VM template"),l()(),A(5,Uue,16,2,"main",4),l()),n&2&&(u(2),O(o.controller()?2:-1),u(3),O(o.vmwareTemplate()?5:-1))},dependencies:[Z,nt,at,te,se,$,le,ze,Dt,Mt,ke,lt,At,St,Ot,Ht,Me],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.vmware-add__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.vmware-add__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.vmware-add__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.vmware-add__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.vmware-add__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.vmware-add__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);padding:24px}.vmware-add__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.vmware-add__field[_ngcontent-%COMP%]{width:100%}.vmware-add__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.vmware-add__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.vmware-add__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.vmware-add__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.vmware-add__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.vmware-add__title[_ngcontent-%COMP%]{font-size:24px}.vmware-add__content[_ngcontent-%COMP%]{padding:0 16px 16px}.vmware-add__form-card[_ngcontent-%COMP%]{padding:16px}.vmware-add__actions[_ngcontent-%COMP%]{flex-direction:column}.vmware-add__cancel-btn[_ngcontent-%COMP%], .vmware-add__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var ng=(()=>{class t{getConsoleTypes(){return["telnet","none"]}getOnCloseoptions(){return[["Power off the VM","power_off"],["Send the shutdown signal (ACPI)","shutdown_signal"],["Save the VM state","save_vm_state"]]}getCategories(){return[["Default","guest"],["Routers","router"],["Switches","switch"],["End devices","guest"],["Security devices","firewall"]]}getNetworkTypes(){return["default","e1000","e1000e","flexible","vlance","vmxnet","vmxnet2","vmxnet3"]}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Gue=(t,i)=>i[1];function Wue(t,i){if(t&1){let e=j();s(0,"button",6),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function que(t,i){if(t&1){let e=j();s(0,"mat-chip",27),v("removed",function(){let o=D(e).$implicit,r=b(3);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",28),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function Xue(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function Que(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Yue(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function Kue(t,i){if(t&1){let e=j();s(0,"form",11)(1,"mat-form-field",16)(2,"mat-label"),d(3,"Template name"),l(),s(4,"input",17),v("input",function(o){D(e);let r=b(2);return P(r.templateName.set(o.target.value))}),l()(),s(5,"mat-form-field",16)(6,"mat-label"),d(7,"Default name format"),l(),s(8,"input",18),v("input",function(o){D(e);let r=b(2);return P(r.defaultName.set(o.target.value))}),l()(),s(9,"div",19)(10,"mat-form-field",20)(11,"mat-label"),d(12,"Symbol"),l(),s(13,"input",21),v("input",function(o){D(e);let r=b(2);return P(r.symbol.set(o.target.value))}),l()(),s(14,"button",22),v("click",function(){D(e);let o=b(2);return P(o.chooseSymbol())}),d(15,"Choose symbol"),l()(),s(16,"mat-form-field",16)(17,"mat-label"),d(18,"Tags"),l(),s(19,"mat-chip-grid",null,0),J(21,que,4,1,"mat-chip",null,Fe),l(),s(23,"input",23),v("matChipInputTokenEnd",function(o){D(e);let r=b(2);return P(r.addTag(o))}),l()(),s(24,"mat-form-field",16)(25,"mat-label"),d(26,"Category"),l(),s(27,"mat-select",24),v("selectionChange",function(o){D(e);let r=b(2);return P(r.category.set(o.value))}),J(28,Xue,2,2,"mat-option",25,Ii),l()(),s(30,"mat-form-field",16)(31,"mat-label"),d(32,"Console type"),l(),s(33,"mat-select",24),v("selectionChange",function(o){D(e);let r=b(2);return P(r.consoleType.set(o.value))}),J(34,Que,2,2,"mat-option",25,Fe),l()(),s(36,"mat-checkbox",26),v("change",function(o){D(e);let r=b(2);return P(r.consoleAutoStart.set(o.checked))}),d(37,"Auto start console"),l(),s(38,"mat-form-field",16)(39,"mat-label"),d(40,"On close"),l(),s(41,"mat-select",24),v("selectionChange",function(o){D(e);let r=b(2);return P(r.onClose.set(o.value))}),J(42,Yue,2,2,"mat-option",25,Gue),l()(),s(44,"mat-checkbox",26),v("change",function(o){D(e);let r=b(2);return P(r.headless.set(o.checked))}),d(45,"Start VM in headless mode"),l(),s(46,"mat-checkbox",26),v("change",function(o){D(e);let r=b(2);return P(r.linkedClone.set(o.checked))}),d(47,"Use as a linked base VM (experimental)"),l()()}if(t&2){let e=Re(20),n=b(2);u(4),x("value",n.templateName()),u(4),x("value",n.defaultName()),u(5),x("value",n.symbol()),u(8),ee(n.tags()),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(4),x("value",n.category()),u(),ee(n.categories),u(5),x("value",n.consoleType()),u(),ee(n.consoleTypes),u(2),x("checked",n.consoleAutoStart()),u(5),x("value",n.onClose()),u(),ee(n.onCloseOptions),u(2),x("checked",n.headless()),u(2),x("checked",n.linkedClone())}}function Zue(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Jue(t,i){if(t&1){let e=j();s(0,"form",11)(1,"mat-form-field",16)(2,"mat-label"),d(3,"Adapters"),l(),s(4,"input",29),v("input",function(o){D(e);let r=b(2);return P(r.adapters.set(+o.target.value))}),l()(),s(5,"mat-form-field",16)(6,"mat-label"),d(7,"First port name"),l(),s(8,"input",30),v("input",function(o){D(e);let r=b(2);return P(r.firstPortName.set(o.target.value))}),l()(),s(9,"mat-form-field",16)(10,"mat-label"),d(11,"Name format"),l(),s(12,"input",31),v("input",function(o){D(e);let r=b(2);return P(r.nameFormat.set(o.target.value))}),l()(),s(13,"mat-form-field",16)(14,"mat-label"),d(15,"Segment size"),l(),s(16,"input",32),v("input",function(o){D(e);let r=b(2);return P(r.segmentSize.set(+o.target.value))}),l()(),s(17,"mat-form-field",16)(18,"mat-label"),d(19,"Type"),l(),s(20,"mat-select",24),v("selectionChange",function(o){D(e);let r=b(2);return P(r.networkType.set(o.value))}),J(21,Zue,2,2,"mat-option",25,Fe),l()(),s(23,"button",33),v("click",function(){D(e);let o=b(2);return P(o.openCustomAdaptersDialog())}),d(24," Configure custom adapters "),l(),s(25,"mat-checkbox",26),v("change",function(o){D(e);let r=b(2);return P(r.useAnyAdapter.set(o.checked))}),d(26,"Allow GNS3 to override non custom VMware adapter"),l()()}if(t&2){let e=b(2);u(4),x("value",e.adapters()),u(4),x("value",e.firstPortName()),u(4),x("value",e.nameFormat()),u(4),x("value",e.segmentSize()),u(4),x("value",e.networkType()),u(),ee(e.networkTypes),u(4),x("checked",e.useAnyAdapter())}}function ehe(t,i){if(t&1){let e=j();s(0,"div",12)(1,"mat-form-field",34)(2,"mat-label"),d(3,"Usage notes"),l(),s(4,"textarea",35),v("input",function(o){D(e);let r=b(2);return P(r.usage.set(o.target.value))}),l()()()}if(t&2){let e=b(2);u(4),x("value",e.usage())}}function the(t,i){if(t&1){let e=j();s(0,"main",5)(1,"section",7)(2,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("general"))}),s(3,"h3",9),d(4,"General settings"),l(),s(5,"mat-icon",10),d(6),l()(),A(7,Kue,48,11,"form",11),l(),s(8,"section",7)(9,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("network"))}),s(10,"h3",9),d(11,"Network"),l(),s(12,"mat-icon",10),d(13),l()(),A(14,Jue,27,6,"form",11),l(),s(15,"section",7)(16,"div",8),v("click",function(){D(e);let o=b();return P(o.toggleSection("usage"))}),s(17,"h3",9),d(18,"Usage"),l(),s(19,"mat-icon",10),d(20),l()(),A(21,ehe,5,1,"div",12),l(),s(22,"div",13)(23,"button",14),v("click",function(){D(e);let o=b();return P(o.goBack())}),d(24,"Cancel"),l(),s(25,"button",15),v("click",function(){D(e);let o=b();return P(o.onSave())}),d(26," Save "),l()()()}if(t&2){let e=b();u(6),U(e.generalSettingsExpanded?"expand_less":"expand_more"),u(),O(e.generalSettingsExpanded?7:-1),u(6),U(e.networkExpanded?"expand_less":"expand_more"),u(),O(e.networkExpanded?14:-1),u(6),U(e.usageExpanded?"expand_less":"expand_more"),u(),O(e.usageExpanded?21:-1)}}var VS=(()=>{class t{route=f(Ye);controllerService=f(We);vmwareService=f(up);toasterService=f(fe);vmwareConfigurationService=f(ng);router=f(ut);cd=f(K);dialog=f(Je);dialogConfig=f(Ji);controller;vmwareTemplate;displayedColumns=["adapter_number","port_name","adapter_type","mac_address","actions"];separatorKeysCodes=[13,188];consoleTypes=[];categories=[];onCloseOptions=[];networkTypes=[];generalSettingsExpanded=!1;networkExpanded=!1;usageExpanded=!1;templateName=ae("");defaultName=ae("");symbol=ae("");category=ae("");consoleType=ae("");consoleAutoStart=ae(!1);onClose=ae("");headless=ae(!1);linkedClone=ae(!1);adapters=ae(0);firstPortName=ae("");nameFormat=ae("");segmentSize=ae(0);networkType=ae("");useAnyAdapter=ae(!1);usage=ae("");tags=ae([]);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.getConfiguration(),this.vmwareService.getTemplate(this.controller,n).subscribe(r=>{this.vmwareTemplate=r,this.vmwareTemplate.tags||(this.vmwareTemplate.tags=[]),this.initFormFromTemplate(),this.cd.markForCheck()})})}initFormFromTemplate(){this.templateName.set(this.vmwareTemplate.name||""),this.defaultName.set(this.vmwareTemplate.default_name_format||""),this.symbol.set(this.vmwareTemplate.symbol||""),this.category.set(this.vmwareTemplate.category||""),this.consoleType.set(this.vmwareTemplate.console_type||""),this.consoleAutoStart.set(this.vmwareTemplate.console_auto_start||!1),this.onClose.set(this.vmwareTemplate.on_close||""),this.headless.set(this.vmwareTemplate.headless||!1),this.linkedClone.set(this.vmwareTemplate.linked_clone||!1),this.adapters.set(this.vmwareTemplate.adapters||0),this.firstPortName.set(this.vmwareTemplate.first_port_name||""),this.nameFormat.set(this.vmwareTemplate.port_name_format||""),this.segmentSize.set(this.vmwareTemplate.port_segment_size||0),this.networkType.set(this.vmwareTemplate.adapter_type||""),this.useAnyAdapter.set(this.vmwareTemplate.use_any_adapter||!1),this.usage.set(this.vmwareTemplate.usage||""),this.tags.set(this.vmwareTemplate.tags||[])}getConfiguration(){this.consoleTypes=this.vmwareConfigurationService.getConsoleTypes(),this.categories=this.vmwareConfigurationService.getCategories(),this.onCloseOptions=this.vmwareConfigurationService.getOnCloseoptions(),this.networkTypes=this.vmwareConfigurationService.getNetworkTypes()}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","vmware","templates"])}onSave(){if(!this.templateName()||!this.defaultName()||!this.symbol()){let e=[];this.templateName()||e.push("Template name"),this.defaultName()||e.push("Default name format"),this.symbol()||e.push("Symbol"),this.toasterService.error(`Missing required fields: ${e.join(", ")}`);return}this.vmwareTemplate.name=this.templateName(),this.vmwareTemplate.default_name_format=this.defaultName(),this.vmwareTemplate.symbol=this.symbol(),this.vmwareTemplate.category=this.category(),this.vmwareTemplate.console_type=this.consoleType(),this.vmwareTemplate.console_auto_start=this.consoleAutoStart(),this.vmwareTemplate.on_close=this.onClose(),this.vmwareTemplate.headless=this.headless(),this.vmwareTemplate.linked_clone=this.linkedClone(),this.vmwareTemplate.adapters=this.adapters(),this.vmwareTemplate.first_port_name=this.firstPortName(),this.vmwareTemplate.port_name_format=this.nameFormat(),this.vmwareTemplate.port_segment_size=this.segmentSize(),this.vmwareTemplate.adapter_type=this.networkType(),this.vmwareTemplate.use_any_adapter=this.useAnyAdapter(),this.vmwareTemplate.usage=this.usage(),this.vmwareTemplate.tags=this.tags(),this.vmwareService.saveTemplate(this.controller,this.vmwareTemplate).subscribe({next:e=>{this.toasterService.success("Changes saved"),this.vmwareTemplate=e,this.initFormFromTemplate(),this.cd.markForCheck()},error:e=>{this.toasterService.error("Failed to save template: "+(e.message||"Unknown error"))}})}openCustomAdaptersDialog(){let e=this.nameFormat()||"Ethernet{0}",n=this.segmentSize()||0,o=this.networkType()||"e1000",r=this.adapters(),a=this.vmwareTemplate.custom_adapters||[],c=[];for(let p=0;p<r;p++){let h=a.find(g=>g.adapter_number===p);if(h)c.push({adapter_number:h.adapter_number,adapter_type:h.adapter_type,port_name:h.port_name,mac_address:h.mac_address||""});else{let g;if(n>0){let M=Math.floor(p/n),C=p%n;g=e.replace("{0}",String(M*n+C))}else g=e.replace("{0}",String(p));c.push({adapter_number:p,adapter_type:o,port_name:g,mac_address:""})}}this.dialog.open(Ms,{panelClass:"custom-adapters-dialog-panel",data:{adapters:c,networkTypes:this.networkTypes,portNameFormat:e,portSegmentSize:n,defaultAdapterType:o,currentAdapters:r}}).afterClosed().subscribe(p=>{p&&(this.vmwareTemplate.custom_adapters=p.adapters,p.requiredAdapters!==void 0&&this.adapters.set(p.requiredAdapters),this.cd.markForCheck())})}chooseSymbol(){let e=this.dialogConfig.openConfig("templateSymbol",{autoFocus:!1,disableClose:!1,data:{controller:this.controller,symbol:this.symbol()}});this.dialog.open(pr,e).afterClosed().subscribe(o=>{o&&this.symbol.set(o)})}addTag(e){let n=(e.value||"").trim(),o=this.tags();n&&this.tags.set([...o,n]),e.chipInput&&e.chipInput.clear()}removeTag(e){let n=this.tags(),o=n.indexOf(e);if(o>=0){let r=[...n];r.splice(o,1),this.tags.set(r)}}toggleSection(e){switch(e){case"general":this.generalSettingsExpanded=!this.generalSettingsExpanded;break;case"network":this.networkExpanded=!this.networkExpanded;break;case"usage":this.usageExpanded=!this.usageExpanded;break}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-vmware-template-details"]],inputs:{templateName:[1,"templateName"],defaultName:[1,"defaultName"],symbol:[1,"symbol"],category:[1,"category"],consoleType:[1,"consoleType"],consoleAutoStart:[1,"consoleAutoStart"],onClose:[1,"onClose"],headless:[1,"headless"],linkedClone:[1,"linkedClone"],adapters:[1,"adapters"],firstPortName:[1,"firstPortName"],nameFormat:[1,"nameFormat"],segmentSize:[1,"segmentSize"],networkType:[1,"networkType"],useAnyAdapter:[1,"useAnyAdapter"],usage:[1,"usage"],tags:[1,"tags"]},outputs:{templateName:"templateNameChange",defaultName:"defaultNameChange",symbol:"symbolChange",category:"categoryChange",consoleType:"consoleTypeChange",consoleAutoStart:"consoleAutoStartChange",onClose:"onCloseChange",headless:"headlessChange",linkedClone:"linkedCloneChange",adapters:"adaptersChange",firstPortName:"firstPortNameChange",nameFormat:"nameFormatChange",segmentSize:"segmentSizeChange",networkType:"networkTypeChange",useAnyAdapter:"useAnyAdapterChange",usage:"usageChange",tags:"tagsChange"},decls:6,vars:2,consts:[["chipList",""],[1,"vmware-template-details"],[1,"vmware-template-details__header"],["mat-icon-button","",1,"vmware-template-details__back-btn"],[1,"vmware-template-details__title"],[1,"vmware-template-details__content"],["mat-icon-button","",1,"vmware-template-details__back-btn",3,"click"],[1,"vmware-template-details__form-card"],[1,"vmware-template-details__section-header",3,"click"],[1,"vmware-template-details__section-title"],[1,"vmware-template-details__expand-icon"],[1,"vmware-template-details__form"],[1,"preferences__usage-form"],[1,"vmware-template-details__actions"],["mat-button","",1,"vmware-template-details__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"vmware-template-details__save-btn",3,"click"],["appearance","fill",1,"vmware-template-details__field"],["matInput","","type","text","placeholder","Template name",3,"input","value"],["matInput","","type","text","placeholder","Default name format",3,"input","value"],[1,"vmware-template-details__symbol-row"],["appearance","fill",1,"vmware-template-details__field","vmware-template-details__field--flex"],["matInput","","type","text","placeholder","Symbol",3,"input","value"],["mat-button","",1,"vmware-template-details__symbol-btn",3,"click"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],[3,"selectionChange","value"],[3,"value"],[3,"change","checked"],[3,"removed"],["matChipRemove",""],["matInput","","type","number","min","0","placeholder","Adapters",3,"input","value"],["matInput","","type","text","placeholder","First port name",3,"input","value"],["matInput","","type","text","placeholder","Name format",3,"input","value"],["matInput","","type","number","min","0","placeholder","Segment size",3,"input","value"],["mat-button","",1,"vmware-template-details__config-btn",3,"click"],["appearance","fill",1,"preferences__usage-field--full"],["matInput","","type","text",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"header",2),A(2,Wue,3,0,"button",3),s(3,"h1",4),d(4,"VMware VM template configuration"),l()(),A(5,the,27,6,"main",5),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.vmwareTemplate?5:-1))},dependencies:[Z,nt,Ue,He,Ci,at,te,se,$,le,ze,Me,ke,lt,we,Te,Mt,At,St,ti,zn,mi,pi,di,Ot,Ht],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.vmware-template-details__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.vmware-template-details__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.vmware-template-details__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.vmware-template-details__title[_ngcontent-%COMP%]{flex:1;font-size:28px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.vmware-template-details__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.vmware-template-details--hidden[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.vmware-template-details__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);margin-bottom:16px}.vmware-template-details__form[_ngcontent-%COMP%]{padding:16px 24px 24px;display:flex;flex-direction:column;gap:16px}.vmware-template-details__field[_ngcontent-%COMP%]{width:100%}.vmware-template-details__field--flex[_ngcontent-%COMP%]{flex:1}.vmware-template-details__field--full[_ngcontent-%COMP%]{width:100%}.vmware-template-details__section-title[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.vmware-template-details__section-header[_ngcontent-%COMP%]{padding:16px 24px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color .2s ease;border-bottom:1px solid color-mix(in srgb,var(--mat-sys-outline) 30%,transparent)}.vmware-template-details__section-header[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.vmware-template-details__expand-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);transition:transform .2s ease}.vmware-template-details__symbol-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.vmware-template-details__symbol-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.vmware-template-details__config-btn[_ngcontent-%COMP%]{margin-top:8px}.vmware-template-details__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.vmware-template-details__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.vmware-template-details__save-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.vmware-template-details__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.vmware-template-details__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.vmware-template-details__title[_ngcontent-%COMP%]{font-size:22px}.vmware-template-details__content[_ngcontent-%COMP%]{padding:0 16px 16px}.vmware-template-details__form[_ngcontent-%COMP%]{padding:16px}.vmware-template-details__section-header[_ngcontent-%COMP%]{padding:12px 16px}.vmware-template-details__symbol-row[_ngcontent-%COMP%], .vmware-template-details__actions[_ngcontent-%COMP%]{flex-direction:column}.vmware-template-details__cancel-btn[_ngcontent-%COMP%], .vmware-template-details__save-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var nhe=(t,i)=>i.template_id;function ihe(t,i){if(t&1&&(s(0,"button",4)(1,"mat-icon"),d(2,"arrow_back"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences")}}function ohe(t,i){if(t&1&&(s(0,"button",6)(1,"mat-icon"),d(2,"add_circle_outline"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences/vmware/addtemplate")}}function rhe(t,i){t&1&&F(0,"app-empty-templates-list")}function ahe(t,i){if(t&1){let e=j();s(0,"div",10)(1,"mat-icon",11),d(2,"memory"),l(),s(3,"span",12),d(4),l(),s(5,"button",13),v("click",function(o){return o.stopPropagation()}),s(6,"mat-icon"),d(7,"more_vert"),l()(),s(8,"mat-menu",14,1)(10,"a",15)(11,"mat-icon"),d(12,"edit"),l(),s(13,"span"),d(14,"Edit"),l()(),s(15,"button",16),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.deleteTemplate(o))}),s(16,"mat-icon"),d(17,"delete"),l(),s(18,"span"),d(19,"Delete"),l()()()()}if(t&2){let e=i.$implicit,n=Re(9);x("routerLink",e.template_id),u(4),U(e.name),u(),x("matMenuTriggerFor",n),u(5),x("routerLink",e.template_id)}}function she(t,i){if(t&1&&(s(0,"nav",8),J(1,ahe,20,4,"div",10,nhe),l()),t&2){let e=b();u(),ee(e.vmwareTemplates)}}var zS=(()=>{class t{route=f(Ye);controllerService=f(We);vmwareService=f(up);cd=f(K);controller;vmwareTemplates=[];deleteComponent=Ut(ui);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck(),this.getTemplates()})}getTemplates(){this.vmwareService.getTemplates(this.controller).subscribe(e=>{this.vmwareTemplates=e.filter(n=>n.template_type==="vmware"&&!n.builtin),this.cd.markForCheck()})}deleteTemplate(e){this.deleteComponent().deleteItem(e.name,e.template_id)}onDeleteEvent(){this.getTemplates()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-vmware-templates"]],viewQuery:function(n,o){n&1&&tn(o.deleteComponent,ui,5),n&2&&nn()},decls:11,vars:5,consts:[["deleteComponent",""],["menu","matMenu"],[1,"vmware-templates"],[1,"vmware-templates__header"],["mat-icon-button","",1,"vmware-templates__back-btn",3,"routerLink"],[1,"vmware-templates__title"],["matTooltip","Add VMware template","matTooltipClass","custom-tooltip","mat-icon-button","",1,"vmware-templates__add-btn",3,"routerLink"],[1,"vmware-templates__content"],[1,"vmware-templates__list"],[3,"deleteEvent","controller"],[1,"vmware-templates__list-item",3,"routerLink"],[1,"vmware-templates__list-icon"],[1,"vmware-templates__list-name"],["mat-icon-button","",1,"vmware-templates__menu-btn",3,"click","matMenuTriggerFor"],["xPosition","before"],["mat-menu-item","",3,"routerLink"],["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"div",2)(1,"header",3),A(2,ihe,3,1,"button",4),s(3,"h1",5),d(4,"VMware VM templates"),l(),A(5,ohe,3,1,"button",6),l(),s(6,"main",7),A(7,rhe,1,0,"app-empty-templates-list"),A(8,she,3,0,"nav",8),l()(),s(9,"app-delete-template",9,0),v("deleteEvent",function(){return o.onDeleteEvent()}),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.controller?5:-1),u(2),O(o.vmwareTemplates.length?-1:7),u(),O(o.vmwareTemplates.length?8:-1),u(),x("controller",o.controller))},dependencies:[Z,at,cn,$,ze,te,se,Ri,Qe,Fn,ot,kn,Gt,Kt,ui,ur],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.vmware-templates__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.vmware-templates__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.vmware-templates__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.vmware-templates__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.vmware-templates__add-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-primary);transition:all .2s cubic-bezier(.4,0,.2,1)}.vmware-templates__add-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent)}.vmware-templates__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.vmware-templates__list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.vmware-templates__list-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;text-decoration:none;color:var(--mat-sys-on-surface)}.vmware-templates__list-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.vmware-templates__list-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.vmware-templates__list-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.vmware-templates__list-name[_ngcontent-%COMP%]{flex:1;font-size:16px;font-weight:500}.vmware-templates__menu-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);flex-shrink:0}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.vmware-templates__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.vmware-templates__back-btn[_ngcontent-%COMP%], .vmware-templates__add-btn[_ngcontent-%COMP%]{width:44px;height:44px}.vmware-templates__title[_ngcontent-%COMP%]{font-size:24px}.vmware-templates__content[_ngcontent-%COMP%]{padding:0 16px 16px}.vmware-templates__list-item[_ngcontent-%COMP%]{padding:14px 16px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var hp=(()=>{class t{httpController;constructor(e){this.httpController=e}getTemplates(e){return this.httpController.get(e,"/templates")}getTemplate(e,n){return this.httpController.get(e,`/templates/${n}`)}addTemplate(e,n){return this.httpController.post(e,"/templates",n)}saveTemplate(e,n){return this.httpController.put(e,`/templates/${n.template_id}`,n)}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function lhe(t,i){if(t&1){let e=j();s(0,"button",14),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}var jS=(()=>{class t{route=f(Ye);controllerService=f(We);vpcsService=f(hp);router=f(ut);toasterService=f(fe);templateMocksService=f(Fr);formBuilder=f(jt);computeService=f(Lo);cd=f(K);controller;templateName="";templateNameForm;isLocalComputerChosen=!0;constructor(){this.templateNameForm=this.formBuilder.group({templateName:new re(null,[be.required])})}ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck()})}setControllerType(e){e==="local"&&(this.isLocalComputerChosen=!0)}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","vpcs","templates"])}addTemplate(){if(this.templateNameForm.invalid)this.toasterService.error("Fill all required fields");else{this.templateName=this.templateNameForm.get("templateName").value;let e;this.templateMocksService.getVpcsTemplate().subscribe(n=>{e=n}),e.template_id=Ti(),e.name=this.templateName,e.compute_id="local",this.vpcsService.addTemplate(this.controller,e).subscribe({next:()=>{this.goBack()},error:n=>{let o=n.error?.message||n.message||"Failed to add vpcs template";this.toasterService.error(o),this.cd.markForCheck()}})}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-add-vpcs-template"]],decls:20,vars:3,consts:[[1,"vpcs-add"],[1,"vpcs-add__header"],["mat-icon-button","",1,"vpcs-add__back-btn"],[1,"vpcs-add__title"],[1,"vpcs-add__content"],[1,"vpcs-add__form-card"],[1,"vpcs-add__radio-group"],["value","1",1,"vpcs-add__radio",3,"click","checked"],[1,"vpcs-add__form",3,"formGroup"],["appearance","fill",1,"vpcs-add__field"],["matInput","","formControlName","templateName","type","text","placeholder","Template name"],[1,"vpcs-add__actions"],["mat-button","",1,"vpcs-add__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"vpcs-add__submit-btn",3,"click"],["mat-icon-button","",1,"vpcs-add__back-btn",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1),A(2,lhe,3,0,"button",2),s(3,"h1",3),d(4,"New VPCS node template"),l()(),s(5,"main",4)(6,"section",5)(7,"mat-radio-group",6)(8,"mat-radio-button",7),v("click",function(){return o.setControllerType("local")}),d(9," Run the VPCS node locally "),l()(),s(10,"form",8)(11,"mat-form-field",9)(12,"mat-label"),d(13,"Template name"),l(),F(14,"input",10),l()()(),s(15,"div",11)(16,"button",12),v("click",function(){return o.goBack()}),d(17,"Cancel"),l(),s(18,"button",13),v("click",function(){return o.addTemplate()}),d(19," Add template "),l()()()()),n&2&&(u(2),O(o.controller?2:-1),u(6),x("checked",!0),u(2),x("formGroup",o.templateNameForm))},dependencies:[Z,nt,Ue,vt,mt,He,ct,pt,bt,at,te,se,$,le,ze,Dt,go,Io,ko,Me,ke,lt,we,Te],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.vpcs-add__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.vpcs-add__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.vpcs-add__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.vpcs-add__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.vpcs-add__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.vpcs-add__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);padding:24px}.vpcs-add__radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.vpcs-add__radio[_ngcontent-%COMP%]{font-size:16px}.vpcs-add__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.vpcs-add__field[_ngcontent-%COMP%]{width:100%}.vpcs-add__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.vpcs-add__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.vpcs-add__submit-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.vpcs-add__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.vpcs-add__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.vpcs-add__title[_ngcontent-%COMP%]{font-size:24px}.vpcs-add__content[_ngcontent-%COMP%]{padding:0 16px 16px}.vpcs-add__form-card[_ngcontent-%COMP%]{padding:16px}.vpcs-add__actions[_ngcontent-%COMP%]{flex-direction:column}.vpcs-add__cancel-btn[_ngcontent-%COMP%], .vpcs-add__submit-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var fp=(()=>{class t{getConsoleTypes(){return["telnet","none"]}getCategories(){return[["Default","guest"],["Routers","router"],["Switches","switch"],["End devices","guest"],["Security devices","firewall"]]}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function che(t,i){if(t&1){let e=j();s(0,"button",6),v("click",function(){D(e);let o=b();return P(o.goBack())}),s(1,"mat-icon"),d(2,"arrow_back"),l()()}}function dhe(t,i){if(t&1){let e=j();s(0,"mat-chip",28),v("removed",function(){let o=D(e).$implicit,r=b(2);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",29),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function mhe(t,i){if(t&1&&(s(0,"mat-option",20),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function phe(t,i){if(t&1&&(s(0,"mat-option",20),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function uhe(t,i){if(t&1){let e=j();s(0,"main",5)(1,"section",7)(2,"h3",8),d(3,"General settings"),l(),s(4,"form",9)(5,"mat-form-field",10)(6,"mat-label"),d(7,"Template name"),l(),s(8,"input",11),v("input",function(o){D(e);let r=b();return P(r.templateName.set(o.target.value))}),l()(),s(9,"mat-form-field",10)(10,"mat-label"),d(11,"Default name format"),l(),s(12,"input",12),v("input",function(o){D(e);let r=b();return P(r.defaultName.set(o.target.value))}),l()(),s(13,"mat-form-field",10)(14,"mat-label"),d(15,"Base script file"),l(),s(16,"input",13),v("input",function(o){D(e);let r=b();return P(r.scriptFile.set(o.target.value))}),l()(),s(17,"div",14)(18,"mat-form-field",15)(19,"mat-label"),d(20,"Symbol"),l(),s(21,"input",16),v("input",function(o){D(e);let r=b();return P(r.symbol.set(o.target.value))}),l()(),s(22,"button",17),v("click",function(){D(e);let o=b();return P(o.chooseSymbol())}),d(23,"Choose symbol"),l()(),s(24,"mat-form-field",10)(25,"mat-label"),d(26,"Tags"),l(),s(27,"mat-chip-grid",null,0),J(29,dhe,4,1,"mat-chip",null,Fe),l(),s(31,"input",18),v("matChipInputTokenEnd",function(o){D(e);let r=b();return P(r.addTag(o))}),l()(),s(32,"mat-form-field",10)(33,"mat-label"),d(34,"Category"),l(),s(35,"mat-select",19),v("selectionChange",function(o){D(e);let r=b();return P(r.category.set(o.value))}),J(36,mhe,2,2,"mat-option",20,Ii),l()(),s(38,"mat-form-field",10)(39,"mat-label"),d(40,"Console type"),l(),s(41,"mat-select",19),v("selectionChange",function(o){D(e);let r=b();return P(r.consoleType.set(o.value))}),J(42,phe,2,2,"mat-option",20,Fe),l()(),s(44,"mat-checkbox",21),v("change",function(o){D(e);let r=b();return P(r.consoleAutoStart.set(o.checked))}),d(45,"Auto start console"),l()()(),s(46,"section",7)(47,"h3",8),d(48,"Usage"),l(),s(49,"div",22)(50,"mat-form-field",23)(51,"mat-label"),d(52,"Usage notes"),l(),s(53,"textarea",24),v("input",function(o){D(e);let r=b();return P(r.usage.set(o.target.value))}),l()()()(),s(54,"div",25)(55,"button",26),v("click",function(){D(e);let o=b();return P(o.goBack())}),d(56,"Cancel"),l(),s(57,"button",27),v("click",function(){D(e);let o=b();return P(o.onSave())}),d(58,"Save"),l()()()}if(t&2){let e=Re(28),n=b();u(8),x("value",n.templateName()),u(4),x("value",n.defaultName()),u(4),x("value",n.scriptFile()),u(5),x("value",n.symbol()),u(8),ee(n.tags()),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(4),x("value",n.category()),u(),ee(n.categories),u(5),x("value",n.consoleType()),u(),ee(n.consoleTypes),u(2),x("checked",n.consoleAutoStart()),u(9),x("value",n.usage())}}var $S=(()=>{class t{route=f(Ye);controllerService=f(We);vpcsService=f(hp);toasterService=f(fe);vpcsConfigurationService=f(fp);router=f(ut);cd=f(K);dialog=f(Je);dialogConfig=f(Ji);controller;vpcsTemplate;separatorKeysCodes=[13,188];consoleTypes=[];categories=[];templateName=ae("");defaultName=ae("");scriptFile=ae("");symbol=ae("");category=ae("");consoleType=ae("");consoleAutoStart=ae(!1);tags=ae([]);usage=ae("");ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id"),n=this.route.snapshot.paramMap.get("template_id");this.controllerService.get(parseInt(e,10)).then(o=>{this.controller=o,this.cd.markForCheck(),this.getConfiguration(),this.vpcsService.getTemplate(this.controller,n).subscribe(r=>{this.vpcsTemplate=r,this.vpcsTemplate.tags||(this.vpcsTemplate.tags=[]),this.initFormFromTemplate(),this.cd.markForCheck()})})}initFormFromTemplate(){this.templateName.set(this.vpcsTemplate.name||""),this.defaultName.set(this.vpcsTemplate.default_name_format||""),this.scriptFile.set(this.vpcsTemplate.base_script_file||""),this.symbol.set(this.vpcsTemplate.symbol||""),this.category.set(this.vpcsTemplate.category||""),this.consoleType.set(this.vpcsTemplate.console_type||""),this.consoleAutoStart.set(this.vpcsTemplate.console_auto_start||!1),this.tags.set(this.vpcsTemplate.tags||[]),this.usage.set(this.vpcsTemplate.usage||"")}getConfiguration(){this.consoleTypes=this.vpcsConfigurationService.getConsoleTypes(),this.categories=this.vpcsConfigurationService.getCategories()}goBack(){this.router.navigate(["/controller",this.controller.id,"preferences","vpcs","templates"])}onSave(){if(!this.templateName()||!this.defaultName()||!this.scriptFile()||!this.symbol()){let e=[];this.templateName()||e.push("Template name"),this.defaultName()||e.push("Default name format"),this.scriptFile()||e.push("Base script file"),this.symbol()||e.push("Symbol"),this.toasterService.error(`Missing required fields: ${e.join(", ")}`);return}this.vpcsTemplate.name=this.templateName(),this.vpcsTemplate.default_name_format=this.defaultName(),this.vpcsTemplate.base_script_file=this.scriptFile(),this.vpcsTemplate.symbol=this.symbol(),this.vpcsTemplate.category=this.category(),this.vpcsTemplate.console_type=this.consoleType(),this.vpcsTemplate.console_auto_start=this.consoleAutoStart(),this.vpcsTemplate.tags=this.tags(),this.vpcsTemplate.usage=this.usage(),this.vpcsService.saveTemplate(this.controller,this.vpcsTemplate).subscribe(e=>{this.toasterService.success("Changes saved")})}chooseSymbol(){let e=this.dialogConfig.openConfig("templateSymbol",{autoFocus:!1,disableClose:!1,data:{controller:this.controller,symbol:this.symbol()}});this.dialog.open(pr,e).afterClosed().subscribe(o=>{o&&this.symbol.set(o)})}addTag(e){let n=(e.value||"").trim(),o=this.tags();n&&this.tags.set([...o,n]),e.chipInput&&e.chipInput.clear()}removeTag(e){let n=this.tags(),o=n.indexOf(e);if(o>=0){let r=[...n];r.splice(o,1),this.tags.set(r)}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-vpcs-template-details"]],inputs:{templateName:[1,"templateName"],defaultName:[1,"defaultName"],scriptFile:[1,"scriptFile"],symbol:[1,"symbol"],category:[1,"category"],consoleType:[1,"consoleType"],consoleAutoStart:[1,"consoleAutoStart"],tags:[1,"tags"],usage:[1,"usage"]},outputs:{templateName:"templateNameChange",defaultName:"defaultNameChange",scriptFile:"scriptFileChange",symbol:"symbolChange",category:"categoryChange",consoleType:"consoleTypeChange",consoleAutoStart:"consoleAutoStartChange",tags:"tagsChange",usage:"usageChange"},decls:6,vars:2,consts:[["chipList",""],[1,"vpcs-template-details"],[1,"vpcs-template-details__header"],["mat-icon-button","",1,"vpcs-template-details__back-btn"],[1,"vpcs-template-details__title"],[1,"vpcs-template-details__content"],["mat-icon-button","",1,"vpcs-template-details__back-btn",3,"click"],[1,"vpcs-template-details__form-card"],[1,"vpcs-template-details__section-title"],[1,"vpcs-template-details__form"],["appearance","fill",1,"vpcs-template-details__field"],["matInput","","type","text","placeholder","Template name",3,"input","value"],["matInput","","type","text","placeholder","Default name format",3,"input","value"],["matInput","","type","text","placeholder","Base script file",3,"input","value"],[1,"vpcs-template-details__symbol-row"],["appearance","fill",1,"vpcs-template-details__field","vpcs-template-details__field--flex"],["matInput","","type","text","placeholder","Symbol",3,"input","value"],["mat-button","",1,"vpcs-template-details__symbol-btn",3,"click"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],[3,"selectionChange","value"],[3,"value"],[3,"change","checked"],[1,"preferences__usage-form"],["appearance","fill",1,"preferences__usage-field--full"],["matInput","","type","text",3,"input","value"],[1,"vpcs-template-details__actions"],["mat-button","",1,"vpcs-template-details__cancel-btn",3,"click"],["mat-raised-button","","color","primary",1,"vpcs-template-details__save-btn",3,"click"],[3,"removed"],["matChipRemove",""]],template:function(n,o){n&1&&(s(0,"div",1)(1,"header",2),A(2,che,3,0,"button",3),s(3,"h1",4),d(4,"VPCS node template configuration"),l()(),A(5,uhe,59,10,"main",5),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.vpcsTemplate?5:-1))},dependencies:[Z,nt,Ue,He,Ci,at,te,se,$,le,ze,Dt,Me,ke,lt,we,Te,Mt,At,St,Ot,Ht,ti,zn,mi,pi,di],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.vpcs-template-details__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.vpcs-template-details__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.vpcs-template-details__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.vpcs-template-details__title[_ngcontent-%COMP%]{flex:1;font-size:28px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.vpcs-template-details__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.vpcs-template-details--hidden[_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.vpcs-template-details__form-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);margin-bottom:16px}.vpcs-template-details__form[_ngcontent-%COMP%]{padding:24px;display:flex;flex-direction:column;gap:16px}.vpcs-template-details__field[_ngcontent-%COMP%]{width:100%}.vpcs-template-details__field--flex[_ngcontent-%COMP%]{flex:1}.vpcs-template-details__section-title[_ngcontent-%COMP%]{padding:16px 24px;margin:0;font-size:16px;font-weight:500;color:var(--mat-sys-on-surface-variant);border-bottom:1px solid color-mix(in srgb,var(--mat-sys-outline) 30%,transparent)}.vpcs-template-details__symbol-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.vpcs-template-details__symbol-btn[_ngcontent-%COMP%]{margin-top:4px;height:48px}.vpcs-template-details__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.vpcs-template-details__cancel-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none}.vpcs-template-details__save-btn[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.vpcs-template-details__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.vpcs-template-details__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.vpcs-template-details__title[_ngcontent-%COMP%]{font-size:22px}.vpcs-template-details__content[_ngcontent-%COMP%]{padding:0 16px 16px}.vpcs-template-details__form[_ngcontent-%COMP%]{padding:16px}.vpcs-template-details__symbol-row[_ngcontent-%COMP%], .vpcs-template-details__actions[_ngcontent-%COMP%]{flex-direction:column}.vpcs-template-details__cancel-btn[_ngcontent-%COMP%], .vpcs-template-details__save-btn[_ngcontent-%COMP%]{width:100%;height:44px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var hhe=(t,i)=>i.template_id;function fhe(t,i){if(t&1&&(s(0,"button",4)(1,"mat-icon"),d(2,"arrow_back"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences")}}function ghe(t,i){if(t&1&&(s(0,"button",6)(1,"mat-icon"),d(2,"add_circle_outline"),l()()),t&2){let e=b();x("routerLink","/controller/"+e.controller.id+"/preferences/vpcs/addtemplate")}}function _he(t,i){t&1&&F(0,"app-empty-templates-list")}function vhe(t,i){if(t&1){let e=j();s(0,"div",10)(1,"mat-icon",11),d(2,"computer"),l(),s(3,"span",12),d(4),l(),s(5,"button",13),v("click",function(o){return o.stopPropagation()}),s(6,"mat-icon"),d(7,"more_vert"),l()(),s(8,"mat-menu",14,1)(10,"a",15)(11,"mat-icon"),d(12,"edit"),l(),s(13,"span"),d(14,"Edit"),l()(),s(15,"button",16),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.deleteTemplate(o))}),s(16,"mat-icon"),d(17,"delete"),l(),s(18,"span"),d(19,"Delete"),l()()()()}if(t&2){let e=i.$implicit,n=Re(9);x("routerLink",e.template_id),u(4),U(e.name),u(),x("matMenuTriggerFor",n),u(5),x("routerLink",e.template_id)}}function bhe(t,i){if(t&1&&(s(0,"nav",8),J(1,vhe,20,4,"div",10,hhe),l()),t&2){let e=b();u(),ee(e.vpcsTemplates)}}var HS=(()=>{class t{route=f(Ye);controllerService=f(We);vpcsService=f(hp);cd=f(K);controller;vpcsTemplates=[];deleteComponent=Ut(ui);ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck(),this.getTemplates()})}getTemplates(){this.vpcsService.getTemplates(this.controller).subscribe(e=>{this.vpcsTemplates=e.filter(n=>n.template_type==="vpcs"&&!n.builtin),this.cd.markForCheck()})}deleteTemplate(e){this.deleteComponent().deleteItem(e.name,e.template_id)}onDeleteEvent(){this.getTemplates()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-vpcs-templates"]],viewQuery:function(n,o){n&1&&tn(o.deleteComponent,ui,5),n&2&&nn()},decls:11,vars:5,consts:[["deleteComponent",""],["menu","matMenu"],[1,"vpcs-templates"],[1,"vpcs-templates__header"],["mat-icon-button","",1,"vpcs-templates__back-btn",3,"routerLink"],[1,"vpcs-templates__title"],["matTooltip","Add VPCS template","matTooltipClass","custom-tooltip","mat-icon-button","",1,"vpcs-templates__add-btn",3,"routerLink"],[1,"vpcs-templates__content"],[1,"vpcs-templates__list"],[3,"deleteEvent","controller"],[1,"vpcs-templates__list-item",3,"routerLink"],[1,"vpcs-templates__list-icon"],[1,"vpcs-templates__list-name"],["mat-icon-button","",1,"vpcs-templates__menu-btn",3,"click","matMenuTriggerFor"],["xPosition","before"],["mat-menu-item","",3,"routerLink"],["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"div",2)(1,"header",3),A(2,fhe,3,1,"button",4),s(3,"h1",5),d(4,"VPCS node templates"),l(),A(5,ghe,3,1,"button",6),l(),s(6,"main",7),A(7,_he,1,0,"app-empty-templates-list"),A(8,bhe,3,0,"nav",8),l()(),s(9,"app-delete-template",9,0),v("deleteEvent",function(){return o.onDeleteEvent()}),l()),n&2&&(u(2),O(o.controller?2:-1),u(3),O(o.controller?5:-1),u(2),O(o.vpcsTemplates.length?-1:7),u(),O(o.vpcsTemplates.length?8:-1),u(),x("controller",o.controller))},dependencies:[Z,at,cn,$,ze,te,se,Ri,Qe,Fn,ot,kn,Gt,Kt,ui,ur],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.vpcs-templates__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.vpcs-templates__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.vpcs-templates__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.vpcs-templates__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.vpcs-templates__add-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-primary);transition:all .2s cubic-bezier(.4,0,.2,1)}.vpcs-templates__add-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent)}.vpcs-templates__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.vpcs-templates__list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.vpcs-templates__list-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1);cursor:pointer;text-decoration:none;color:var(--mat-sys-on-surface)}.vpcs-templates__list-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.vpcs-templates__list-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.vpcs-templates__list-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.vpcs-templates__list-name[_ngcontent-%COMP%]{flex:1;font-size:16px;font-weight:500}.vpcs-templates__menu-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);flex-shrink:0}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.vpcs-templates__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.vpcs-templates__back-btn[_ngcontent-%COMP%], .vpcs-templates__add-btn[_ngcontent-%COMP%]{width:44px;height:44px}.vpcs-templates__title[_ngcontent-%COMP%]{font-size:24px}.vpcs-templates__content[_ngcontent-%COMP%]{padding:0 16px 16px}.vpcs-templates__list-item[_ngcontent-%COMP%]{padding:14px 16px}}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();function Che(t,i){}var FV="_mat-bottom-sheet-enter",LV="_mat-bottom-sheet-exit",xhe=(()=>{class t extends Jv{_breakpointSubscription;_animationsDisabled=Qi();_animationState="void";_animationStateChanged=new ve;_destroyed=!1;constructor(){super();let e=f(Fh);this._breakpointSubscription=e.observe([Jl.Medium,Jl.Large,Jl.XLarge]).subscribe(()=>{let n=this._elementRef.nativeElement.classList;n.toggle("mat-bottom-sheet-container-medium",e.isMatched(Jl.Medium)),n.toggle("mat-bottom-sheet-container-large",e.isMatched(Jl.Large)),n.toggle("mat-bottom-sheet-container-xlarge",e.isMatched(Jl.XLarge))})}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._animationsDisabled&&this._simulateAnimation(FV))}exit(){this._destroyed||(this._elementRef.nativeElement.setAttribute("mat-exit",""),this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._animationsDisabled&&this._simulateAnimation(LV))}ngOnDestroy(){super.ngOnDestroy(),this._breakpointSubscription.unsubscribe(),this._destroyed=!0}_simulateAnimation(e){this._ngZone.run(()=>{this._handleAnimationEvent(!0,e),setTimeout(()=>this._handleAnimationEvent(!1,e))})}_trapFocus(){super._trapFocus({preventScroll:!0})}_handleAnimationEvent(e,n){let o=n===FV;(o||n===LV)&&this._animationStateChanged.emit({toState:o?"visible":"hidden",phase:e?"start":"done"})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-bottom-sheet-container"]],hostAttrs:["tabindex","-1",1,"mat-bottom-sheet-container"],hostVars:9,hostBindings:function(n,o){n&1&&v("animationstart",function(a){return o._handleAnimationEvent(!0,a.animationName)})("animationend",function(a){return o._handleAnimationEvent(!1,a.animationName)})("animationcancel",function(a){return o._handleAnimationEvent(!1,a.animationName)}),n&2&&(It("role",o._config.role)("aria-modal",o._config.ariaModal)("aria-label",o._config.ariaLabel),je("mat-bottom-sheet-container-animations-enabled",!o._animationsDisabled)("mat-bottom-sheet-container-enter",o._animationState==="visible")("mat-bottom-sheet-container-exit",o._animationState==="hidden"))},features:[xn],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(n,o){n&1&&Ae(0,Che,0,0,"ng-template",0)},dependencies:[rs],styles:[`@keyframes _mat-bottom-sheet-enter{from{transform:translateY(100%)}to{transform:none}}@keyframes _mat-bottom-sheet-exit{from{transform:none}to{transform:translateY(100%)}}.mat-bottom-sheet-container{box-shadow:0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);padding:8px 16px;min-width:100vw;box-sizing:border-box;display:block;outline:0;max-height:80vh;overflow:auto;position:relative;background:var(--mat-bottom-sheet-container-background-color, var(--mat-sys-surface-container-low));color:var(--mat-bottom-sheet-container-text-color, var(--mat-sys-on-surface));font-family:var(--mat-bottom-sheet-container-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-bottom-sheet-container-text-size, var(--mat-sys-body-large-size));line-height:var(--mat-bottom-sheet-container-text-line-height, var(--mat-sys-body-large-line-height));font-weight:var(--mat-bottom-sheet-container-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-bottom-sheet-container-text-tracking, var(--mat-sys-body-large-tracking))}@media(forced-colors: active){.mat-bottom-sheet-container{outline:1px solid}}.mat-bottom-sheet-container-animations-enabled{transform:translateY(100%)}.mat-bottom-sheet-container-animations-enabled.mat-bottom-sheet-container-enter{animation:_mat-bottom-sheet-enter 195ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-bottom-sheet-container-animations-enabled.mat-bottom-sheet-container-exit{animation:_mat-bottom-sheet-exit 375ms cubic-bezier(0.4, 0, 1, 1) backwards}.mat-bottom-sheet-container-xlarge,.mat-bottom-sheet-container-large,.mat-bottom-sheet-container-medium{border-top-left-radius:var(--mat-bottom-sheet-container-shape, 28px);border-top-right-radius:var(--mat-bottom-sheet-container-shape, 28px)}.mat-bottom-sheet-container-medium{min-width:384px;max-width:calc(100vw - 128px)}.mat-bottom-sheet-container-large{min-width:512px;max-width:calc(100vw - 256px)}.mat-bottom-sheet-container-xlarge{min-width:576px;max-width:calc(100vw - 384px)}
|
||
`],encapsulation:2})}return t})(),lA=new kt("MatBottomSheetData"),sA=class{viewContainerRef;injector;panelClass;direction;data=null;hasBackdrop=!0;backdropClass;disableClose=!1;ariaLabel=null;ariaModal=!1;closeOnNavigation=!0;autoFocus="first-tabbable";restoreFocus=!0;scrollStrategy;height="";minHeight;maxHeight},gp=class{_ref;get instance(){return this._ref.componentInstance}get componentRef(){return this._ref.componentRef}containerInstance;disableClose;_afterOpened=new Le;_result;_closeFallbackTimeout;constructor(i,e,n){this._ref=i,this.containerInstance=n,this.disableClose=e.disableClose,n._animationStateChanged.pipe(Pn(o=>o.phase==="done"&&o.toState==="visible"),wi(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),n._animationStateChanged.pipe(Pn(o=>o.phase==="done"&&o.toState==="hidden"),wi(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._ref.close(this._result)}),i.overlayRef.detachments().subscribe(()=>{this._ref.close(this._result)}),Dn(this.backdropClick(),this.keydownEvents().pipe(Pn(o=>o.keyCode===27))).subscribe(o=>{!this.disableClose&&(o.type!=="keydown"||!cr(o))&&(o.preventDefault(),this.dismiss())})}dismiss(i){this.containerInstance&&(this.containerInstance._animationStateChanged.pipe(Pn(e=>e.phase==="start"),wi(1)).subscribe(()=>{this._closeFallbackTimeout=setTimeout(()=>this._ref.close(this._result),500),this._ref.overlayRef.detachBackdrop()}),this._result=i,this.containerInstance.exit(),this.containerInstance=null)}afterDismissed(){return this._ref.closed}afterOpened(){return this._afterOpened}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}},yhe=new kt("mat-bottom-sheet-default-options"),mc=(()=>{class t{_injector=f(Di);_parentBottomSheet=f(t,{optional:!0,skipSelf:!0});_animationsDisabled=Qi();_defaultOptions=f(yhe,{optional:!0});_bottomSheetRefAtThisLevel=null;_dialog=f(eb);get _openedBottomSheetRef(){let e=this._parentBottomSheet;return e?e._openedBottomSheetRef:this._bottomSheetRefAtThisLevel}set _openedBottomSheetRef(e){this._parentBottomSheet?this._parentBottomSheet._openedBottomSheetRef=e:this._bottomSheetRefAtThisLevel=e}constructor(){}open(e,n){let o=H(H({},this._defaultOptions||new sA),n),r;return this._dialog.open(e,tt(H({},o),{disableClose:!0,closeOnOverlayDetachments:!1,maxWidth:"100%",container:xhe,scrollStrategy:o.scrollStrategy||Oh(this._injector),positionStrategy:_m(this._injector).centerHorizontally().bottom("0"),disableAnimations:this._animationsDisabled,templateContext:()=>({bottomSheetRef:r}),providers:(a,c,m)=>(r=new gp(a,o,m),[{provide:gp,useValue:r},{provide:lA,useValue:o.data}])})),r.afterDismissed().subscribe(()=>{this._openedBottomSheetRef===r&&(this._openedBottomSheetRef=null)}),this._openedBottomSheetRef?(this._openedBottomSheetRef.afterDismissed().subscribe(()=>r.containerInstance?.enter()),this._openedBottomSheetRef.dismiss()):r.containerInstance.enter(),this._openedBottomSheetRef=r,r}dismiss(e){this._openedBottomSheetRef&&this._openedBottomSheetRef.dismiss(e)}ngOnDestroy(){this._bottomSheetRefAtThisLevel&&this._bottomSheetRefAtThisLevel.dismiss()}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),id=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({providers:[mc],imports:[$y,Fs,wn]})}return t})();var whe=(t,i)=>i==null?null:i.name;function Mhe(t,i){if(t&1&&(s(0,"mat-option",10),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e==null?null:e.name)}}function khe(t,i){if(t&1&&(s(0,"mat-option",10),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function The(t,i){if(t&1){let e=j();s(0,"form",1),v("ngSubmit",function(){D(e);let o=b();return P(o.export_project_form.valid&&o.exportPortableProject())}),s(1,"div",2)(2,"h1",3),d(3,"Export Project"),l(),s(4,"button",4),v("click",function(){D(e);let o=b();return P(o.dialogRef.close())}),s(5,"mat-icon"),d(6,"close"),l()()(),F(7,"mat-divider"),s(8,"div",5)(9,"div",6)(10,"span",7),d(11,"Compression:"),l(),s(12,"mat-form-field",8)(13,"mat-select",9),v("selectionChange",function(o){D(e);let r=b();return P(r.selectCompression(o))}),J(14,Mhe,2,2,"mat-option",10,whe),l()()(),s(16,"div",6)(17,"span",7),d(18,"Compression level:"),l(),s(19,"mat-form-field",8)(20,"mat-select",11),J(21,khe,2,2,"mat-option",10,Fe),l()()(),s(23,"div",6)(24,"section",12)(25,"mat-checkbox",13),d(26," Include base images "),l()()(),s(27,"div",6)(28,"section",12)(29,"mat-checkbox",14),d(30," Include snapshots "),l()()(),s(31,"div",6)(32,"section",12)(33,"mat-checkbox",15),d(34," Reset MAC addresses "),l()()()(),F(35,"mat-divider"),s(36,"div",16)(37,"button",17),v("click",function(){D(e);let o=b();return P(o.dialogRef.close())}),d(38,"Cancel"),l(),s(39,"button",18),d(40,"Export"),l()()()}if(t&2){let e=b();x("formGroup",e.export_project_form),u(14),ee(e.compression_methods),u(7),ee(e.compression_filter_value),u(18),x("disabled",e.isExport())}}var ig=(()=>{class t{data;export_project_form;chosenImage="";compression_methods=[];compression_level=[];compression_filter_value=[];controller;project;index=4;fileName;isExport=me(!1);dialogRef=f(Pe);projectService=f(Fi);_fb=f(jt);destroyRef=f(mm);constructor(e){this.data=e,this.controller=e.controllerDetails,this.project=e.projectDetails,this.project&&(this.fileName=this.project.name+".gns3project")}ngOnInit(){this.formControls(),this.compression_methods=this.projectService.getCompression(),this.compression_level=this.projectService.getCompressionLevel(),this.selectCompression({value:this.compression_methods[this.index]}),this.export_project_form.get("compression").setValue(this.compression_methods[this.index])}formControls(){this.export_project_form=this._fb.group({compression:["",be.required],compression_level:[""],include_base_image:[!1,be.required],include_snapshots:[!1,be.required],reset_mac_address:[!1,be.required]})}selectCompression(e){let n=this.compression_level.find(o=>e.value.value===o.name);n&&(this.export_project_form.get("compression_level").setValue(n.value),this.compression_filter_value=n.selectionValues)}exportPortableProject(){this.isExport.set(!0);let e=this.export_project_form.value,n=typeof e.compression=="object"?e.compression.value:e.compression,o=tt(H({},e),{compression:n??"zstd"});window.location.assign(this.projectService.getexportPortableProjectPath(this.controller,this.project.project_id,o)),this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-export-portable-project"]],decls:1,vars:1,consts:[[1,"export-portable-project__form",3,"formGroup"],[1,"export-portable-project__form",3,"ngSubmit","formGroup"],[1,"export-portable-project__header"],[1,"export-portable-project__title"],["mat-icon-button","","type","button",1,"export-portable-project__close-btn",3,"click"],[1,"export-portable-project__content"],[1,"export-portable-project__row"],[1,"export-portable-project__label"],[1,"export-portable-project__field"],["formControlName","compression","required","",3,"selectionChange"],[3,"value"],["formControlName","compression_level"],[1,"export-portable-project__checkbox-section"],["formControlName","include_base_image",1,"export-portable-project__checkbox"],["formControlName","include_snapshots",1,"export-portable-project__checkbox"],["formControlName","reset_mac_address",1,"export-portable-project__checkbox"],[1,"export-portable-project__actions"],["mat-button","","type","button",3,"click"],["mat-raised-button","","color","primary","type","submit","cdkFocusInitial","",3,"disabled"]],template:function(n,o){n&1&&A(0,The,41,2,"form",0),n&2&&O(o.export_project_form?0:-1)},dependencies:[Z,ct,Ue,mt,He,pR,pt,bt,Ce,$,le,ze,te,se,Me,ke,we,Mt,At,St,Ot,Ht,Ea,ls],styles:["[_nghost-%COMP%]{display:block}.export-portable-project__form[_ngcontent-%COMP%]{display:flex;flex-direction:column}.export-portable-project__header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:24px 24px 8px}.export-portable-project__title[_ngcontent-%COMP%]{font-size:18px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.export-portable-project__close-btn[_ngcontent-%COMP%]{flex-shrink:0}.export-portable-project__content[_ngcontent-%COMP%]{padding:16px 24px 0;display:flex;flex-direction:column;gap:12px}.export-portable-project__row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px}@media(max-width:600px){.export-portable-project__row[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start}}.export-portable-project__label[_ngcontent-%COMP%]{flex:0 0 140px;font-size:14px;font-weight:500;color:var(--mat-sys-on-surface-variant);align-self:flex-start;padding-top:12px}.export-portable-project__field[_ngcontent-%COMP%]{flex:1}.export-portable-project__checkbox-section[_ngcontent-%COMP%]{display:flex;align-items:center;min-height:35px}.export-portable-project__checkbox[_ngcontent-%COMP%]{margin:0}.export-portable-project__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:8px;padding:16px 24px}.checkBox-section[_ngcontent-%COMP%]{display:flex;align-items:center;min-height:35px}.checkBox-margin[_ngcontent-%COMP%]{margin:0 10px}.input-full-width[_ngcontent-%COMP%]{width:100%}.col-data[_ngcontent-%COMP%]{text-align:left;align-self:self-end;margin-bottom:20px}.checkbox-row[_ngcontent-%COMP%]{margin-top:5px}"],changeDetection:0})}return t})();var rm=nl(BV());var GS="http://www.w3.org/1999/xhtml",cA={svg:"http://www.w3.org/2000/svg",xhtml:GS,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function qd(t){var i=t+="",e=i.indexOf(":");return e>=0&&(i=t.slice(0,e))!=="xmlns"&&(t=t.slice(e+1)),cA.hasOwnProperty(i)?{space:cA[i],local:t}:t}function Ehe(t){return function(){var i=this.ownerDocument,e=this.namespaceURI;return e===GS&&i.documentElement.namespaceURI===GS?i.createElement(t):i.createElementNS(e,t)}}function Dhe(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function WS(t){var i=qd(t);return(i.local?Dhe:Ehe)(i)}function Phe(){}function Zu(t){return t==null?Phe:function(){return this.querySelector(t)}}function VV(t){typeof t!="function"&&(t=Zu(t));for(var i=this._groups,e=i.length,n=new Array(e),o=0;o<e;++o)for(var r=i[o],a=r.length,c=n[o]=new Array(a),m,p,h=0;h<a;++h)(m=r[h])&&(p=t.call(m,m.__data__,h,r))&&("__data__"in m&&(p.__data__=m.__data__),c[h]=p);return new hr(n,this._parents)}function dA(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function Ihe(){return[]}function ab(t){return t==null?Ihe:function(){return this.querySelectorAll(t)}}function Ahe(t){return function(){return dA(t.apply(this,arguments))}}function zV(t){typeof t=="function"?t=Ahe(t):t=ab(t);for(var i=this._groups,e=i.length,n=[],o=[],r=0;r<e;++r)for(var a=i[r],c=a.length,m,p=0;p<c;++p)(m=a[p])&&(n.push(t.call(m,m.__data__,p,a)),o.push(m));return new hr(n,o)}function sb(t){return function(){return this.matches(t)}}function qS(t){return function(i){return i.matches(t)}}var Ohe=Array.prototype.find;function Nhe(t){return function(){return Ohe.call(this.children,t)}}function Rhe(){return this.firstElementChild}function jV(t){return this.select(t==null?Rhe:Nhe(typeof t=="function"?t:qS(t)))}var Fhe=Array.prototype.filter;function Lhe(){return Array.from(this.children)}function Bhe(t){return function(){return Fhe.call(this.children,t)}}function $V(t){return this.selectAll(t==null?Lhe:Bhe(typeof t=="function"?t:qS(t)))}function HV(t){typeof t!="function"&&(t=sb(t));for(var i=this._groups,e=i.length,n=new Array(e),o=0;o<e;++o)for(var r=i[o],a=r.length,c=n[o]=[],m,p=0;p<a;++p)(m=r[p])&&t.call(m,m.__data__,p,r)&&c.push(m);return new hr(n,this._parents)}function XS(t){return new Array(t.length)}function UV(){return new hr(this._enter||this._groups.map(XS),this._parents)}function lb(t,i){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=i}lb.prototype={constructor:lb,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,i){return this._parent.insertBefore(t,i)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function GV(t){return function(){return t}}function Vhe(t,i,e,n,o,r){for(var a=0,c,m=i.length,p=r.length;a<p;++a)(c=i[a])?(c.__data__=r[a],n[a]=c):e[a]=new lb(t,r[a]);for(;a<m;++a)(c=i[a])&&(o[a]=c)}function zhe(t,i,e,n,o,r,a){var c,m,p=new Map,h=i.length,g=r.length,M=new Array(h),C;for(c=0;c<h;++c)(m=i[c])&&(M[c]=C=a.call(m,m.__data__,c,i)+"",p.has(C)?o[c]=m:p.set(C,m));for(c=0;c<g;++c)C=a.call(t,r[c],c,r)+"",(m=p.get(C))?(n[c]=m,m.__data__=r[c],p.delete(C)):e[c]=new lb(t,r[c]);for(c=0;c<h;++c)(m=i[c])&&p.get(M[c])===m&&(o[c]=m)}function jhe(t){return t.__data__}function WV(t,i){if(!arguments.length)return Array.from(this,jhe);var e=i?zhe:Vhe,n=this._parents,o=this._groups;typeof t!="function"&&(t=GV(t));for(var r=o.length,a=new Array(r),c=new Array(r),m=new Array(r),p=0;p<r;++p){var h=n[p],g=o[p],M=g.length,C=$he(t.call(h,h&&h.__data__,p,n)),_=C.length,w=c[p]=new Array(_),S=a[p]=new Array(_),y=m[p]=new Array(M);e(h,g,w,S,y,C,i);for(var k=0,I=0,E,N;k<_;++k)if(E=w[k]){for(k>=I&&(I=k+1);!(N=S[I])&&++I<_;);E._next=N||null}}return a=new hr(a,n),a._enter=c,a._exit=m,a}function $he(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function qV(){return new hr(this._exit||this._groups.map(XS),this._parents)}function XV(t,i,e){var n=this.enter(),o=this,r=this.exit();return typeof t=="function"?(n=t(n),n&&(n=n.selection())):n=n.append(t+""),i!=null&&(o=i(o),o&&(o=o.selection())),e==null?r.remove():e(r),n&&o?n.merge(o).order():o}function QV(t){for(var i=t.selection?t.selection():t,e=this._groups,n=i._groups,o=e.length,r=n.length,a=Math.min(o,r),c=new Array(o),m=0;m<a;++m)for(var p=e[m],h=n[m],g=p.length,M=c[m]=new Array(g),C,_=0;_<g;++_)(C=p[_]||h[_])&&(M[_]=C);for(;m<o;++m)c[m]=e[m];return new hr(c,this._parents)}function YV(){for(var t=this._groups,i=-1,e=t.length;++i<e;)for(var n=t[i],o=n.length-1,r=n[o],a;--o>=0;)(a=n[o])&&(r&&a.compareDocumentPosition(r)^4&&r.parentNode.insertBefore(a,r),r=a);return this}function KV(t){t||(t=Hhe);function i(g,M){return g&&M?t(g.__data__,M.__data__):!g-!M}for(var e=this._groups,n=e.length,o=new Array(n),r=0;r<n;++r){for(var a=e[r],c=a.length,m=o[r]=new Array(c),p,h=0;h<c;++h)(p=a[h])&&(m[h]=p);m.sort(i)}return new hr(o,this._parents).order()}function Hhe(t,i){return t<i?-1:t>i?1:t>=i?0:NaN}function ZV(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function JV(){return Array.from(this)}function ez(){for(var t=this._groups,i=0,e=t.length;i<e;++i)for(var n=t[i],o=0,r=n.length;o<r;++o){var a=n[o];if(a)return a}return null}function tz(){let t=0;for(let i of this)++t;return t}function nz(){return!this.node()}function iz(t){for(var i=this._groups,e=0,n=i.length;e<n;++e)for(var o=i[e],r=0,a=o.length,c;r<a;++r)(c=o[r])&&t.call(c,c.__data__,r,o);return this}function Uhe(t){return function(){this.removeAttribute(t)}}function Ghe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Whe(t,i){return function(){this.setAttribute(t,i)}}function qhe(t,i){return function(){this.setAttributeNS(t.space,t.local,i)}}function Xhe(t,i){return function(){var e=i.apply(this,arguments);e==null?this.removeAttribute(t):this.setAttribute(t,e)}}function Qhe(t,i){return function(){var e=i.apply(this,arguments);e==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function oz(t,i){var e=qd(t);if(arguments.length<2){var n=this.node();return e.local?n.getAttributeNS(e.space,e.local):n.getAttribute(e)}return this.each((i==null?e.local?Ghe:Uhe:typeof i=="function"?e.local?Qhe:Xhe:e.local?qhe:Whe)(e,i))}function QS(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Yhe(t){return function(){this.style.removeProperty(t)}}function Khe(t,i,e){return function(){this.style.setProperty(t,i,e)}}function Zhe(t,i,e){return function(){var n=i.apply(this,arguments);n==null?this.style.removeProperty(t):this.style.setProperty(t,n,e)}}function rz(t,i,e){return arguments.length>1?this.each((i==null?Yhe:typeof i=="function"?Zhe:Khe)(t,i,e??"")):_p(this.node(),t)}function _p(t,i){return t.style.getPropertyValue(i)||QS(t).getComputedStyle(t,null).getPropertyValue(i)}function Jhe(t){return function(){delete this[t]}}function efe(t,i){return function(){this[t]=i}}function tfe(t,i){return function(){var e=i.apply(this,arguments);e==null?delete this[t]:this[t]=e}}function az(t,i){return arguments.length>1?this.each((i==null?Jhe:typeof i=="function"?tfe:efe)(t,i)):this.node()[t]}function sz(t){return t.trim().split(/^|\s+/)}function mA(t){return t.classList||new lz(t)}function lz(t){this._node=t,this._names=sz(t.getAttribute("class")||"")}lz.prototype={add:function(t){var i=this._names.indexOf(t);i<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var i=this._names.indexOf(t);i>=0&&(this._names.splice(i,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function cz(t,i){for(var e=mA(t),n=-1,o=i.length;++n<o;)e.add(i[n])}function dz(t,i){for(var e=mA(t),n=-1,o=i.length;++n<o;)e.remove(i[n])}function nfe(t){return function(){cz(this,t)}}function ife(t){return function(){dz(this,t)}}function ofe(t,i){return function(){(i.apply(this,arguments)?cz:dz)(this,t)}}function mz(t,i){var e=sz(t+"");if(arguments.length<2){for(var n=mA(this.node()),o=-1,r=e.length;++o<r;)if(!n.contains(e[o]))return!1;return!0}return this.each((typeof i=="function"?ofe:i?nfe:ife)(e,i))}function rfe(){this.textContent=""}function afe(t){return function(){this.textContent=t}}function sfe(t){return function(){var i=t.apply(this,arguments);this.textContent=i??""}}function pz(t){return arguments.length?this.each(t==null?rfe:(typeof t=="function"?sfe:afe)(t)):this.node().textContent}function lfe(){this.innerHTML=""}function cfe(t){return function(){this.innerHTML=t}}function dfe(t){return function(){var i=t.apply(this,arguments);this.innerHTML=i??""}}function uz(t){return arguments.length?this.each(t==null?lfe:(typeof t=="function"?dfe:cfe)(t)):this.node().innerHTML}function mfe(){this.nextSibling&&this.parentNode.appendChild(this)}function hz(){return this.each(mfe)}function pfe(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function fz(){return this.each(pfe)}function gz(t){var i=typeof t=="function"?t:WS(t);return this.select(function(){return this.appendChild(i.apply(this,arguments))})}function ufe(){return null}function _z(t,i){var e=typeof t=="function"?t:WS(t),n=i==null?ufe:typeof i=="function"?i:Zu(i);return this.select(function(){return this.insertBefore(e.apply(this,arguments),n.apply(this,arguments)||null)})}function hfe(){var t=this.parentNode;t&&t.removeChild(this)}function vz(){return this.each(hfe)}function ffe(){var t=this.cloneNode(!1),i=this.parentNode;return i?i.insertBefore(t,this.nextSibling):t}function gfe(){var t=this.cloneNode(!0),i=this.parentNode;return i?i.insertBefore(t,this.nextSibling):t}function bz(t){return this.select(t?gfe:ffe)}function Cz(t){return arguments.length?this.property("__data__",t):this.node().__data__}function _fe(t){return function(i){t.call(this,i,this.__data__)}}function vfe(t){return t.trim().split(/^|\s+/).map(function(i){var e="",n=i.indexOf(".");return n>=0&&(e=i.slice(n+1),i=i.slice(0,n)),{type:i,name:e}})}function bfe(t){return function(){var i=this.__on;if(i){for(var e=0,n=-1,o=i.length,r;e<o;++e)r=i[e],(!t.type||r.type===t.type)&&r.name===t.name?this.removeEventListener(r.type,r.listener,r.options):i[++n]=r;++n?i.length=n:delete this.__on}}}function Cfe(t,i,e){return function(){var n=this.__on,o,r=_fe(i);if(n){for(var a=0,c=n.length;a<c;++a)if((o=n[a]).type===t.type&&o.name===t.name){this.removeEventListener(o.type,o.listener,o.options),this.addEventListener(o.type,o.listener=r,o.options=e),o.value=i;return}}this.addEventListener(t.type,r,e),o={type:t.type,name:t.name,value:i,listener:r,options:e},n?n.push(o):this.__on=[o]}}function xz(t,i,e){var n=vfe(t+""),o,r=n.length,a;if(arguments.length<2){var c=this.node().__on;if(c){for(var m=0,p=c.length,h;m<p;++m)for(o=0,h=c[m];o<r;++o)if((a=n[o]).type===h.type&&a.name===h.name)return h.value}return}for(c=i?Cfe:bfe,o=0;o<r;++o)this.each(c(n[o],i,e));return this}function yz(t,i,e){var n=QS(t),o=n.CustomEvent;typeof o=="function"?o=new o(i,e):(o=n.document.createEvent("Event"),e?(o.initEvent(i,e.bubbles,e.cancelable),o.detail=e.detail):o.initEvent(i,!1,!1)),t.dispatchEvent(o)}function xfe(t,i){return function(){return yz(this,t,i)}}function yfe(t,i){return function(){return yz(this,t,i.apply(this,arguments))}}function Sz(t,i){return this.each((typeof i=="function"?yfe:xfe)(t,i))}function*wz(){for(var t=this._groups,i=0,e=t.length;i<e;++i)for(var n=t[i],o=0,r=n.length,a;o<r;++o)(a=n[o])&&(yield a)}var pA=[null];function hr(t,i){this._groups=t,this._parents=i}function Mz(){return new hr([[document.documentElement]],pA)}function Sfe(){return this}hr.prototype=Mz.prototype={constructor:hr,select:VV,selectAll:zV,selectChild:jV,selectChildren:$V,filter:HV,data:WV,enter:UV,exit:qV,join:XV,merge:QV,selection:Sfe,order:YV,sort:KV,call:ZV,nodes:JV,node:ez,size:tz,empty:nz,each:iz,attr:oz,style:rz,property:az,classed:mz,text:pz,html:uz,raise:hz,lower:fz,append:gz,insert:_z,remove:vz,clone:bz,datum:Cz,on:xz,dispatch:Sz,[Symbol.iterator]:wz};var Xd=Mz;function dn(t){return typeof t=="string"?new hr([[document.querySelector(t)]],[document.documentElement]):new hr([[t]],pA)}function kz(t){let i;for(;i=t.sourceEvent;)t=i;return t}function aa(t,i){if(t=kz(t),i===void 0&&(i=t.currentTarget),i){var e=i.ownerSVGElement||i;if(e.createSVGPoint){var n=e.createSVGPoint();return n.x=t.clientX,n.y=t.clientY,n=n.matrixTransform(i.getScreenCTM().inverse()),[n.x,n.y]}if(i.getBoundingClientRect){var o=i.getBoundingClientRect();return[t.clientX-o.left-i.clientLeft,t.clientY-o.top-i.clientTop]}}return[t.pageX,t.pageY]}var vp=class{x;y;constructor(i,e){this.x=i,this.y=e}};var bp=class{width;height;constructor(i,e){this.width=i,this.height=e}};var uA=class{x;y;k;constructor(i,e,n){this.x=i,this.y=e,this.k=n}},jo=(()=>{class t{transformation;size;centerZeroZeroPoint=!0;centerX=null;centerY=null;constructor(){this.size=new bp(0,0),this.transformation=new uA(0,0,1)}getZeroZeroTransformationPoint(){return this.centerZeroZeroPoint?new vp(this.centerX!==null?this.centerX:this.size.width/2,this.centerY!==null?this.centerY:this.size.height/2):new vp(0,0)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var od=(()=>{class t{context;currentScale;scaleChangeEmitter=new ve;constructor(e){this.context=e,this.currentScale=1}getScale(){return this.currentScale}setScale(e){this.currentScale=e,this.context.transformation.k=this.currentScale,this.scaleChangeEmitter.emit(this.currentScale)}resetToDefault(){this.currentScale=1,this.context.transformation.k=this.currentScale,this.scaleChangeEmitter.emit(this.currentScale)}static \u0275fac=function(n){return new(n||t)(ge(jo))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var To=(()=>{class t{symbolScalingSubject=new Le;isScrollDisabled=new Le;isMapLocked=new Le;isTopologySummaryVisible=!0;isLogConsoleVisible=!1;isLayerNumberVisible=!1;logConsoleSubject=new Le;mapRenderedEmitter=new ve;openReadme;showInterfaceLabels=!0;integrateLinkLabelsToLinks=!0;openConsolesInWidget=!1;constructor(){this.isLayerNumberVisible=localStorage.getItem("layersVisibility")==="true",localStorage.getItem("integrateLinkLabelsToLinks")&&(this.integrateLinkLabelsToLinks=localStorage.getItem("integrateLinkLabelsToLinks")==="true"),localStorage.getItem("openConsolesInWidget")&&(this.openConsolesInWidget=localStorage.getItem("openConsolesInWidget")==="true"),localStorage.getItem("symbolScaling")||localStorage.setItem("symbolScaling","true"),localStorage.getItem("openReadme")?this.openReadme=localStorage.getItem("openReadme")==="true":localStorage.setItem("openReadme","false"),localStorage.getItem("showInterfaceLabels")?this.showInterfaceLabels=localStorage.getItem("showInterfaceLabels")==="true":localStorage.setItem("showInterfaceLabels","true")}getSymbolScaling(){return localStorage.getItem("symbolScaling")==="true"}setSymbolScaling(e){e?localStorage.setItem("symbolScaling","true"):localStorage.setItem("symbolScaling","false"),this.symbolScalingSubject.next(e)}changeMapLockValue(e){this.isMapLocked.next(e)}setConsoleContextMenuAction(e){localStorage.setItem("consoleContextMenu",e)}getConsoleContextMenuAction(){return localStorage.getItem("consoleContextMenu")}toggleTopologySummary(e){this.isTopologySummaryVisible=e}toggleLogConsole(e){this.isLogConsoleVisible=e}toggleLayers(e){this.isLayerNumberVisible=e}toggleShowInterfaceLabels(e){this.showInterfaceLabels=e,localStorage.removeItem("showInterfaceLabels"),e?localStorage.setItem("showInterfaceLabels","true"):localStorage.setItem("showInterfaceLabels","false")}toggleIntegrateInterfaceLabels(e){this.integrateLinkLabelsToLinks=e,localStorage.removeItem("integrateLinkLabelsToLinks"),e?localStorage.setItem("integrateLinkLabelsToLinks","true"):localStorage.setItem("integrateLinkLabelsToLinks","false")}toggleOpenReadme(e){this.openReadme=e,localStorage.removeItem("openReadme"),e?localStorage.setItem("openReadme","true"):localStorage.setItem("openReadme","false")}toggleOpenConsolesInWidget(e){this.openConsolesInWidget=e,localStorage.removeItem("openConsolesInWidget"),e?localStorage.setItem("openConsolesInWidget","true"):localStorage.setItem("openConsolesInWidget","false")}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Al=(()=>{class t{isSelectionToolActivated=new Le;isMovingToolActivated=new Le;isTextEditingToolActivated=new Le;isTextAddingToolActivated=new Le;isDrawLinkToolActivated=new Le;constructor(){}selectionToolActivation(e){this.isSelectionToolActivated.next(e)}movingToolActivation(e){this.isMovingToolActivated.next(e)}textEditingToolActivation(e){this.isTextEditingToolActivated.next(e)}textAddingToolActivation(e){this.isTextAddingToolActivated.next(e)}drawLinkToolActivation(e){this.isDrawLinkToolActivated.next(e)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var KS=(()=>{class t{getOptimalSize(e,n){let o=document.documentElement.clientWidth,r=document.documentElement.clientHeight;return e>o&&(o=e),n>r&&(r=n),new bp(o,r)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var rg=class extends ym{getItemKey(i){return i.id}},ag=(()=>{class t extends rg{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})(),sg=(()=>{class t extends rg{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})(),lg=(()=>{class t extends rg{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})(),cg=(()=>{class t extends rg{static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Ol=class{id;commandLine;computeId;console;consoleHost;consoleType;firstPortName;height;label;locked;name;nodeDirectory;nodeType;portNameFormat;portSegmentSize;ports;properties;projectId;status;symbol;symbolUrl;usage;width;x;y;z};var pc=class{id;rotation;style;text;x;y;originalX;originalY;nodeId};var rd=(()=>{class t{calculate(e,n){let o=document.createElement("text");o.innerText=e,o.setAttribute("fill","#00000"),o.setAttribute("fill-opacity","0"),o.setAttribute("style",n),document.documentElement.appendChild(o);let r=o.getBoundingClientRect();return document.documentElement.removeChild(o),{width:r.width,height:r.height}}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function nr(t){return t>=48&&t<=57}function ks(t){return nr(t)||t>=65&&t<=70||t>=97&&t<=102}function tw(t){return t>=65&&t<=90}function kfe(t){return t>=97&&t<=122}function Tfe(t){return tw(t)||kfe(t)}function Efe(t){return t>=128}function ew(t){return Tfe(t)||Efe(t)||t===95}function cb(t){return ew(t)||nr(t)||t===45}function Dfe(t){return t>=0&&t<=8||t===11||t>=14&&t<=31||t===127}function db(t){return t===10||t===13||t===12}function ad(t){return db(t)||t===32||t===9}function Ja(t,i){return!(t!==92||db(i)||i===0)}function dg(t,i,e){return t===45?ew(i)||i===45||Ja(i,e):ew(t)?!0:t===92?Ja(t,i):!1}function nw(t,i,e){return t===43||t===45?nr(i)?2:i===46&&nr(e)?3:0:t===46?nr(i)?2:0:nr(t)?1:0}function iw(t){return t===65279||t===65534?1:0}var hA=new Array(128),Pfe=128,mb=130,fA=131,ow=132,gA=133;for(let t=0;t<hA.length;t++)hA[t]=ad(t)&&mb||nr(t)&&fA||ew(t)&&ow||Dfe(t)&&gA||t||Pfe;function rw(t){return t<128?hA[t]:ow}function mg(t,i){return i<t.length?t.charCodeAt(i):0}function aw(t,i,e){return e===13&&mg(t,i+1)===10?2:1}function Qd(t,i,e){let n=t.charCodeAt(i);return tw(n)&&(n=n|32),n===e}function Yd(t,i,e,n){if(e-i!==n.length||i<0||e>t.length)return!1;for(let o=i;o<e;o++){let r=n.charCodeAt(o-i),a=t.charCodeAt(o);if(tw(a)&&(a=a|32),a!==r)return!1}return!0}function Tz(t,i){for(;i>=0&&ad(t.charCodeAt(i));i--);return i+1}function pb(t,i){for(;i<t.length&&ad(t.charCodeAt(i));i++);return i}function _A(t,i){for(;i<t.length&&nr(t.charCodeAt(i));i++);return i}function sd(t,i){if(i+=2,ks(mg(t,i-1))){for(let n=Math.min(t.length,i+5);i<n&&ks(mg(t,i));i++);let e=mg(t,i);ad(e)&&(i+=aw(t,i,e))}return i}function ub(t,i){for(;i<t.length;i++){let e=t.charCodeAt(i);if(!cb(e)){if(Ja(e,mg(t,i+1))){i=sd(t,i)-1;continue}break}}return i}function Ju(t,i){let e=t.charCodeAt(i);if((e===43||e===45)&&(e=t.charCodeAt(i+=1)),nr(e)&&(i=_A(t,i+1),e=t.charCodeAt(i)),e===46&&nr(t.charCodeAt(i+1))&&(i+=2,i=_A(t,i)),Qd(t,i,101)){let n=0;e=t.charCodeAt(i+1),(e===45||e===43)&&(n=1,e=t.charCodeAt(i+2)),nr(e)&&(i=_A(t,i+1+n+1))}return i}function sw(t,i){for(;i<t.length;i++){let e=t.charCodeAt(i);if(e===41){i++;break}Ja(e,mg(t,i+1))&&(i=sd(t,i))}return i}function hb(t){if(t.length===1&&!ks(t.charCodeAt(0)))return t[0];let i=parseInt(t,16);return(i===0||i>=55296&&i<=57343||i>1114111)&&(i=65533),String.fromCodePoint(i)}var pg=["EOF-token","ident-token","function-token","at-keyword-token","hash-token","string-token","bad-string-token","url-token","bad-url-token","delim-token","number-token","percentage-token","dimension-token","whitespace-token","CDO-token","CDC-token","colon-token","semicolon-token","comma-token","[-token","]-token","(-token",")-token","{-token","}-token"];function ug(t=null,i){return t===null||t.length<i?new Uint32Array(Math.max(i+1024,16384)):t}var Ez=10,Ife=12,Dz=13;function Pz(t){let i=t.source,e=i.length,n=i.length>0?iw(i.charCodeAt(0)):0,o=ug(t.lines,e),r=ug(t.columns,e),a=t.startLine,c=t.startColumn;for(let m=n;m<e;m++){let p=i.charCodeAt(m);o[m]=a,r[m]=c++,(p===Ez||p===Dz||p===Ife)&&(p===Dz&&m+1<e&&i.charCodeAt(m+1)===Ez&&(m++,o[m]=a,r[m]=c),a++,c=1)}o[e]=a,r[e]=c,t.lines=o,t.columns=r,t.computed=!0}var lw=class{constructor(){this.lines=null,this.columns=null,this.computed=!1}setSource(i,e=0,n=1,o=1){this.source=i,this.startOffset=e,this.startLine=n,this.startColumn=o,this.computed=!1}getLocation(i,e){return this.computed||Pz(this),{source:e,offset:this.startOffset+i,line:this.lines[i],column:this.columns[i]}}getLocationRange(i,e,n){return this.computed||Pz(this),{source:n,start:{offset:this.startOffset+i,line:this.lines[i],column:this.columns[i]},end:{offset:this.startOffset+e,line:this.lines[e],column:this.columns[e]}}}};var Nl=16777215,Cp=24,Afe=new Map([[2,22],[21,22],[19,20],[23,24]]),fb=class{constructor(i,e){this.setSource(i,e)}reset(){this.eof=!1,this.tokenIndex=-1,this.tokenType=0,this.tokenStart=this.firstCharOffset,this.tokenEnd=this.firstCharOffset}setSource(i="",e=()=>{}){i=String(i||"");let n=i.length,o=ug(this.offsetAndType,i.length+1),r=ug(this.balance,i.length+1),a=0,c=0,m=0,p=-1;for(this.offsetAndType=null,this.balance=null,e(i,(h,g,M)=>{switch(h){default:r[a]=n;break;case c:{let C=m&Nl;for(m=r[C],c=m>>Cp,r[a]=C,r[C++]=a;C<a;C++)r[C]===n&&(r[C]=a);break}case 21:case 2:case 19:case 23:r[a]=m,c=Afe.get(h),m=c<<Cp|a;break}o[a++]=h<<Cp|M,p===-1&&(p=g)}),o[a]=0<<Cp|n,r[a]=n,r[n]=n;m!==0;){let h=m&Nl;m=r[h],r[h]=n}this.source=i,this.firstCharOffset=p===-1?0:p,this.tokenCount=a,this.offsetAndType=o,this.balance=r,this.reset(),this.next()}lookupType(i){return i+=this.tokenIndex,i<this.tokenCount?this.offsetAndType[i]>>Cp:0}lookupOffset(i){return i+=this.tokenIndex,i<this.tokenCount?this.offsetAndType[i-1]&Nl:this.source.length}lookupValue(i,e){return i+=this.tokenIndex,i<this.tokenCount?Yd(this.source,this.offsetAndType[i-1]&Nl,this.offsetAndType[i]&Nl,e):!1}getTokenStart(i){return i===this.tokenIndex?this.tokenStart:i>0?i<this.tokenCount?this.offsetAndType[i-1]&Nl:this.offsetAndType[this.tokenCount]&Nl:this.firstCharOffset}substrToCursor(i){return this.source.substring(i,this.tokenStart)}isBalanceEdge(i){return this.balance[this.tokenIndex]<i}isDelim(i,e){return e?this.lookupType(e)===9&&this.source.charCodeAt(this.lookupOffset(e))===i:this.tokenType===9&&this.source.charCodeAt(this.tokenStart)===i}skip(i){let e=this.tokenIndex+i;e<this.tokenCount?(this.tokenIndex=e,this.tokenStart=this.offsetAndType[e-1]&Nl,e=this.offsetAndType[e],this.tokenType=e>>Cp,this.tokenEnd=e&Nl):(this.tokenIndex=this.tokenCount,this.next())}next(){let i=this.tokenIndex+1;i<this.tokenCount?(this.tokenIndex=i,this.tokenStart=this.tokenEnd,i=this.offsetAndType[i],this.tokenType=i>>Cp,this.tokenEnd=i&Nl):(this.eof=!0,this.tokenIndex=this.tokenCount,this.tokenType=0,this.tokenStart=this.tokenEnd=this.source.length)}skipSC(){for(;this.tokenType===13||this.tokenType===25;)this.next()}skipUntilBalanced(i,e){let n=i,o,r;e:for(;n<this.tokenCount;n++){if(o=this.balance[n],o<i)break e;switch(r=n>0?this.offsetAndType[n-1]&Nl:this.firstCharOffset,e(this.source.charCodeAt(r))){case 1:break e;case 2:n++;break e;default:this.balance[o]===n&&(n=o)}}this.skip(n-this.tokenIndex)}forEachToken(i){for(let e=0,n=this.firstCharOffset;e<this.tokenCount;e++){let o=n,r=this.offsetAndType[e],a=r&Nl,c=r>>Cp;n=a,i(c,o,a,e)}}dump(){let i=new Array(this.tokenCount);return this.forEachToken((e,n,o,r)=>{i[r]={idx:r,type:pg[e],chunk:this.source.substring(n,o),balance:this.balance[r]}}),i}};function yp(t,i){function e(g){return g<c?t.charCodeAt(g):0}function n(){if(p=Ju(t,p),dg(e(p),e(p+1),e(p+2))){h=12,p=ub(t,p);return}if(e(p)===37){h=11,p++;return}h=10}function o(){let g=p;if(p=ub(t,p),Yd(t,g,p,"url")&&e(p)===40){if(p=pb(t,p+1),e(p)===34||e(p)===39){h=2,p=g+4;return}a();return}if(e(p)===40){h=2,p++;return}h=1}function r(g){for(g||(g=e(p++)),h=5;p<t.length;p++){let M=t.charCodeAt(p);switch(rw(M)){case g:p++;return;case mb:if(db(M)){p+=aw(t,p,M),h=6;return}break;case 92:if(p===t.length-1)break;let C=e(p+1);db(C)?p+=aw(t,p+1,C):Ja(M,C)&&(p=sd(t,p)-1);break}}}function a(){for(h=7,p=pb(t,p);p<t.length;p++){let g=t.charCodeAt(p);switch(rw(g)){case 41:p++;return;case mb:if(p=pb(t,p),e(p)===41||p>=t.length){p<t.length&&p++;return}p=sw(t,p),h=8;return;case 34:case 39:case 40:case gA:p=sw(t,p),h=8;return;case 92:if(Ja(g,e(p+1))){p=sd(t,p)-1;break}p=sw(t,p),h=8;return}}}t=String(t||"");let c=t.length,m=iw(e(0)),p=m,h;for(;p<c;){let g=t.charCodeAt(p);switch(rw(g)){case mb:h=13,p=pb(t,p+1);break;case 34:r();break;case 35:cb(e(p+1))||Ja(e(p+1),e(p+2))?(h=4,p=ub(t,p+1)):(h=9,p++);break;case 39:r();break;case 40:h=21,p++;break;case 41:h=22,p++;break;case 43:nw(g,e(p+1),e(p+2))?n():(h=9,p++);break;case 44:h=18,p++;break;case 45:nw(g,e(p+1),e(p+2))?n():e(p+1)===45&&e(p+2)===62?(h=15,p=p+3):dg(g,e(p+1),e(p+2))?o():(h=9,p++);break;case 46:nw(g,e(p+1),e(p+2))?n():(h=9,p++);break;case 47:e(p+1)===42?(h=25,p=t.indexOf("*/",p+2),p=p===-1?t.length:p+2):(h=9,p++);break;case 58:h=16,p++;break;case 59:h=17,p++;break;case 60:e(p+1)===33&&e(p+2)===45&&e(p+3)===45?(h=14,p=p+4):(h=9,p++);break;case 64:dg(e(p+1),e(p+2),e(p+3))?(h=3,p=ub(t,p+1)):(h=9,p++);break;case 91:h=19,p++;break;case 92:Ja(g,e(p+1))?o():(h=9,p++);break;case 93:h=20,p++;break;case 123:h=23,p++;break;case 125:h=24,p++;break;case fA:n();break;case ow:o();break;default:h=9,p++}i(h,m,m=p)}}var hg=null,es=class t{static createItem(i){return{prev:null,next:null,data:i}}constructor(){this.head=null,this.tail=null,this.cursor=null}createItem(i){return t.createItem(i)}allocateCursor(i,e){let n;return hg!==null?(n=hg,hg=hg.cursor,n.prev=i,n.next=e,n.cursor=this.cursor):n={prev:i,next:e,cursor:this.cursor},this.cursor=n,n}releaseCursor(){let{cursor:i}=this;this.cursor=i.cursor,i.prev=null,i.next=null,i.cursor=hg,hg=i}updateCursors(i,e,n,o){let{cursor:r}=this;for(;r!==null;)r.prev===i&&(r.prev=e),r.next===n&&(r.next=o),r=r.cursor}*[Symbol.iterator](){for(let i=this.head;i!==null;i=i.next)yield i.data}get size(){let i=0;for(let e=this.head;e!==null;e=e.next)i++;return i}get isEmpty(){return this.head===null}get first(){return this.head&&this.head.data}get last(){return this.tail&&this.tail.data}fromArray(i){let e=null;this.head=null;for(let n of i){let o=t.createItem(n);e!==null?e.next=o:this.head=o,o.prev=e,e=o}return this.tail=e,this}toArray(){return[...this]}toJSON(){return[...this]}forEach(i,e=this){let n=this.allocateCursor(null,this.head);for(;n.next!==null;){let o=n.next;n.next=o.next,i.call(e,o.data,o,this)}this.releaseCursor()}forEachRight(i,e=this){let n=this.allocateCursor(this.tail,null);for(;n.prev!==null;){let o=n.prev;n.prev=o.prev,i.call(e,o.data,o,this)}this.releaseCursor()}reduce(i,e,n=this){let o=this.allocateCursor(null,this.head),r=e,a;for(;o.next!==null;)a=o.next,o.next=a.next,r=i.call(n,r,a.data,a,this);return this.releaseCursor(),r}reduceRight(i,e,n=this){let o=this.allocateCursor(this.tail,null),r=e,a;for(;o.prev!==null;)a=o.prev,o.prev=a.prev,r=i.call(n,r,a.data,a,this);return this.releaseCursor(),r}some(i,e=this){for(let n=this.head;n!==null;n=n.next)if(i.call(e,n.data,n,this))return!0;return!1}map(i,e=this){let n=new t;for(let o=this.head;o!==null;o=o.next)n.appendData(i.call(e,o.data,o,this));return n}filter(i,e=this){let n=new t;for(let o=this.head;o!==null;o=o.next)i.call(e,o.data,o,this)&&n.appendData(o.data);return n}nextUntil(i,e,n=this){if(i===null)return;let o=this.allocateCursor(null,i);for(;o.next!==null;){let r=o.next;if(o.next=r.next,e.call(n,r.data,r,this))break}this.releaseCursor()}prevUntil(i,e,n=this){if(i===null)return;let o=this.allocateCursor(i,null);for(;o.prev!==null;){let r=o.prev;if(o.prev=r.prev,e.call(n,r.data,r,this))break}this.releaseCursor()}clear(){this.head=null,this.tail=null}copy(){let i=new t;for(let e of this)i.appendData(e);return i}prepend(i){return this.updateCursors(null,i,this.head,i),this.head!==null?(this.head.prev=i,i.next=this.head):this.tail=i,this.head=i,this}prependData(i){return this.prepend(t.createItem(i))}append(i){return this.insert(i)}appendData(i){return this.insert(t.createItem(i))}insert(i,e=null){if(e!==null)if(this.updateCursors(e.prev,i,e,i),e.prev===null){if(this.head!==e)throw new Error("before doesn't belong to list");this.head=i,e.prev=i,i.next=e,this.updateCursors(null,i)}else e.prev.next=i,i.prev=e.prev,e.prev=i,i.next=e;else this.updateCursors(this.tail,i,null,i),this.tail!==null?(this.tail.next=i,i.prev=this.tail):this.head=i,this.tail=i;return this}insertData(i,e){return this.insert(t.createItem(i),e)}remove(i){if(this.updateCursors(i,i.prev,i,i.next),i.prev!==null)i.prev.next=i.next;else{if(this.head!==i)throw new Error("item doesn't belong to list");this.head=i.next}if(i.next!==null)i.next.prev=i.prev;else{if(this.tail!==i)throw new Error("item doesn't belong to list");this.tail=i.prev}return i.prev=null,i.next=null,i}push(i){this.insert(t.createItem(i))}pop(){return this.tail!==null?this.remove(this.tail):null}unshift(i){this.prepend(t.createItem(i))}shift(){return this.head!==null?this.remove(this.head):null}prependList(i){return this.insertList(i,this.head)}appendList(i){return this.insertList(i)}insertList(i,e){return i.head===null?this:(e!=null?(this.updateCursors(e.prev,i.tail,e,i.head),e.prev!==null?(e.prev.next=i.head,i.head.prev=e.prev):this.head=i.head,e.prev=i.tail,i.tail.next=e):(this.updateCursors(this.tail,i.tail,null,i.head),this.tail!==null?(this.tail.next=i.head,i.head.prev=this.tail):this.head=i.head,this.tail=i.tail),i.head=null,i.tail=null,this)}replace(i,e){"head"in e?this.insertList(e,i):this.insert(e,i),this.remove(i)}};function eh(t,i){let e=Object.create(SyntaxError.prototype),n=new Error;return Object.assign(e,{name:t,message:i,get stack(){return(n.stack||"").replace(/^(.+\n){1,3}/,`${t}: ${i}
|
||
`)}})}var bA=100,Iz=60,Az=" ";function Oz({source:t,line:i,column:e},n){function o(h,g){return r.slice(h,g).map((M,C)=>String(h+C+1).padStart(m)+" |"+M).join(`
|
||
`)}let r=t.split(/\r\n?|\n|\f/),a=Math.max(1,i-n)-1,c=Math.min(i+n,r.length+1),m=Math.max(4,String(c).length)+1,p=0;e+=(Az.length-1)*(r[i-1].substr(0,e-1).match(/\t/g)||[]).length,e>bA&&(p=e-Iz+3,e=Iz-2);for(let h=a;h<=c;h++)h>=0&&h<r.length&&(r[h]=r[h].replace(/\t/g,Az),r[h]=(p>0&&r[h].length>p?"\u2026":"")+r[h].substr(p,bA-2)+(r[h].length>p+bA-1?"\u2026":""));return[o(a,i),new Array(e+m+2).join("-")+"^",o(i,c)].filter(Boolean).join(`
|
||
`)}function CA(t,i,e,n,o){return Object.assign(eh("SyntaxError",t),{source:i,offset:e,line:n,column:o,sourceFragment(a){return Oz({source:i,line:n,column:o},isNaN(a)?0:a)},get formattedMessage(){return`Parse error: ${t}
|
||
`+Oz({source:i,line:n,column:o},2)}})}function Nz(t){let i=this.createList(),e=!1,n={recognizer:t};for(;!this.eof;){switch(this.tokenType){case 25:this.next();continue;case 13:e=!0,this.next();continue}let o=t.getNode.call(this,n);if(o===void 0)break;e&&(t.onWhiteSpace&&t.onWhiteSpace.call(this,o,i,n),e=!1),i.push(o)}return e&&t.onWhiteSpace&&t.onWhiteSpace.call(this,null,i,n),i}var Rz=()=>{},Ofe=33,Nfe=35,xA=59,Fz=123,Lz=0;function Rfe(t){return function(){return this[t]()}}function yA(t){let i=Object.create(null);for(let e in t){let n=t[e],o=n.parse||n;o&&(i[e]=o)}return i}function Ffe(t){let i={context:Object.create(null),scope:Object.assign(Object.create(null),t.scope),atrule:yA(t.atrule),pseudo:yA(t.pseudo),node:yA(t.node)};for(let e in t.parseContext)switch(typeof t.parseContext[e]){case"function":i.context[e]=t.parseContext[e];break;case"string":i.context[e]=Rfe(t.parseContext[e]);break}return H(H({config:i},i),i.node)}function Bz(t){let i="",e="<unknown>",n=!1,o=Rz,r=!1,a=new lw,c=Object.assign(new fb,Ffe(t||{}),{parseAtrulePrelude:!0,parseRulePrelude:!0,parseValue:!0,parseCustomProperty:!1,readSequence:Nz,consumeUntilBalanceEnd:()=>0,consumeUntilLeftCurlyBracket(p){return p===Fz?1:0},consumeUntilLeftCurlyBracketOrSemicolon(p){return p===Fz||p===xA?1:0},consumeUntilExclamationMarkOrSemicolon(p){return p===Ofe||p===xA?1:0},consumeUntilSemicolonIncluded(p){return p===xA?2:0},createList(){return new es},createSingleNodeList(p){return new es().appendData(p)},getFirstListNode(p){return p&&p.first},getLastListNode(p){return p&&p.last},parseWithFallback(p,h){let g=this.tokenIndex;try{return p.call(this)}catch(M){if(r)throw M;let C=h.call(this,g);return r=!0,o(M,C),r=!1,C}},lookupNonWSType(p){let h;do if(h=this.lookupType(p++),h!==13)return h;while(h!==Lz);return Lz},charCodeAt(p){return p>=0&&p<i.length?i.charCodeAt(p):0},substring(p,h){return i.substring(p,h)},substrToCursor(p){return this.source.substring(p,this.tokenStart)},cmpChar(p,h){return Qd(i,p,h)},cmpStr(p,h,g){return Yd(i,p,h,g)},consume(p){let h=this.tokenStart;return this.eat(p),this.substrToCursor(h)},consumeFunctionName(){let p=i.substring(this.tokenStart,this.tokenEnd-1);return this.eat(2),p},consumeNumber(p){let h=i.substring(this.tokenStart,Ju(i,this.tokenStart));return this.eat(p),h},eat(p){if(this.tokenType!==p){let h=pg[p].slice(0,-6).replace(/-/g," ").replace(/^./,C=>C.toUpperCase()),g=`${/[[\](){}]/.test(h)?`"${h}"`:h} is expected`,M=this.tokenStart;switch(p){case 1:this.tokenType===2||this.tokenType===7?(M=this.tokenEnd-1,g="Identifier is expected but function found"):g="Identifier is expected";break;case 4:this.isDelim(Nfe)&&(this.next(),M++,g="Name is expected");break;case 11:this.tokenType===10&&(M=this.tokenEnd,g="Percent sign is expected");break}this.error(g,M)}this.next()},eatIdent(p){(this.tokenType!==1||this.lookupValue(0,p)===!1)&&this.error(`Identifier "${p}" is expected`),this.next()},eatDelim(p){this.isDelim(p)||this.error(`Delim "${String.fromCharCode(p)}" is expected`),this.next()},getLocation(p,h){return n?a.getLocationRange(p,h,e):null},getLocationFromList(p){if(n){let h=this.getFirstListNode(p),g=this.getLastListNode(p);return a.getLocationRange(h!==null?h.loc.start.offset-a.startOffset:this.tokenStart,g!==null?g.loc.end.offset-a.startOffset:this.tokenStart,e)}return null},error(p,h){let g=typeof h<"u"&&h<i.length?a.getLocation(h):this.eof?a.getLocation(Tz(i,i.length-1)):a.getLocation(this.tokenStart);throw new CA(p||"Unexpected input",i,g.offset,g.line,g.column)}});return Object.assign(function(p,h){i=p,h=h||{},c.setSource(i,yp),a.setSource(i,h.offset,h.line,h.column),e=h.filename||"<unknown>",n=!!h.positions,o=typeof h.onParseError=="function"?h.onParseError:Rz,r=!1,c.parseAtrulePrelude="parseAtrulePrelude"in h?!!h.parseAtrulePrelude:!0,c.parseRulePrelude="parseRulePrelude"in h?!!h.parseRulePrelude:!0,c.parseValue="parseValue"in h?!!h.parseValue:!0,c.parseCustomProperty="parseCustomProperty"in h?!!h.parseCustomProperty:!1;let{context:g="default",onComment:M}=h;if(!(g in c.context))throw new Error("Unknown context `"+g+"`");typeof M=="function"&&c.forEachToken((_,w,S)=>{if(_===25){let y=c.getLocation(w,S),k=Yd(i,S-2,S,"*/")?i.slice(w+2,S-2):i.slice(w+2,S);M(k,y)}});let C=c.context[g].call(c,h);return c.eof||c.error(),C},{SyntaxError:CA,config:c.config})}var rj=nl(ij(),1),oj=new Set(["Atrule","Selector","Declaration"]);function aj(t){let i=new rj.SourceMapGenerator,e={line:1,column:0},n={line:0,column:0},o={line:1,column:0},r={generated:o},a=1,c=0,m=!1,p=t.node;t.node=function(M){if(M.loc&&M.loc.start&&oj.has(M.type)){let C=M.loc.start.line,_=M.loc.start.column-1;(n.line!==C||n.column!==_)&&(n.line=C,n.column=_,e.line=a,e.column=c,m&&(m=!1,(e.line!==o.line||e.column!==o.column)&&i.addMapping(r)),m=!0,i.addMapping({source:M.loc.source,original:n,generated:e}))}p.call(this,M),m&&oj.has(M.type)&&(o.line=a,o.column=c)};let h=t.emit;t.emit=function(M,C,_){for(let w=0;w<M.length;w++)M.charCodeAt(w)===10?(a++,c=0):c++;h(M,C,_)};let g=t.result;return t.result=function(){return m&&i.addMapping(r),{css:g(),map:i}},t}var pw={};On(pw,{safe:()=>PA,spec:()=>oge});var tge=43,nge=45,DA=(t,i)=>{if(t===9&&(t=i),typeof t=="string"){let e=t.charCodeAt(0);return e>127?32768:e<<8}return t},sj=[[1,1],[1,2],[1,7],[1,8],[1,"-"],[1,10],[1,11],[1,12],[1,15],[1,21],[3,1],[3,2],[3,7],[3,8],[3,"-"],[3,10],[3,11],[3,12],[3,15],[4,1],[4,2],[4,7],[4,8],[4,"-"],[4,10],[4,11],[4,12],[4,15],[12,1],[12,2],[12,7],[12,8],[12,"-"],[12,10],[12,11],[12,12],[12,15],["#",1],["#",2],["#",7],["#",8],["#","-"],["#",10],["#",11],["#",12],["#",15],["-",1],["-",2],["-",7],["-",8],["-","-"],["-",10],["-",11],["-",12],["-",15],[10,1],[10,2],[10,7],[10,8],[10,10],[10,11],[10,12],[10,"%"],[10,15],["@",1],["@",2],["@",7],["@",8],["@","-"],["@",15],[".",10],[".",11],[".",12],["+",10],["+",11],["+",12],["/","*"]],ige=sj.concat([[1,4],[12,4],[4,4],[3,21],[3,5],[3,16],[11,11],[11,12],[11,2],[11,"-"],[22,1],[22,2],[22,11],[22,12],[22,4],[22,"-"]]);function lj(t){let i=new Set(t.map(([e,n])=>DA(e)<<16|DA(n)));return function(e,n,o){let r=DA(n,o),a=o.charCodeAt(0);return(a===nge&&n!==1&&n!==2&&n!==15||a===tge?i.has(e<<16|a<<8):i.has(e<<16|r))&&this.emit(" ",13,!0),r}}var oge=lj(sj),PA=lj(ige);var rge=92;function age(t,i){if(typeof i=="function"){let e=null;t.children.forEach(n=>{e!==null&&i.call(this,e),this.node(n),e=n});return}t.children.forEach(this.node,this)}function sge(t){yp(t,(i,e,n)=>{this.token(i,t.slice(e,n))})}function cj(t){let i=new Map;for(let e in t.node){let n=t.node[e];typeof(n.generate||n)=="function"&&i.set(e,n.generate||n)}return function(e,n){let o="",r=0,a={node(m){if(i.has(m.type))i.get(m.type).call(c,m);else throw new Error("Unknown node type: "+m.type)},tokenBefore:PA,token(m,p){r=this.tokenBefore(r,m,p),this.emit(p,m,!1),m===9&&p.charCodeAt(0)===rge&&this.emit(`
|
||
`,13,!0)},emit(m){o+=m},result(){return o}};n&&(typeof n.decorator=="function"&&(a=n.decorator(a)),n.sourceMap&&(a=aj(a)),n.mode in pw&&(a.tokenBefore=pw[n.mode]));let c={node:m=>a.node(m),children:age,token:(m,p)=>a.token(m,p),tokenize:sge};return a.node(e),a.result()}}function dj(t){return{fromPlainObject(i){return t(i,{enter(e){e.children&&!(e.children instanceof es)&&(e.children=new es().fromArray(e.children))}}),i},toPlainObject(i){return t(i,{leave(e){e.children&&e.children instanceof es&&(e.children=e.children.toArray())}}),i}}}var{hasOwnProperty:IA}=Object.prototype,bb=function(){};function mj(t){return typeof t=="function"?t:bb}function pj(t,i){return function(e,n,o){e.type===i&&t.call(this,e,n,o)}}function lge(t,i){let e=i.structure,n=[];for(let o in e){if(IA.call(e,o)===!1)continue;let r=e[o],a={name:o,type:!1,nullable:!1};Array.isArray(r)||(r=[r]);for(let c of r)c===null?a.nullable=!0:typeof c=="string"?a.type="node":Array.isArray(c)&&(a.type="list");a.type&&n.push(a)}return n.length?{context:i.walkContext,fields:n}:null}function cge(t){let i={};for(let e in t.node)if(IA.call(t.node,e)){let n=t.node[e];if(!n.structure)throw new Error("Missed `structure` field in `"+e+"` node type definition");i[e]=lge(e,n)}return i}function uj(t,i){let e=t.fields.slice(),n=t.context,o=typeof n=="string";return i&&e.reverse(),function(r,a,c,m){let p;o&&(p=a[n],a[n]=r);for(let h of e){let g=r[h.name];if(!h.nullable||g){if(h.type==="list"){if(i?g.reduceRight(m,!1):g.reduce(m,!1))return!0}else if(c(g))return!0}}o&&(a[n]=p)}}function hj({StyleSheet:t,Atrule:i,Rule:e,Block:n,DeclarationList:o}){return{Atrule:{StyleSheet:t,Atrule:i,Rule:e,Block:n},Rule:{StyleSheet:t,Atrule:i,Rule:e,Block:n},Declaration:{StyleSheet:t,Atrule:i,Rule:e,Block:n,DeclarationList:o}}}function fj(t){let i=cge(t),e={},n={},o=Symbol("break-walk"),r=Symbol("skip-node");for(let p in i)IA.call(i,p)&&i[p]!==null&&(e[p]=uj(i[p],!1),n[p]=uj(i[p],!0));let a=hj(e),c=hj(n),m=function(p,h){function g(y,k,I){let E=M.call(S,y,k,I);return E===o?!0:E===r?!1:!!(_.hasOwnProperty(y.type)&&_[y.type](y,S,g,w)||C.call(S,y,k,I)===o)}let M=bb,C=bb,_=e,w=(y,k,I,E)=>y||g(k,I,E),S={break:o,skip:r,root:p,stylesheet:null,atrule:null,atrulePrelude:null,rule:null,selector:null,block:null,declaration:null,function:null};if(typeof h=="function")M=h;else if(h&&(M=mj(h.enter),C=mj(h.leave),h.reverse&&(_=n),h.visit)){if(a.hasOwnProperty(h.visit))_=h.reverse?c[h.visit]:a[h.visit];else if(!i.hasOwnProperty(h.visit))throw new Error("Bad value `"+h.visit+"` for `visit` option (should be: "+Object.keys(i).sort().join(", ")+")");M=pj(M,h.visit),C=pj(C,h.visit)}if(M===bb&&C===bb)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");g(p)};return m.break=o,m.skip=r,m.find=function(p,h){let g=null;return m(p,function(M,C,_){if(h.call(this,M,C,_))return g=M,o}),g},m.findLast=function(p,h){let g=null;return m(p,{reverse:!0,enter(M,C,_){if(h.call(this,M,C,_))return g=M,o}}),g},m.findAll=function(p,h){let g=[];return m(p,function(M,C,_){h.call(this,M,C,_)&&g.push(M)}),g},m}function dge(t){return t}function mge(t){let{min:i,max:e,comma:n}=t;return i===0&&e===0?n?"#?":"*":i===0&&e===1?"?":i===1&&e===0?n?"#":"+":i===1&&e===1?"":(n?"#":"")+(i===e?"{"+i+"}":"{"+i+","+(e!==0?e:"")+"}")}function pge(t){if(t.type==="Range")return" ["+(t.min===null?"-\u221E":t.min)+","+(t.max===null?"\u221E":t.max)+"]";throw new Error("Unknown node type `"+t.type+"`")}function uge(t,i,e,n){let o=t.combinator===" "||n?t.combinator:" "+t.combinator+" ",r=t.terms.map(a=>AA(a,i,e,n)).join(o);return t.explicit||e?(n||r[0]===","?"[":"[ ")+r+(n?"]":" ]"):r}function AA(t,i,e,n){let o;switch(t.type){case"Group":o=uge(t,i,e,n)+(t.disallowEmpty?"!":"");break;case"Multiplier":return AA(t.term,i,e,n)+i(mge(t),t);case"Type":o="<"+t.name+(t.opts?i(pge(t.opts),t.opts):"")+">";break;case"Property":o="<'"+t.name+"'>";break;case"Keyword":o=t.name;break;case"AtKeyword":o="@"+t.name;break;case"Function":o=t.name+"(";break;case"String":case"Token":o=t.value;break;case"Comma":o=",";break;default:throw new Error("Unknown node type `"+t.type+"`")}return i(o,t)}function gg(t,i){let e=dge,n=!1,o=!1;return typeof i=="function"?e=i:i&&(n=!!i.forceBraces,o=!!i.compact,typeof i.decorate=="function"&&(e=i.decorate)),AA(t,e,n,o)}var gj={offset:0,line:1,column:1};function hge(t,i){let e=t.tokens,n=t.longestMatch,o=n<e.length&&e[n].node||null,r=o!==i?o:null,a=0,c=0,m=0,p="",h,g;for(let M=0;M<e.length;M++){let C=e[M].value;M===n&&(c=C.length,a=p.length),r!==null&&e[M].node===r&&(M<=n?m++:m=0),p+=C}return n===e.length||m>1?(h=uw(r||i,"end")||Cb(gj,p),g=Cb(h)):(h=uw(r,"start")||Cb(uw(i,"start")||gj,p.slice(0,a)),g=uw(r,"end")||Cb(h,p.substr(a,c))),{css:p,mismatchOffset:a,mismatchLength:c,start:h,end:g}}function uw(t,i){let e=t&&t.loc&&t.loc[i];return e?"line"in e?Cb(e):e:null}function Cb({offset:t,line:i,column:e},n){let o={offset:t,line:i,column:e};if(n){let r=n.split(/\n|\r\n?|\f/);o.offset+=n.length,o.line+=r.length-1,o.column=r.length===1?o.column+n.length:r.pop().length+1}return o}var _g=function(t,i){let e=eh("SyntaxReferenceError",t+(i?" `"+i+"`":""));return e.reference=i,e},_j=function(t,i,e,n){let o=eh("SyntaxMatchError",t),{css:r,mismatchOffset:a,mismatchLength:c,start:m,end:p}=hge(n,e);return o.rawMessage=t,o.syntax=i?gg(i):"<generic>",o.css=r,o.mismatchOffset=a,o.mismatchLength=c,o.message=t+`
|
||
syntax: `+o.syntax+`
|
||
value: `+(r||"<empty string>")+`
|
||
--------`+new Array(o.mismatchOffset+1).join("-")+"^",Object.assign(o,m),o.loc={source:e&&e.loc&&e.loc.source||"<unknown>",start:m,end:p},o};var hw=new Map,vg=new Map,fw=45,gw=fge,OA=gge;function _w(t,i){return i=i||0,t.length-i>=2&&t.charCodeAt(i)===fw&&t.charCodeAt(i+1)===fw}function vj(t,i){if(i=i||0,t.length-i>=3&&t.charCodeAt(i)===fw&&t.charCodeAt(i+1)!==fw){let e=t.indexOf("-",i+2);if(e!==-1)return t.substring(i,e+1)}return""}function fge(t){if(hw.has(t))return hw.get(t);let i=t.toLowerCase(),e=hw.get(i);if(e===void 0){let n=_w(i,0),o=n?"":vj(i,0);e=Object.freeze({basename:i.substr(o.length),name:i,prefix:o,vendor:o,custom:n})}return hw.set(t,e),e}function gge(t){if(vg.has(t))return vg.get(t);let i=t,e=t[0];e==="/"?e=t[1]==="/"?"//":"/":e!=="_"&&e!=="*"&&e!=="$"&&e!=="#"&&e!=="+"&&e!=="&"&&(e="");let n=_w(i,e.length);if(!n&&(i=i.toLowerCase(),vg.has(i))){let c=vg.get(i);return vg.set(t,c),c}let o=n?"":vj(i,e.length),r=i.substr(0,e.length+o.length),a=Object.freeze({basename:i.substr(r.length),name:i.substr(e.length),hack:e,vendor:o,prefix:r,custom:n});return vg.set(t,a),a}var vw=["initial","inherit","unset","revert","revert-layer"];var yb=43,ld=45,NA=110,bg=!0,vge=!1;function FA(t,i){return t!==null&&t.type===9&&t.value.charCodeAt(0)===i}function xb(t,i,e){for(;t!==null&&(t.type===13||t.type===25);)t=e(++i);return i}function Sp(t,i,e,n){if(!t)return 0;let o=t.value.charCodeAt(i);if(o===yb||o===ld){if(e)return 0;i++}for(;i<t.value.length;i++)if(!nr(t.value.charCodeAt(i)))return 0;return n+1}function RA(t,i,e){let n=!1,o=xb(t,i,e);if(t=e(o),t===null)return i;if(t.type!==10)if(FA(t,yb)||FA(t,ld)){if(n=!0,o=xb(e(++o),o,e),t=e(o),t===null||t.type!==10)return 0}else return i;if(!n){let r=t.value.charCodeAt(0);if(r!==yb&&r!==ld)return 0}return Sp(t,n?0:1,n,o)}function LA(t,i){let e=0;if(!t)return 0;if(t.type===10)return Sp(t,0,vge,e);if(t.type===1&&t.value.charCodeAt(0)===ld){if(!Qd(t.value,1,NA))return 0;switch(t.value.length){case 2:return RA(i(++e),e,i);case 3:return t.value.charCodeAt(2)!==ld?0:(e=xb(i(++e),e,i),t=i(e),Sp(t,0,bg,e));default:return t.value.charCodeAt(2)!==ld?0:Sp(t,3,bg,e)}}else if(t.type===1||FA(t,yb)&&i(e+1).type===1){if(t.type!==1&&(t=i(++e)),t===null||!Qd(t.value,0,NA))return 0;switch(t.value.length){case 1:return RA(i(++e),e,i);case 2:return t.value.charCodeAt(1)!==ld?0:(e=xb(i(++e),e,i),t=i(e),Sp(t,0,bg,e));default:return t.value.charCodeAt(1)!==ld?0:Sp(t,2,bg,e)}}else if(t.type===12){let n=t.value.charCodeAt(0),o=n===yb||n===ld?1:0,r=o;for(;r<t.value.length&&nr(t.value.charCodeAt(r));r++);return r===o||!Qd(t.value,r,NA)?0:r+1===t.value.length?RA(i(++e),e,i):t.value.charCodeAt(r+1)!==ld?0:r+2===t.value.length?(e=xb(i(++e),e,i),t=i(e),Sp(t,0,bg,e)):Sp(t,r+2,bg,e)}return 0}var bge=43,bj=45,Cj=63,Cge=117;function BA(t,i){return t!==null&&t.type===9&&t.value.charCodeAt(0)===i}function xge(t,i){return t.value.charCodeAt(0)===i}function Sb(t,i,e){let n=0;for(let o=i;o<t.value.length;o++){let r=t.value.charCodeAt(o);if(r===bj&&e&&n!==0)return Sb(t,i+n+1,!1),6;if(!ks(r)||++n>6)return 0}return n}function bw(t,i,e){if(!t)return 0;for(;BA(e(i),Cj);){if(++t>6)return 0;i++}return i}function VA(t,i){let e=0;if(t===null||t.type!==1||!Qd(t.value,0,Cge)||(t=i(++e),t===null))return 0;if(BA(t,bge))return t=i(++e),t===null?0:t.type===1?bw(Sb(t,0,!0),++e,i):BA(t,Cj)?bw(1,++e,i):0;if(t.type===10){let n=Sb(t,1,!0);return n===0?0:(t=i(++e),t===null?e:t.type===12||t.type===10?!xge(t,bj)||!Sb(t,1,!1)?0:e+1:bw(n,e,i))}return t.type===12?bw(Sb(t,1,!0),++e,i):0}var yge=["calc(","-moz-calc(","-webkit-calc("],zA=new Map([[2,22],[21,22],[19,20],[23,24]]);function uc(t,i){return i<t.length?t.charCodeAt(i):0}function xj(t,i){return Yd(t,0,t.length,i)}function yj(t,i){for(let e=0;e<i.length;e++)if(xj(t,i[e]))return!0;return!1}function Sj(t,i){return i!==t.length-2?!1:uc(t,i)===92&&nr(uc(t,i+1))}function Cw(t,i,e){if(t&&t.type==="Range"){let n=Number(e!==void 0&&e!==i.length?i.substr(0,e):i);if(isNaN(n)||t.min!==null&&n<t.min&&typeof t.min!="string"||t.max!==null&&n>t.max&&typeof t.max!="string")return!0}return!1}function Sge(t,i){let e=0,n=[],o=0;e:do{switch(t.type){case 24:case 22:case 20:if(t.type!==e)break e;if(e=n.pop(),n.length===0){o++;break e}break;case 2:case 21:case 19:case 23:n.push(e),e=zA.get(t.type);break}o++}while(t=i(o));return o}function Fl(t){return function(i,e,n){return i===null?0:i.type===2&&yj(i.value,yge)?Sge(i,e):t(i,e,n)}}function Ho(t){return function(i){return i===null||i.type!==t?0:1}}function wge(t){if(t===null||t.type!==1)return 0;let i=t.value.toLowerCase();return yj(i,vw)||xj(i,"default")?0:1}function Mge(t){return t===null||t.type!==1||uc(t.value,0)!==45||uc(t.value,1)!==45?0:1}function kge(t){if(t===null||t.type!==4)return 0;let i=t.value.length;if(i!==4&&i!==5&&i!==7&&i!==9)return 0;for(let e=1;e<i;e++)if(!ks(uc(t.value,e)))return 0;return 1}function Tge(t){return t===null||t.type!==4||!dg(uc(t.value,1),uc(t.value,2),uc(t.value,3))?0:1}function Ege(t,i){if(!t)return 0;let e=0,n=[],o=0;e:do{switch(t.type){case 6:case 8:break e;case 24:case 22:case 20:if(t.type!==e)break e;e=n.pop();break;case 17:if(e===0)break e;break;case 9:if(e===0&&t.value==="!")break e;break;case 2:case 21:case 19:case 23:n.push(e),e=zA.get(t.type);break}o++}while(t=i(o));return o}function Dge(t,i){if(!t)return 0;let e=0,n=[],o=0;e:do{switch(t.type){case 6:case 8:break e;case 24:case 22:case 20:if(t.type!==e)break e;e=n.pop();break;case 2:case 21:case 19:case 23:n.push(e),e=zA.get(t.type);break}o++}while(t=i(o));return o}function Jd(t){return t&&(t=new Set(t)),function(i,e,n){if(i===null||i.type!==12)return 0;let o=Ju(i.value,0);if(t!==null){let r=i.value.indexOf("\\",o),a=r===-1||!Sj(i.value,r)?i.value.substr(o):i.value.substring(o,r);if(t.has(a.toLowerCase())===!1)return 0}return Cw(n,i.value,o)?0:1}}function Pge(t,i,e){return t===null||t.type!==11||Cw(e,t.value,t.value.length-1)?0:1}function wj(t){return typeof t!="function"&&(t=function(){return 0}),function(i,e,n){return i!==null&&i.type===10&&Number(i.value)===0?1:t(i,e,n)}}function Ige(t,i,e){if(t===null)return 0;let n=Ju(t.value,0);return!(n===t.value.length)&&!Sj(t.value,n)||Cw(e,t.value,n)?0:1}function Age(t,i,e){if(t===null||t.type!==10)return 0;let n=uc(t.value,0)===43||uc(t.value,0)===45?1:0;for(;n<t.value.length;n++)if(!nr(uc(t.value,n)))return 0;return Cw(e,t.value,n)?0:1}var Oge={"ident-token":Ho(1),"function-token":Ho(2),"at-keyword-token":Ho(3),"hash-token":Ho(4),"string-token":Ho(5),"bad-string-token":Ho(6),"url-token":Ho(7),"bad-url-token":Ho(8),"delim-token":Ho(9),"number-token":Ho(10),"percentage-token":Ho(11),"dimension-token":Ho(12),"whitespace-token":Ho(13),"CDO-token":Ho(14),"CDC-token":Ho(15),"colon-token":Ho(16),"semicolon-token":Ho(17),"comma-token":Ho(18),"[-token":Ho(19),"]-token":Ho(20),"(-token":Ho(21),")-token":Ho(22),"{-token":Ho(23),"}-token":Ho(24)},Nge={string:Ho(5),ident:Ho(1),percentage:Fl(Pge),zero:wj(),number:Fl(Ige),integer:Fl(Age),"custom-ident":wge,"custom-property-name":Mge,"hex-color":kge,"id-selector":Tge,"an-plus-b":LA,urange:VA,"declaration-value":Ege,"any-value":Dge};function Rge(t){let{angle:i,decibel:e,frequency:n,flex:o,length:r,resolution:a,semitones:c,time:m}=t||{};return{dimension:Fl(Jd(null)),angle:Fl(Jd(i)),decibel:Fl(Jd(e)),frequency:Fl(Jd(n)),flex:Fl(Jd(o)),length:Fl(wj(Jd(r))),resolution:Fl(Jd(a)),semitones:Fl(Jd(c)),time:Fl(Jd(m))}}function Mj(t){return H(H(H({},Oge),Nge),Rge(t))}var xw={};On(xw,{angle:()=>Lge,decibel:()=>$ge,flex:()=>jge,frequency:()=>Vge,length:()=>Fge,resolution:()=>zge,semitones:()=>Hge,time:()=>Bge});var Fge=["cm","mm","q","in","pt","pc","px","em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh","vw","svw","lvw","dvw","vh","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","cqw","cqh","cqi","cqb","cqmin","cqmax"],Lge=["deg","grad","rad","turn"],Bge=["s","ms"],Vge=["hz","khz"],zge=["dpi","dpcm","dppx","x"],jge=["fr"],$ge=["db"],Hge=["st"];function jA(t,i,e){return Object.assign(eh("SyntaxError",t),{input:i,offset:e,rawMessage:t,message:t+`
|
||
`+i+`
|
||
--`+new Array((e||i.length)+1).join("-")+"^"})}var Uge=9,Gge=10,Wge=12,qge=13,Xge=32,yw=class{constructor(i){this.str=i,this.pos=0}charCodeAt(i){return i<this.str.length?this.str.charCodeAt(i):0}charCode(){return this.charCodeAt(this.pos)}nextCharCode(){return this.charCodeAt(this.pos+1)}nextNonWsCode(i){return this.charCodeAt(this.findWsEnd(i))}findWsEnd(i){for(;i<this.str.length;i++){let e=this.str.charCodeAt(i);if(e!==qge&&e!==Gge&&e!==Wge&&e!==Xge&&e!==Uge)break}return i}substringToPos(i){return this.str.substring(this.pos,this.pos=i)}eat(i){this.charCode()!==i&&this.error("Expect `"+String.fromCharCode(i)+"`"),this.pos++}peek(){return this.pos<this.str.length?this.str.charAt(this.pos++):""}error(i){throw new jA(i,this.str,this.pos)}};var Qge=9,Yge=10,Kge=12,Zge=13,Jge=32,Oj=33,UA=35,kj=38,Sw=39,Nj=40,e_e=41,Rj=42,GA=43,WA=44,Tj=45,qA=60,Fj=62,HA=63,t_e=64,Tw=91,XA=93,ww=123,Ej=124,Dj=125,Pj=8734,wb=new Uint8Array(128).map((t,i)=>/[a-zA-Z0-9\-]/.test(String.fromCharCode(i))?1:0),Ij={" ":1,"&&":2,"||":3,"|":4};function Mw(t){return t.substringToPos(t.findWsEnd(t.pos))}function Cg(t){let i=t.pos;for(;i<t.str.length;i++){let e=t.str.charCodeAt(i);if(e>=128||wb[e]===0)break}return t.pos===i&&t.error("Expect a keyword"),t.substringToPos(i)}function kw(t){let i=t.pos;for(;i<t.str.length;i++){let e=t.str.charCodeAt(i);if(e<48||e>57)break}return t.pos===i&&t.error("Expect a number"),t.substringToPos(i)}function n_e(t){let i=t.str.indexOf("'",t.pos+1);return i===-1&&(t.pos=t.str.length,t.error("Expect an apostrophe")),t.substringToPos(i+1)}function Aj(t){let i=null,e=null;return t.eat(ww),i=kw(t),t.charCode()===WA?(t.pos++,t.charCode()!==Dj&&(e=kw(t))):e=i,t.eat(Dj),{min:Number(i),max:e?Number(e):0}}function i_e(t){let i=null,e=!1;switch(t.charCode()){case Rj:t.pos++,i={min:0,max:0};break;case GA:t.pos++,i={min:1,max:0};break;case HA:t.pos++,i={min:0,max:1};break;case UA:t.pos++,e=!0,t.charCode()===ww?i=Aj(t):t.charCode()===HA?(t.pos++,i={min:0,max:0}):i={min:1,max:0};break;case ww:i=Aj(t);break;default:return null}return{type:"Multiplier",comma:e,min:i.min,max:i.max,term:null}}function xg(t,i){let e=i_e(t);return e!==null?(e.term=i,t.charCode()===UA&&t.charCodeAt(t.pos-1)===GA?xg(t,e):e):i}function $A(t){let i=t.peek();return i===""?null:{type:"Token",value:i}}function o_e(t){let i;return t.eat(qA),t.eat(Sw),i=Cg(t),t.eat(Sw),t.eat(Fj),xg(t,{type:"Property",name:i})}function r_e(t){let i=null,e=null,n=1;return t.eat(Tw),t.charCode()===Tj&&(t.peek(),n=-1),n==-1&&t.charCode()===Pj?t.peek():(i=n*Number(kw(t)),wb[t.charCode()]!==0&&(i+=Cg(t))),Mw(t),t.eat(WA),Mw(t),t.charCode()===Pj?t.peek():(n=1,t.charCode()===Tj&&(t.peek(),n=-1),e=n*Number(kw(t)),wb[t.charCode()]!==0&&(e+=Cg(t))),t.eat(XA),{type:"Range",min:i,max:e}}function a_e(t){let i,e=null;return t.eat(qA),i=Cg(t),t.charCode()===Nj&&t.nextCharCode()===e_e&&(t.pos+=2,i+="()"),t.charCodeAt(t.findWsEnd(t.pos))===Tw&&(Mw(t),e=r_e(t)),t.eat(Fj),xg(t,{type:"Type",name:i,opts:e})}function s_e(t){let i=Cg(t);return t.charCode()===Nj?(t.pos++,{type:"Function",name:i}):xg(t,{type:"Keyword",name:i})}function l_e(t,i){function e(o,r){return{type:"Group",terms:o,combinator:r,disallowEmpty:!1,explicit:!1}}let n;for(i=Object.keys(i).sort((o,r)=>Ij[o]-Ij[r]);i.length>0;){n=i.shift();let o=0,r=0;for(;o<t.length;o++){let a=t[o];a.type==="Combinator"&&(a.value===n?(r===-1&&(r=o-1),t.splice(o,1),o--):(r!==-1&&o-r>1&&(t.splice(r,o-r,e(t.slice(r,o),n)),o=r+1),r=-1))}r!==-1&&i.length&&t.splice(r,o-r,e(t.slice(r,o),n))}return n}function Lj(t){let i=[],e={},n,o=null,r=t.pos;for(;n=d_e(t);)n.type!=="Spaces"&&(n.type==="Combinator"?((o===null||o.type==="Combinator")&&(t.pos=r,t.error("Unexpected combinator")),e[n.value]=!0):o!==null&&o.type!=="Combinator"&&(e[" "]=!0,i.push({type:"Combinator",value:" "})),i.push(n),o=n,r=t.pos);return o!==null&&o.type==="Combinator"&&(t.pos-=r,t.error("Unexpected combinator")),{type:"Group",terms:i,combinator:l_e(i,e)||" ",disallowEmpty:!1,explicit:!1}}function c_e(t){let i;return t.eat(Tw),i=Lj(t),t.eat(XA),i.explicit=!0,t.charCode()===Oj&&(t.pos++,i.disallowEmpty=!0),i}function d_e(t){let i=t.charCode();if(i<128&&wb[i]===1)return s_e(t);switch(i){case XA:break;case Tw:return xg(t,c_e(t));case qA:return t.nextCharCode()===Sw?o_e(t):a_e(t);case Ej:return{type:"Combinator",value:t.substringToPos(t.pos+(t.nextCharCode()===Ej?2:1))};case kj:return t.pos++,t.eat(kj),{type:"Combinator",value:"&&"};case WA:return t.pos++,{type:"Comma"};case Sw:return xg(t,{type:"String",value:n_e(t)});case Jge:case Qge:case Yge:case Zge:case Kge:return{type:"Spaces",value:Mw(t)};case t_e:return i=t.nextCharCode(),i<128&&wb[i]===1?(t.pos++,{type:"AtKeyword",name:Cg(t)}):$A(t);case Rj:case GA:case HA:case UA:case Oj:break;case ww:if(i=t.nextCharCode(),i<48||i>57)return $A(t);break;default:return $A(t)}}function Mb(t){let i=new yw(t),e=Lj(i);return i.pos!==t.length&&i.error("Unexpected input"),e.terms.length===1&&e.terms[0].type==="Group"?e.terms[0]:e}var kb=function(){};function Bj(t){return typeof t=="function"?t:kb}function QA(t,i,e){function n(a){switch(o.call(e,a),a.type){case"Group":a.terms.forEach(n);break;case"Multiplier":n(a.term);break;case"Type":case"Property":case"Keyword":case"AtKeyword":case"Function":case"String":case"Token":case"Comma":break;default:throw new Error("Unknown type: "+a.type)}r.call(e,a)}let o=kb,r=kb;if(typeof i=="function"?o=i:i&&(o=Bj(i.enter),r=Bj(i.leave)),o===kb&&r===kb)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");n(t,e)}var p_e={decorator(t){let i=[],e=null;return tt(H({},t),{node(n){let o=e;e=n,t.node.call(this,n),e=o},emit(n,o,r){i.push({type:o,value:n,node:r?null:e})},result(){return i}})}};function u_e(t){let i=[];return yp(t,(e,n,o)=>i.push({type:e,value:t.slice(n,o),node:null})),i}function Vj(t,i){return typeof t=="string"?u_e(t):i.generate(t,p_e)}var eo={type:"Match"},yo={type:"Mismatch"},Ew={type:"DisallowEmpty"},h_e=40,f_e=41;function Ba(t,i,e){return i===eo&&e===yo||t===eo&&i===eo&&e===eo?t:(t.type==="If"&&t.else===yo&&i===eo&&(i=t.then,t=t.match),{type:"If",match:t,then:i,else:e})}function jj(t){return t.length>2&&t.charCodeAt(t.length-2)===h_e&&t.charCodeAt(t.length-1)===f_e}function zj(t){return t.type==="Keyword"||t.type==="AtKeyword"||t.type==="Function"||t.type==="Type"&&jj(t.name)}function YA(t,i,e){switch(t){case" ":{let n=eo;for(let o=i.length-1;o>=0;o--){let r=i[o];n=Ba(r,n,yo)}return n}case"|":{let n=yo,o=null;for(let r=i.length-1;r>=0;r--){let a=i[r];if(zj(a)&&(o===null&&r>0&&zj(i[r-1])&&(o=Object.create(null),n=Ba({type:"Enum",map:o},eo,n)),o!==null)){let c=(jj(a.name)?a.name.slice(0,-1):a.name).toLowerCase();if(!(c in o)){o[c]=a;continue}}o=null,n=Ba(a,eo,n)}return n}case"&&":{if(i.length>5)return{type:"MatchOnce",terms:i,all:!0};let n=yo;for(let o=i.length-1;o>=0;o--){let r=i[o],a;i.length>1?a=YA(t,i.filter(function(c){return c!==r}),!1):a=eo,n=Ba(r,a,n)}return n}case"||":{if(i.length>5)return{type:"MatchOnce",terms:i,all:!1};let n=e?eo:yo;for(let o=i.length-1;o>=0;o--){let r=i[o],a;i.length>1?a=YA(t,i.filter(function(c){return c!==r}),!0):a=eo,n=Ba(r,a,n)}return n}}}function g_e(t){let i=eo,e=KA(t.term);if(t.max===0)e=Ba(e,Ew,yo),i=Ba(e,null,yo),i.then=Ba(eo,eo,i),t.comma&&(i.then.else=Ba({type:"Comma",syntax:t},i,yo));else for(let n=t.min||1;n<=t.max;n++)t.comma&&i!==eo&&(i=Ba({type:"Comma",syntax:t},i,yo)),i=Ba(e,Ba(eo,eo,i),yo);if(t.min===0)i=Ba(eo,eo,i);else for(let n=0;n<t.min-1;n++)t.comma&&i!==eo&&(i=Ba({type:"Comma",syntax:t},i,yo)),i=Ba(e,i,yo);return i}function KA(t){if(typeof t=="function")return{type:"Generic",fn:t};switch(t.type){case"Group":{let i=YA(t.combinator,t.terms.map(KA),!1);return t.disallowEmpty&&(i=Ba(i,Ew,yo)),i}case"Multiplier":return g_e(t);case"Type":case"Property":return{type:t.type,name:t.name,syntax:t};case"Keyword":return{type:t.type,name:t.name.toLowerCase(),syntax:t};case"AtKeyword":return{type:t.type,name:"@"+t.name.toLowerCase(),syntax:t};case"Function":return{type:t.type,name:t.name.toLowerCase()+"(",syntax:t};case"String":return t.value.length===3?{type:"Token",value:t.value.charAt(1),syntax:t}:{type:t.type,value:t.value.substr(1,t.value.length-2).replace(/\\'/g,"'"),syntax:t};case"Token":return{type:t.type,value:t.value,syntax:t};case"Comma":return{type:t.type,syntax:t};default:throw new Error("Unknown node type:",t.type)}}function Dw(t,i){return typeof t=="string"&&(t=Mb(t)),{type:"MatchGraph",match:KA(t),syntax:i||null,source:t}}var{hasOwnProperty:$j}=Object.prototype,__e=0,v_e=1,JA=2,qj=3,Hj="Match",b_e="Mismatch",C_e="Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)",Uj=15e3,x_e=0;function y_e(t){let i=null,e=null,n=t;for(;n!==null;)e=n.prev,n.prev=i,i=n,n=e;return i}function ZA(t,i){if(t.length!==i.length)return!1;for(let e=0;e<t.length;e++){let n=i.charCodeAt(e),o=t.charCodeAt(e);if(o>=65&&o<=90&&(o=o|32),o!==n)return!1}return!0}function S_e(t){return t.type!==9?!1:t.value!=="?"}function Gj(t){return t===null?!0:t.type===18||t.type===2||t.type===21||t.type===19||t.type===23||S_e(t)}function Wj(t){return t===null?!0:t.type===22||t.type===20||t.type===24||t.type===9&&t.value==="/"}function w_e(t,i,e){function n(){do k++,y=k<t.length?t[k]:null;while(y!==null&&(y.type===13||y.type===25))}function o(N){let T=k+N;return T<t.length?t[T]:null}function r(N,T){return{nextState:N,matchStack:E,syntaxStack:g,thenStack:M,tokenIndex:k,prev:T}}function a(N){M={nextState:N,matchStack:E,syntaxStack:g,prev:M}}function c(N){C=r(N,C)}function m(){E={type:v_e,syntax:i.syntax,token:y,prev:E},n(),_=null,k>I&&(I=k)}function p(){g={syntax:i.syntax,opts:i.syntax.opts||g!==null&&g.opts||null,prev:g},E={type:JA,syntax:i.syntax,token:E.token,prev:E}}function h(){E.type===JA?E=E.prev:E={type:qj,syntax:g.syntax,token:E.token,prev:E},g=g.prev}let g=null,M=null,C=null,_=null,w=0,S=null,y=null,k=-1,I=0,E={type:__e,syntax:null,token:null,prev:null};for(n();S===null&&++w<Uj;)switch(i.type){case"Match":if(M===null){if(y!==null&&(k!==t.length-1||y.value!=="\\0"&&y.value!=="\\9")){i=yo;break}S=Hj;break}if(i=M.nextState,i===Ew)if(M.matchStack===E){i=yo;break}else i=eo;for(;M.syntaxStack!==g;)h();M=M.prev;break;case"Mismatch":if(_!==null&&_!==!1)(C===null||k>C.tokenIndex)&&(C=_,_=!1);else if(C===null){S=b_e;break}i=C.nextState,M=C.thenStack,g=C.syntaxStack,E=C.matchStack,k=C.tokenIndex,y=k<t.length?t[k]:null,C=C.prev;break;case"MatchGraph":i=i.match;break;case"If":i.else!==yo&&c(i.else),i.then!==eo&&a(i.then),i=i.match;break;case"MatchOnce":i={type:"MatchOnceBuffer",syntax:i,index:0,mask:0};break;case"MatchOnceBuffer":{let R=i.syntax.terms;if(i.index===R.length){if(i.mask===0||i.syntax.all){i=yo;break}i=eo;break}if(i.mask===(1<<R.length)-1){i=eo;break}for(;i.index<R.length;i.index++){let W=1<<i.index;if((i.mask&W)===0){c(i),a({type:"AddMatchOnce",syntax:i.syntax,mask:i.mask|W}),i=R[i.index++];break}}break}case"AddMatchOnce":i={type:"MatchOnceBuffer",syntax:i.syntax,index:0,mask:i.mask};break;case"Enum":if(y!==null){let R=y.value.toLowerCase();if(R.indexOf("\\")!==-1&&(R=R.replace(/\\[09].*$/,"")),$j.call(i.map,R)){i=i.map[R];break}}i=yo;break;case"Generic":{let R=g!==null?g.opts:null,W=k+Math.floor(i.fn(y,o,R));if(!isNaN(W)&&W>k){for(;k<W;)m();i=eo}else i=yo;break}case"Type":case"Property":{let R=i.type==="Type"?"types":"properties",W=$j.call(e,R)?e[R][i.name]:null;if(!W||!W.match)throw new Error("Bad syntax reference: "+(i.type==="Type"?"<"+i.name+">":"<'"+i.name+"'>"));if(_!==!1&&y!==null&&i.type==="Type"&&(i.name==="custom-ident"&&y.type===1||i.name==="length"&&y.value==="0")){_===null&&(_=r(i,C)),i=yo;break}p(),i=W.match;break}case"Keyword":{let R=i.name;if(y!==null){let W=y.value;if(W.indexOf("\\")!==-1&&(W=W.replace(/\\[09].*$/,"")),ZA(W,R)){m(),i=eo;break}}i=yo;break}case"AtKeyword":case"Function":if(y!==null&&ZA(y.value,i.name)){m(),i=eo;break}i=yo;break;case"Token":if(y!==null&&y.value===i.value){m(),i=eo;break}i=yo;break;case"Comma":y!==null&&y.type===18?Gj(E.token)?i=yo:(m(),i=Wj(y)?yo:eo):i=Gj(E.token)||Wj(y)?eo:yo;break;case"String":let N="",T=k;for(;T<t.length&&N.length<i.value.length;T++)N+=t[T].value;if(ZA(N,i.value)){for(;k<T;)m();i=eo}else i=yo;break;default:throw new Error("Unknown node type: "+i.type)}switch(x_e+=w,S){case null:console.warn("[csstree-match] BREAK after "+Uj+" iterations"),S=C_e,E=null;break;case Hj:for(;g!==null;)h();break;default:E=null}return{tokens:t,reason:S,iterations:w,match:E,longestMatch:I}}function eO(t,i,e){let n=w_e(t,i,e||{});if(n.match===null)return n;let o=n.match,r=n.match={syntax:i.syntax||null,match:[]},a=[r];for(o=y_e(o).prev;o!==null;){switch(o.type){case JA:r.match.push(r={syntax:o.syntax,match:[]}),a.push(r);break;case qj:a.pop(),r=a[a.length-1];break;default:r.match.push({syntax:o.syntax||null,token:o.token.value,node:o.token.node})}o=o.prev}return n}var nO={};On(nO,{getTrace:()=>Xj,isKeyword:()=>T_e,isProperty:()=>k_e,isType:()=>M_e});function Xj(t){function i(o){return o===null?!1:o.type==="Type"||o.type==="Property"||o.type==="Keyword"}function e(o){if(Array.isArray(o.match)){for(let r=0;r<o.match.length;r++)if(e(o.match[r]))return i(o.syntax)&&n.unshift(o.syntax),!0}else if(o.node===t)return n=i(o.syntax)?[o.syntax]:[],!0;return!1}let n=null;return this.matched!==null&&e(this.matched),n}function M_e(t,i){return tO(this,t,e=>e.type==="Type"&&e.name===i)}function k_e(t,i){return tO(this,t,e=>e.type==="Property"&&e.name===i)}function T_e(t){return tO(this,t,i=>i.type==="Keyword")}function tO(t,i,e){let n=Xj.call(t,i);return n===null?!1:n.some(e)}function Qj(t){return"node"in t?t.node:Qj(t.match[0])}function Yj(t){return"node"in t?t.node:Yj(t.match[t.match.length-1])}function iO(t,i,e,n,o){function r(c){if(c.syntax!==null&&c.syntax.type===n&&c.syntax.name===o){let m=Qj(c),p=Yj(c);t.syntax.walk(i,function(h,g,M){if(h===m){let C=new es;do{if(C.appendData(g.data),g.data===p)break;g=g.next}while(g!==null);a.push({parent:M,nodes:C})}})}Array.isArray(c.match)&&c.match.forEach(r)}let a=[];return e.matched!==null&&r(e.matched),a}var{hasOwnProperty:Tb}=Object.prototype;function oO(t){return typeof t=="number"&&isFinite(t)&&Math.floor(t)===t&&t>=0}function Kj(t){return!!t&&oO(t.offset)&&oO(t.line)&&oO(t.column)}function E_e(t,i){return function(n,o){if(!n||n.constructor!==Object)return o(n,"Type of node should be an Object");for(let r in n){let a=!0;if(Tb.call(n,r)!==!1){if(r==="type")n.type!==t&&o(n,"Wrong node type `"+n.type+"`, expected `"+t+"`");else if(r==="loc"){if(n.loc===null)continue;if(n.loc&&n.loc.constructor===Object)if(typeof n.loc.source!="string")r+=".source";else if(!Kj(n.loc.start))r+=".start";else if(!Kj(n.loc.end))r+=".end";else continue;a=!1}else if(i.hasOwnProperty(r)){a=!1;for(let c=0;!a&&c<i[r].length;c++){let m=i[r][c];switch(m){case String:a=typeof n[r]=="string";break;case Boolean:a=typeof n[r]=="boolean";break;case null:a=n[r]===null;break;default:typeof m=="string"?a=n[r]&&n[r].type===m:Array.isArray(m)&&(a=n[r]instanceof es)}}}else o(n,"Unknown field `"+r+"` for "+t+" node type");a||o(n,"Bad value for `"+t+"."+r+"`")}}for(let r in i)Tb.call(i,r)&&Tb.call(n,r)===!1&&o(n,"Field `"+t+"."+r+"` is missed")}}function D_e(t,i){let e=i.structure,n={type:String,loc:!0},o={type:'"'+t+'"'};for(let r in e){if(Tb.call(e,r)===!1)continue;let a=[],c=n[r]=Array.isArray(e[r])?e[r].slice():[e[r]];for(let m=0;m<c.length;m++){let p=c[m];if(p===String||p===Boolean)a.push(p.name);else if(p===null)a.push("null");else if(typeof p=="string")a.push("<"+p+">");else if(Array.isArray(p))a.push("List");else throw new Error("Wrong value `"+p+"` in `"+t+"."+r+"` structure definition")}o[r]=a.join(" | ")}return{docs:o,check:E_e(t,n)}}function Zj(t){let i={};if(t.node){for(let e in t.node)if(Tb.call(t.node,e)){let n=t.node[e];if(n.structure)i[e]=D_e(e,n);else throw new Error("Missed `structure` field in `"+e+"` node type definition")}}return i}var P_e=Dw(vw.join(" | "));function rO(t,i,e){let n={};for(let o in t)t[o].syntax&&(n[o]=e?t[o].syntax:gg(t[o].syntax,{compact:i}));return n}function I_e(t,i,e){let n={};for(let[o,r]of Object.entries(t))n[o]={prelude:r.prelude&&(e?r.prelude.syntax:gg(r.prelude.syntax,{compact:i})),descriptors:r.descriptors&&rO(r.descriptors,i,e)};return n}function A_e(t){for(let i=0;i<t.length;i++)if(t[i].value.toLowerCase()==="var(")return!0;return!1}function hc(t,i,e){return H({matched:t,iterations:e,error:i},nO)}function yg(t,i,e,n){let o=Vj(e,t.syntax),r;return A_e(o)?hc(null,new Error("Matching for a tree with var() is not supported")):(n&&(r=eO(o,t.cssWideKeywordsSyntax,t)),(!n||!r.match)&&(r=eO(o,i.match,t),!r.match)?hc(null,new _j(r.reason,i.syntax,e,r),r.iterations):hc(r.match,null,r.iterations))}var Sg=class{constructor(i,e,n){if(this.cssWideKeywordsSyntax=P_e,this.syntax=e,this.generic=!1,this.units=H({},xw),this.atrules=Object.create(null),this.properties=Object.create(null),this.types=Object.create(null),this.structure=n||Zj(i),i){if(i.units)for(let o of Object.keys(xw))Array.isArray(i.units[o])&&(this.units[o]=i.units[o]);if(i.types)for(let o in i.types)this.addType_(o,i.types[o]);if(i.generic){this.generic=!0;for(let[o,r]of Object.entries(Mj(this.units)))this.addType_(o,r)}if(i.atrules)for(let o in i.atrules)this.addAtrule_(o,i.atrules[o]);if(i.properties)for(let o in i.properties)this.addProperty_(o,i.properties[o])}}checkStructure(i){function e(r,a){o.push({node:r,message:a})}let n=this.structure,o=[];return this.syntax.walk(i,function(r){n.hasOwnProperty(r.type)?n[r.type].check(r,e):e(r,"Unknown node type `"+r.type+"`")}),o.length?o:!1}createDescriptor(i,e,n,o=null){let r={type:e,name:n},a={type:e,name:n,parent:o,serializable:typeof i=="string"||i&&typeof i.type=="string",syntax:null,match:null};return typeof i=="function"?a.match=Dw(i,r):(typeof i=="string"?Object.defineProperty(a,"syntax",{get(){return Object.defineProperty(a,"syntax",{value:Mb(i)}),a.syntax}}):a.syntax=i,Object.defineProperty(a,"match",{get(){return Object.defineProperty(a,"match",{value:Dw(a.syntax,r)}),a.match}})),a}addAtrule_(i,e){e&&(this.atrules[i]={type:"Atrule",name:i,prelude:e.prelude?this.createDescriptor(e.prelude,"AtrulePrelude",i):null,descriptors:e.descriptors?Object.keys(e.descriptors).reduce((n,o)=>(n[o]=this.createDescriptor(e.descriptors[o],"AtruleDescriptor",o,i),n),Object.create(null)):null})}addProperty_(i,e){e&&(this.properties[i]=this.createDescriptor(e,"Property",i))}addType_(i,e){e&&(this.types[i]=this.createDescriptor(e,"Type",i))}checkAtruleName(i){if(!this.getAtrule(i))return new _g("Unknown at-rule","@"+i)}checkAtrulePrelude(i,e){let n=this.checkAtruleName(i);if(n)return n;let o=this.getAtrule(i);if(!o.prelude&&e)return new SyntaxError("At-rule `@"+i+"` should not contain a prelude");if(o.prelude&&!e&&!yg(this,o.prelude,"",!1).matched)return new SyntaxError("At-rule `@"+i+"` should contain a prelude")}checkAtruleDescriptorName(i,e){let n=this.checkAtruleName(i);if(n)return n;let o=this.getAtrule(i),r=gw(e);if(!o.descriptors)return new SyntaxError("At-rule `@"+i+"` has no known descriptors");if(!o.descriptors[r.name]&&!o.descriptors[r.basename])return new _g("Unknown at-rule descriptor",e)}checkPropertyName(i){if(!this.getProperty(i))return new _g("Unknown property",i)}matchAtrulePrelude(i,e){let n=this.checkAtrulePrelude(i,e);if(n)return hc(null,n);let o=this.getAtrule(i);return o.prelude?yg(this,o.prelude,e||"",!1):hc(null,null)}matchAtruleDescriptor(i,e,n){let o=this.checkAtruleDescriptorName(i,e);if(o)return hc(null,o);let r=this.getAtrule(i),a=gw(e);return yg(this,r.descriptors[a.name]||r.descriptors[a.basename],n,!1)}matchDeclaration(i){return i.type!=="Declaration"?hc(null,new Error("Not a Declaration node")):this.matchProperty(i.property,i.value)}matchProperty(i,e){if(OA(i).custom)return hc(null,new Error("Lexer matching doesn't applicable for custom properties"));let n=this.checkPropertyName(i);return n?hc(null,n):yg(this,this.getProperty(i),e,!0)}matchType(i,e){let n=this.getType(i);return n?yg(this,n,e,!1):hc(null,new _g("Unknown type",i))}match(i,e){return typeof i!="string"&&(!i||!i.type)?hc(null,new _g("Bad syntax")):((typeof i=="string"||!i.match)&&(i=this.createDescriptor(i,"Type","anonymous")),yg(this,i,e,!1))}findValueFragments(i,e,n,o){return iO(this,e,this.matchProperty(i,e),n,o)}findDeclarationValueFragments(i,e,n){return iO(this,i.value,this.matchDeclaration(i),e,n)}findAllFragments(i,e,n){let o=[];return this.syntax.walk(i,{visit:"Declaration",enter:r=>{o.push.apply(o,this.findDeclarationValueFragments(r,e,n))}}),o}getAtrule(i,e=!0){let n=gw(i);return(n.vendor&&e?this.atrules[n.name]||this.atrules[n.basename]:this.atrules[n.name])||null}getAtrulePrelude(i,e=!0){let n=this.getAtrule(i,e);return n&&n.prelude||null}getAtruleDescriptor(i,e){return this.atrules.hasOwnProperty(i)&&this.atrules.declarators&&this.atrules[i].declarators[e]||null}getProperty(i,e=!0){let n=OA(i);return(n.vendor&&e?this.properties[n.name]||this.properties[n.basename]:this.properties[n.name])||null}getType(i){return hasOwnProperty.call(this.types,i)?this.types[i]:null}validate(){function i(o,r,a,c){if(a.has(r))return a.get(r);a.set(r,!1),c.syntax!==null&&QA(c.syntax,function(m){if(m.type!=="Type"&&m.type!=="Property")return;let p=m.type==="Type"?o.types:o.properties,h=m.type==="Type"?e:n;(!hasOwnProperty.call(p,m.name)||i(o,m.name,h,p[m.name]))&&a.set(r,!0)},this)}let e=new Map,n=new Map;for(let o in this.types)i(this,o,e,this.types[o]);for(let o in this.properties)i(this,o,n,this.properties[o]);return e=[...e.keys()].filter(o=>e.get(o)),n=[...n.keys()].filter(o=>n.get(o)),e.length||n.length?{types:e,properties:n}:null}dump(i,e){return{generic:this.generic,units:this.units,types:rO(this.types,!e,i),properties:rO(this.properties,!e,i),atrules:I_e(this.atrules,!e,i)}}toString(){return JSON.stringify(this.dump())}};function aO(t,i){return typeof i=="string"&&/^\s*\|/.test(i)?typeof t=="string"?t+i:i.replace(/^\s*\|\s*/,""):i||null}function Jj(t,i){let e=Object.create(null);for(let[n,o]of Object.entries(t))if(o){e[n]={};for(let r of Object.keys(o))i.includes(r)&&(e[n][r]=o[r])}return e}function Eb(t,i){let e=H({},t);for(let[n,o]of Object.entries(i))switch(n){case"generic":e[n]=!!o;break;case"units":e[n]=H({},t[n]);for(let[r,a]of Object.entries(o))e[n][r]=Array.isArray(a)?a:[];break;case"atrules":e[n]=H({},t[n]);for(let[r,a]of Object.entries(o)){let c=e[n][r]||{},m=e[n][r]={prelude:c.prelude||null,descriptors:H({},c.descriptors)};if(a){m.prelude=a.prelude?aO(m.prelude,a.prelude):m.prelude||null;for(let[p,h]of Object.entries(a.descriptors||{}))m.descriptors[p]=h?aO(m.descriptors[p],h):null;Object.keys(m.descriptors).length||(m.descriptors=null)}}break;case"types":case"properties":e[n]=H({},t[n]);for(let[r,a]of Object.entries(o))e[n][r]=aO(e[n][r],a);break;case"scope":e[n]=H({},t[n]);for(let[r,a]of Object.entries(o))e[n][r]=H(H({},e[n][r]),a);break;case"parseContext":e[n]=H(H({},t[n]),o);break;case"atrule":case"pseudo":e[n]=H(H({},t[n]),Jj(o,["parse"]));break;case"node":e[n]=H(H({},t[n]),Jj(o,["name","structure","parse","generate","walkContext"]));break}return e}function e9(t){let i=Bz(t),e=fj(t),n=cj(t),{fromPlainObject:o,toPlainObject:r}=dj(e),a={lexer:null,createLexer:c=>new Sg(c,a,a.lexer.structure),tokenize:yp,parse:i,generate:n,walk:e,find:e.find,findLast:e.findLast,findAll:e.findAll,fromPlainObject:o,toPlainObject:r,fork(c){let m=Eb({},t);return e9(typeof c=="function"?c(m,Object.assign):Eb(m,c))}};return a.lexer=new Sg({generic:!0,units:t.units,types:t.types,atrules:t.atrules,properties:t.properties,node:t.node},a),a}var sO=t=>e9(Eb({},t));var t9={generic:!0,units:{angle:["deg","grad","rad","turn"],decibel:["db"],flex:["fr"],frequency:["hz","khz"],length:["cm","mm","q","in","pt","pc","px","em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh","vw","svw","lvw","dvw","vh","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","cqw","cqh","cqi","cqb","cqmin","cqmax"],resolution:["dpi","dpcm","dppx","x"],semitones:["st"],time:["s","ms"]},types:{"abs()":"abs( <calc-sum> )","absolute-size":"xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large","acos()":"acos( <calc-sum> )","alpha-value":"<number>|<percentage>","angle-percentage":"<angle>|<percentage>","angular-color-hint":"<angle-percentage>","angular-color-stop":"<color>&&<color-stop-angle>?","angular-color-stop-list":"[<angular-color-stop> [, <angular-color-hint>]?]# , <angular-color-stop>","animateable-feature":"scroll-position|contents|<custom-ident>","asin()":"asin( <calc-sum> )","atan()":"atan( <calc-sum> )","atan2()":"atan2( <calc-sum> , <calc-sum> )",attachment:"scroll|fixed|local","attr()":"attr( <attr-name> <type-or-unit>? [, <attr-fallback>]? )","attr-matcher":"['~'|'|'|'^'|'$'|'*']? '='","attr-modifier":"i|s","attribute-selector":"'[' <wq-name> ']'|'[' <wq-name> <attr-matcher> [<string-token>|<ident-token>] <attr-modifier>? ']'","auto-repeat":"repeat( [auto-fill|auto-fit] , [<line-names>? <fixed-size>]+ <line-names>? )","auto-track-list":"[<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>? <auto-repeat> [<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>?",axis:"block|inline|vertical|horizontal","baseline-position":"[first|last]? baseline","basic-shape":"<inset()>|<circle()>|<ellipse()>|<polygon()>|<path()>","bg-image":"none|<image>","bg-layer":"<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>","bg-position":"[[left|center|right|top|bottom|<length-percentage>]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]|[center|[left|right] <length-percentage>?]&&[center|[top|bottom] <length-percentage>?]]","bg-size":"[<length-percentage>|auto]{1,2}|cover|contain","blur()":"blur( <length> )","blend-mode":"normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity",box:"border-box|padding-box|content-box","brightness()":"brightness( <number-percentage> )","calc()":"calc( <calc-sum> )","calc-sum":"<calc-product> [['+'|'-'] <calc-product>]*","calc-product":"<calc-value> ['*' <calc-value>|'/' <number>]*","calc-value":"<number>|<dimension>|<percentage>|<calc-constant>|( <calc-sum> )","calc-constant":"e|pi|infinity|-infinity|NaN","cf-final-image":"<image>|<color>","cf-mixing-image":"<percentage>?&&<image>","circle()":"circle( [<shape-radius>]? [at <position>]? )","clamp()":"clamp( <calc-sum>#{3} )","class-selector":"'.' <ident-token>","clip-source":"<url>",color:"<rgb()>|<rgba()>|<hsl()>|<hsla()>|<hwb()>|<lab()>|<lch()>|<hex-color>|<named-color>|currentcolor|<deprecated-system-color>","color-stop":"<color-stop-length>|<color-stop-angle>","color-stop-angle":"<angle-percentage>{1,2}","color-stop-length":"<length-percentage>{1,2}","color-stop-list":"[<linear-color-stop> [, <linear-color-hint>]?]# , <linear-color-stop>",combinator:"'>'|'+'|'~'|['||']","common-lig-values":"[common-ligatures|no-common-ligatures]","compat-auto":"searchfield|textarea|push-button|slider-horizontal|checkbox|radio|square-button|menulist|listbox|meter|progress-bar|button","composite-style":"clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor","compositing-operator":"add|subtract|intersect|exclude","compound-selector":"[<type-selector>? <subclass-selector>* [<pseudo-element-selector> <pseudo-class-selector>*]*]!","compound-selector-list":"<compound-selector>#","complex-selector":"<compound-selector> [<combinator>? <compound-selector>]*","complex-selector-list":"<complex-selector>#","conic-gradient()":"conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )","contextual-alt-values":"[contextual|no-contextual]","content-distribution":"space-between|space-around|space-evenly|stretch","content-list":"[<string>|contents|<image>|<counter>|<quote>|<target>|<leader()>|<attr()>]+","content-position":"center|start|end|flex-start|flex-end","content-replacement":"<image>","contrast()":"contrast( [<number-percentage>] )","cos()":"cos( <calc-sum> )",counter:"<counter()>|<counters()>","counter()":"counter( <counter-name> , <counter-style>? )","counter-name":"<custom-ident>","counter-style":"<counter-style-name>|symbols( )","counter-style-name":"<custom-ident>","counters()":"counters( <counter-name> , <string> , <counter-style>? )","cross-fade()":"cross-fade( <cf-mixing-image> , <cf-final-image>? )","cubic-bezier-timing-function":"ease|ease-in|ease-out|ease-in-out|cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )","deprecated-system-color":"ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText","discretionary-lig-values":"[discretionary-ligatures|no-discretionary-ligatures]","display-box":"contents|none","display-inside":"flow|flow-root|table|flex|grid|ruby","display-internal":"table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container","display-legacy":"inline-block|inline-list-item|inline-table|inline-flex|inline-grid","display-listitem":"<display-outside>?&&[flow|flow-root]?&&list-item","display-outside":"block|inline|run-in","drop-shadow()":"drop-shadow( <length>{2,3} <color>? )","east-asian-variant-values":"[jis78|jis83|jis90|jis04|simplified|traditional]","east-asian-width-values":"[full-width|proportional-width]","element()":"element( <custom-ident> , [first|start|last|first-except]? )|element( <id-selector> )","ellipse()":"ellipse( [<shape-radius>{2}]? [at <position>]? )","ending-shape":"circle|ellipse","env()":"env( <custom-ident> , <declaration-value>? )","exp()":"exp( <calc-sum> )","explicit-track-list":"[<line-names>? <track-size>]+ <line-names>?","family-name":"<string>|<custom-ident>+","feature-tag-value":"<string> [<integer>|on|off]?","feature-type":"@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation","feature-value-block":"<feature-type> '{' <feature-value-declaration-list> '}'","feature-value-block-list":"<feature-value-block>+","feature-value-declaration":"<custom-ident> : <integer>+ ;","feature-value-declaration-list":"<feature-value-declaration>","feature-value-name":"<custom-ident>","fill-rule":"nonzero|evenodd","filter-function":"<blur()>|<brightness()>|<contrast()>|<drop-shadow()>|<grayscale()>|<hue-rotate()>|<invert()>|<opacity()>|<saturate()>|<sepia()>","filter-function-list":"[<filter-function>|<url>]+","final-bg-layer":"<'background-color'>||<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>","fixed-breadth":"<length-percentage>","fixed-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <fixed-size>]+ <line-names>? )","fixed-size":"<fixed-breadth>|minmax( <fixed-breadth> , <track-breadth> )|minmax( <inflexible-breadth> , <fixed-breadth> )","font-stretch-absolute":"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|<percentage>","font-variant-css21":"[normal|small-caps]","font-weight-absolute":"normal|bold|<number [1,1000]>","frequency-percentage":"<frequency>|<percentage>","general-enclosed":"[<function-token> <any-value> )]|( <ident> <any-value> )","generic-family":"serif|sans-serif|cursive|fantasy|monospace|-apple-system","generic-name":"serif|sans-serif|cursive|fantasy|monospace","geometry-box":"<shape-box>|fill-box|stroke-box|view-box",gradient:"<linear-gradient()>|<repeating-linear-gradient()>|<radial-gradient()>|<repeating-radial-gradient()>|<conic-gradient()>|<repeating-conic-gradient()>|<-legacy-gradient>","grayscale()":"grayscale( <number-percentage> )","grid-line":"auto|<custom-ident>|[<integer>&&<custom-ident>?]|[span&&[<integer>||<custom-ident>]]","historical-lig-values":"[historical-ligatures|no-historical-ligatures]","hsl()":"hsl( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )","hsla()":"hsla( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )",hue:"<number>|<angle>","hue-rotate()":"hue-rotate( <angle> )","hwb()":"hwb( [<hue>|none] [<percentage>|none] [<percentage>|none] [/ [<alpha-value>|none]]? )","hypot()":"hypot( <calc-sum># )",image:"<url>|<image()>|<image-set()>|<element()>|<paint()>|<cross-fade()>|<gradient>","image()":"image( <image-tags>? [<image-src>? , <color>?]! )","image-set()":"image-set( <image-set-option># )","image-set-option":"[<image>|<string>] [<resolution>||type( <string> )]","image-src":"<url>|<string>","image-tags":"ltr|rtl","inflexible-breadth":"<length-percentage>|min-content|max-content|auto","inset()":"inset( <length-percentage>{1,4} [round <'border-radius'>]? )","invert()":"invert( <number-percentage> )","keyframes-name":"<custom-ident>|<string>","keyframe-block":"<keyframe-selector># { <declaration-list> }","keyframe-block-list":"<keyframe-block>+","keyframe-selector":"from|to|<percentage>","lab()":"lab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )","layer()":"layer( <layer-name> )","layer-name":"<ident> ['.' <ident>]*","lch()":"lch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )","leader()":"leader( <leader-type> )","leader-type":"dotted|solid|space|<string>","length-percentage":"<length>|<percentage>","line-names":"'[' <custom-ident>* ']'","line-name-list":"[<line-names>|<name-repeat>]+","line-style":"none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset","line-width":"<length>|thin|medium|thick","linear-color-hint":"<length-percentage>","linear-color-stop":"<color> <color-stop-length>?","linear-gradient()":"linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )","log()":"log( <calc-sum> , <calc-sum>? )","mask-layer":"<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||<geometry-box>||[<geometry-box>|no-clip]||<compositing-operator>||<masking-mode>","mask-position":"[<length-percentage>|left|center|right] [<length-percentage>|top|center|bottom]?","mask-reference":"none|<image>|<mask-source>","mask-source":"<url>","masking-mode":"alpha|luminance|match-source","matrix()":"matrix( <number>#{6} )","matrix3d()":"matrix3d( <number>#{16} )","max()":"max( <calc-sum># )","media-and":"<media-in-parens> [and <media-in-parens>]+","media-condition":"<media-not>|<media-and>|<media-or>|<media-in-parens>","media-condition-without-or":"<media-not>|<media-and>|<media-in-parens>","media-feature":"( [<mf-plain>|<mf-boolean>|<mf-range>] )","media-in-parens":"( <media-condition> )|<media-feature>|<general-enclosed>","media-not":"not <media-in-parens>","media-or":"<media-in-parens> [or <media-in-parens>]+","media-query":"<media-condition>|[not|only]? <media-type> [and <media-condition-without-or>]?","media-query-list":"<media-query>#","media-type":"<ident>","mf-boolean":"<mf-name>","mf-name":"<ident>","mf-plain":"<mf-name> : <mf-value>","mf-range":"<mf-name> ['<'|'>']? '='? <mf-value>|<mf-value> ['<'|'>']? '='? <mf-name>|<mf-value> '<' '='? <mf-name> '<' '='? <mf-value>|<mf-value> '>' '='? <mf-name> '>' '='? <mf-value>","mf-value":"<number>|<dimension>|<ident>|<ratio>","min()":"min( <calc-sum># )","minmax()":"minmax( [<length-percentage>|min-content|max-content|auto] , [<length-percentage>|<flex>|min-content|max-content|auto] )","mod()":"mod( <calc-sum> , <calc-sum> )","name-repeat":"repeat( [<integer [1,\u221E]>|auto-fill] , <line-names>+ )","named-color":"transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|<-non-standard-color>","namespace-prefix":"<ident>","ns-prefix":"[<ident-token>|'*']? '|'","number-percentage":"<number>|<percentage>","numeric-figure-values":"[lining-nums|oldstyle-nums]","numeric-fraction-values":"[diagonal-fractions|stacked-fractions]","numeric-spacing-values":"[proportional-nums|tabular-nums]",nth:"<an-plus-b>|even|odd","opacity()":"opacity( [<number-percentage>] )","overflow-position":"unsafe|safe","outline-radius":"<length>|<percentage>","page-body":"<declaration>? [; <page-body>]?|<page-margin-box> <page-body>","page-margin-box":"<page-margin-box-type> '{' <declaration-list> '}'","page-margin-box-type":"@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom","page-selector-list":"[<page-selector>#]?","page-selector":"<pseudo-page>+|<ident> <pseudo-page>*","page-size":"A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger","path()":"path( [<fill-rule> ,]? <string> )","paint()":"paint( <ident> , <declaration-value>? )","perspective()":"perspective( [<length [0,\u221E]>|none] )","polygon()":"polygon( <fill-rule>? , [<length-percentage> <length-percentage>]# )",position:"[[left|center|right]||[top|center|bottom]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]?|[[left|right] <length-percentage>]&&[[top|bottom] <length-percentage>]]","pow()":"pow( <calc-sum> , <calc-sum> )","pseudo-class-selector":"':' <ident-token>|':' <function-token> <any-value> ')'","pseudo-element-selector":"':' <pseudo-class-selector>","pseudo-page":": [left|right|first|blank]",quote:"open-quote|close-quote|no-open-quote|no-close-quote","radial-gradient()":"radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )",ratio:"<number [0,\u221E]> [/ <number [0,\u221E]>]?","relative-selector":"<combinator>? <complex-selector>","relative-selector-list":"<relative-selector>#","relative-size":"larger|smaller","rem()":"rem( <calc-sum> , <calc-sum> )","repeat-style":"repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}","repeating-conic-gradient()":"repeating-conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )","repeating-linear-gradient()":"repeating-linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )","repeating-radial-gradient()":"repeating-radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )","reversed-counter-name":"reversed( <counter-name> )","rgb()":"rgb( <percentage>{3} [/ <alpha-value>]? )|rgb( <number>{3} [/ <alpha-value>]? )|rgb( <percentage>#{3} , <alpha-value>? )|rgb( <number>#{3} , <alpha-value>? )","rgba()":"rgba( <percentage>{3} [/ <alpha-value>]? )|rgba( <number>{3} [/ <alpha-value>]? )|rgba( <percentage>#{3} , <alpha-value>? )|rgba( <number>#{3} , <alpha-value>? )","rotate()":"rotate( [<angle>|<zero>] )","rotate3d()":"rotate3d( <number> , <number> , <number> , [<angle>|<zero>] )","rotateX()":"rotateX( [<angle>|<zero>] )","rotateY()":"rotateY( [<angle>|<zero>] )","rotateZ()":"rotateZ( [<angle>|<zero>] )","round()":"round( <rounding-strategy>? , <calc-sum> , <calc-sum> )","rounding-strategy":"nearest|up|down|to-zero","saturate()":"saturate( <number-percentage> )","scale()":"scale( [<number>|<percentage>]#{1,2} )","scale3d()":"scale3d( [<number>|<percentage>]#{3} )","scaleX()":"scaleX( [<number>|<percentage>] )","scaleY()":"scaleY( [<number>|<percentage>] )","scaleZ()":"scaleZ( [<number>|<percentage>] )",scroller:"root|nearest","self-position":"center|start|end|self-start|self-end|flex-start|flex-end","shape-radius":"<length-percentage>|closest-side|farthest-side","sign()":"sign( <calc-sum> )","skew()":"skew( [<angle>|<zero>] , [<angle>|<zero>]? )","skewX()":"skewX( [<angle>|<zero>] )","skewY()":"skewY( [<angle>|<zero>] )","sepia()":"sepia( <number-percentage> )",shadow:"inset?&&<length>{2,4}&&<color>?","shadow-t":"[<length>{2,3}&&<color>?]",shape:"rect( <top> , <right> , <bottom> , <left> )|rect( <top> <right> <bottom> <left> )","shape-box":"<box>|margin-box","side-or-corner":"[left|right]||[top|bottom]","sin()":"sin( <calc-sum> )","single-animation":"<time>||<easing-function>||<time>||<single-animation-iteration-count>||<single-animation-direction>||<single-animation-fill-mode>||<single-animation-play-state>||[none|<keyframes-name>]","single-animation-direction":"normal|reverse|alternate|alternate-reverse","single-animation-fill-mode":"none|forwards|backwards|both","single-animation-iteration-count":"infinite|<number>","single-animation-play-state":"running|paused","single-animation-timeline":"auto|none|<timeline-name>|scroll( <axis>? <scroller>? )","single-transition":"[none|<single-transition-property>]||<time>||<easing-function>||<time>","single-transition-property":"all|<custom-ident>",size:"closest-side|farthest-side|closest-corner|farthest-corner|<length>|<length-percentage>{2}","sqrt()":"sqrt( <calc-sum> )","step-position":"jump-start|jump-end|jump-none|jump-both|start|end","step-timing-function":"step-start|step-end|steps( <integer> [, <step-position>]? )","subclass-selector":"<id-selector>|<class-selector>|<attribute-selector>|<pseudo-class-selector>","supports-condition":"not <supports-in-parens>|<supports-in-parens> [and <supports-in-parens>]*|<supports-in-parens> [or <supports-in-parens>]*","supports-in-parens":"( <supports-condition> )|<supports-feature>|<general-enclosed>","supports-feature":"<supports-decl>|<supports-selector-fn>","supports-decl":"( <declaration> )","supports-selector-fn":"selector( <complex-selector> )",symbol:"<string>|<image>|<custom-ident>","tan()":"tan( <calc-sum> )",target:"<target-counter()>|<target-counters()>|<target-text()>","target-counter()":"target-counter( [<string>|<url>] , <custom-ident> , <counter-style>? )","target-counters()":"target-counters( [<string>|<url>] , <custom-ident> , <string> , <counter-style>? )","target-text()":"target-text( [<string>|<url>] , [content|before|after|first-letter]? )","time-percentage":"<time>|<percentage>","timeline-name":"<custom-ident>|<string>","easing-function":"linear|<cubic-bezier-timing-function>|<step-timing-function>","track-breadth":"<length-percentage>|<flex>|min-content|max-content|auto","track-list":"[<line-names>? [<track-size>|<track-repeat>]]+ <line-names>?","track-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <track-size>]+ <line-names>? )","track-size":"<track-breadth>|minmax( <inflexible-breadth> , <track-breadth> )|fit-content( <length-percentage> )","transform-function":"<matrix()>|<translate()>|<translateX()>|<translateY()>|<scale()>|<scaleX()>|<scaleY()>|<rotate()>|<skew()>|<skewX()>|<skewY()>|<matrix3d()>|<translate3d()>|<translateZ()>|<scale3d()>|<scaleZ()>|<rotate3d()>|<rotateX()>|<rotateY()>|<rotateZ()>|<perspective()>","transform-list":"<transform-function>+","translate()":"translate( <length-percentage> , <length-percentage>? )","translate3d()":"translate3d( <length-percentage> , <length-percentage> , <length> )","translateX()":"translateX( <length-percentage> )","translateY()":"translateY( <length-percentage> )","translateZ()":"translateZ( <length> )","type-or-unit":"string|color|url|integer|number|length|angle|time|frequency|cap|ch|em|ex|ic|lh|rlh|rem|vb|vi|vw|vh|vmin|vmax|mm|Q|cm|in|pt|pc|px|deg|grad|rad|turn|ms|s|Hz|kHz|%","type-selector":"<wq-name>|<ns-prefix>? '*'","var()":"var( <custom-property-name> , <declaration-value>? )","viewport-length":"auto|<length-percentage>","visual-box":"content-box|padding-box|border-box","wq-name":"<ns-prefix>? <ident-token>","-legacy-gradient":"<-webkit-gradient()>|<-legacy-linear-gradient>|<-legacy-repeating-linear-gradient>|<-legacy-radial-gradient>|<-legacy-repeating-radial-gradient>","-legacy-linear-gradient":"-moz-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-repeating-linear-gradient":"-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-linear-gradient-arguments":"[<angle>|<side-or-corner>]? , <color-stop-list>","-legacy-radial-gradient":"-moz-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-repeating-radial-gradient":"-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-radial-gradient-arguments":"[<position> ,]? [[[<-legacy-radial-gradient-shape>||<-legacy-radial-gradient-size>]|[<length>|<percentage>]{2}] ,]? <color-stop-list>","-legacy-radial-gradient-size":"closest-side|closest-corner|farthest-side|farthest-corner|contain|cover","-legacy-radial-gradient-shape":"circle|ellipse","-non-standard-font":"-apple-system-body|-apple-system-headline|-apple-system-subheadline|-apple-system-caption1|-apple-system-caption2|-apple-system-footnote|-apple-system-short-body|-apple-system-short-headline|-apple-system-short-subheadline|-apple-system-short-caption1|-apple-system-short-footnote|-apple-system-tall-body","-non-standard-color":"-moz-ButtonDefault|-moz-ButtonHoverFace|-moz-ButtonHoverText|-moz-CellHighlight|-moz-CellHighlightText|-moz-Combobox|-moz-ComboboxText|-moz-Dialog|-moz-DialogText|-moz-dragtargetzone|-moz-EvenTreeRow|-moz-Field|-moz-FieldText|-moz-html-CellHighlight|-moz-html-CellHighlightText|-moz-mac-accentdarkestshadow|-moz-mac-accentdarkshadow|-moz-mac-accentface|-moz-mac-accentlightesthighlight|-moz-mac-accentlightshadow|-moz-mac-accentregularhighlight|-moz-mac-accentregularshadow|-moz-mac-chrome-active|-moz-mac-chrome-inactive|-moz-mac-focusring|-moz-mac-menuselect|-moz-mac-menushadow|-moz-mac-menutextselect|-moz-MenuHover|-moz-MenuHoverText|-moz-MenuBarText|-moz-MenuBarHoverText|-moz-nativehyperlinktext|-moz-OddTreeRow|-moz-win-communicationstext|-moz-win-mediatext|-moz-activehyperlinktext|-moz-default-background-color|-moz-default-color|-moz-hyperlinktext|-moz-visitedhyperlinktext|-webkit-activelink|-webkit-focus-ring-color|-webkit-link|-webkit-text","-non-standard-image-rendering":"optimize-contrast|-moz-crisp-edges|-o-crisp-edges|-webkit-optimize-contrast","-non-standard-overflow":"-moz-scrollbars-none|-moz-scrollbars-horizontal|-moz-scrollbars-vertical|-moz-hidden-unscrollable","-non-standard-width":"fill-available|min-intrinsic|intrinsic|-moz-available|-moz-fit-content|-moz-min-content|-moz-max-content|-webkit-min-content|-webkit-max-content","-webkit-gradient()":"-webkit-gradient( <-webkit-gradient-type> , <-webkit-gradient-point> [, <-webkit-gradient-point>|, <-webkit-gradient-radius> , <-webkit-gradient-point>] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )","-webkit-gradient-color-stop":"from( <color> )|color-stop( [<number-zero-one>|<percentage>] , <color> )|to( <color> )","-webkit-gradient-point":"[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]","-webkit-gradient-radius":"<length>|<percentage>","-webkit-gradient-type":"linear|radial","-webkit-mask-box-repeat":"repeat|stretch|round","-webkit-mask-clip-style":"border|border-box|padding|padding-box|content|content-box|text","-ms-filter-function-list":"<-ms-filter-function>+","-ms-filter-function":"<-ms-filter-function-progid>|<-ms-filter-function-legacy>","-ms-filter-function-progid":"'progid:' [<ident-token> '.']* [<ident-token>|<function-token> <any-value>? )]","-ms-filter-function-legacy":"<ident-token>|<function-token> <any-value>? )","-ms-filter":"<string>",age:"child|young|old","attr-name":"<wq-name>","attr-fallback":"<any-value>","bg-clip":"<box>|border|text",bottom:"<length>|auto","generic-voice":"[<age>? <gender> <integer>?]",gender:"male|female|neutral",left:"<length>|auto","mask-image":"<mask-reference>#",paint:"none|<color>|<url> [none|<color>]?|context-fill|context-stroke",right:"<length>|auto","scroll-timeline-axis":"block|inline|vertical|horizontal","scroll-timeline-name":"none|<custom-ident>","single-animation-composition":"replace|add|accumulate","svg-length":"<percentage>|<length>|<number>","svg-writing-mode":"lr-tb|rl-tb|tb-rl|lr|rl|tb",top:"<length>|auto",x:"<number>",y:"<number>",declaration:"<ident-token> : <declaration-value>? ['!' important]?","declaration-list":"[<declaration>? ';']* <declaration>?",url:"url( <string> <url-modifier>* )|<url-token>","url-modifier":"<ident>|<function-token> <any-value> )","number-zero-one":"<number [0,1]>","number-one-or-greater":"<number [1,\u221E]>","-non-standard-display":"-ms-inline-flexbox|-ms-grid|-ms-inline-grid|-webkit-flex|-webkit-inline-flex|-webkit-box|-webkit-inline-box|-moz-inline-stack|-moz-box|-moz-inline-box"},properties:{"--*":"<declaration-value>","-ms-accelerator":"false|true","-ms-block-progression":"tb|rl|bt|lr","-ms-content-zoom-chaining":"none|chained","-ms-content-zooming":"none|zoom","-ms-content-zoom-limit":"<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>","-ms-content-zoom-limit-max":"<percentage>","-ms-content-zoom-limit-min":"<percentage>","-ms-content-zoom-snap":"<'-ms-content-zoom-snap-type'>||<'-ms-content-zoom-snap-points'>","-ms-content-zoom-snap-points":"snapInterval( <percentage> , <percentage> )|snapList( <percentage># )","-ms-content-zoom-snap-type":"none|proximity|mandatory","-ms-filter":"<string>","-ms-flow-from":"[none|<custom-ident>]#","-ms-flow-into":"[none|<custom-ident>]#","-ms-grid-columns":"none|<track-list>|<auto-track-list>","-ms-grid-rows":"none|<track-list>|<auto-track-list>","-ms-high-contrast-adjust":"auto|none","-ms-hyphenate-limit-chars":"auto|<integer>{1,3}","-ms-hyphenate-limit-lines":"no-limit|<integer>","-ms-hyphenate-limit-zone":"<percentage>|<length>","-ms-ime-align":"auto|after","-ms-overflow-style":"auto|none|scrollbar|-ms-autohiding-scrollbar","-ms-scrollbar-3dlight-color":"<color>","-ms-scrollbar-arrow-color":"<color>","-ms-scrollbar-base-color":"<color>","-ms-scrollbar-darkshadow-color":"<color>","-ms-scrollbar-face-color":"<color>","-ms-scrollbar-highlight-color":"<color>","-ms-scrollbar-shadow-color":"<color>","-ms-scrollbar-track-color":"<color>","-ms-scroll-chaining":"chained|none","-ms-scroll-limit":"<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>","-ms-scroll-limit-x-max":"auto|<length>","-ms-scroll-limit-x-min":"<length>","-ms-scroll-limit-y-max":"auto|<length>","-ms-scroll-limit-y-min":"<length>","-ms-scroll-rails":"none|railed","-ms-scroll-snap-points-x":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-points-y":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-type":"none|proximity|mandatory","-ms-scroll-snap-x":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>","-ms-scroll-snap-y":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>","-ms-scroll-translation":"none|vertical-to-horizontal","-ms-text-autospace":"none|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space","-ms-touch-select":"grippers|none","-ms-user-select":"none|element|text","-ms-wrap-flow":"auto|both|start|end|maximum|clear","-ms-wrap-margin":"<length>","-ms-wrap-through":"wrap|none","-moz-appearance":"none|button|button-arrow-down|button-arrow-next|button-arrow-previous|button-arrow-up|button-bevel|button-focus|caret|checkbox|checkbox-container|checkbox-label|checkmenuitem|dualbutton|groupbox|listbox|listitem|menuarrow|menubar|menucheckbox|menuimage|menuitem|menuitemtext|menulist|menulist-button|menulist-text|menulist-textfield|menupopup|menuradio|menuseparator|meterbar|meterchunk|progressbar|progressbar-vertical|progresschunk|progresschunk-vertical|radio|radio-container|radio-label|radiomenuitem|range|range-thumb|resizer|resizerpanel|scale-horizontal|scalethumbend|scalethumb-horizontal|scalethumbstart|scalethumbtick|scalethumb-vertical|scale-vertical|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|separator|sheet|spinner|spinner-downbutton|spinner-textfield|spinner-upbutton|splitter|statusbar|statusbarpanel|tab|tabpanel|tabpanels|tab-scroll-arrow-back|tab-scroll-arrow-forward|textfield|textfield-multiline|toolbar|toolbarbutton|toolbarbutton-dropdown|toolbargripper|toolbox|tooltip|treeheader|treeheadercell|treeheadersortarrow|treeitem|treeline|treetwisty|treetwistyopen|treeview|-moz-mac-unified-toolbar|-moz-win-borderless-glass|-moz-win-browsertabbar-toolbox|-moz-win-communicationstext|-moz-win-communications-toolbox|-moz-win-exclude-glass|-moz-win-glass|-moz-win-mediatext|-moz-win-media-toolbox|-moz-window-button-box|-moz-window-button-box-maximized|-moz-window-button-close|-moz-window-button-maximize|-moz-window-button-minimize|-moz-window-button-restore|-moz-window-frame-bottom|-moz-window-frame-left|-moz-window-frame-right|-moz-window-titlebar|-moz-window-titlebar-maximized","-moz-binding":"<url>|none","-moz-border-bottom-colors":"<color>+|none","-moz-border-left-colors":"<color>+|none","-moz-border-right-colors":"<color>+|none","-moz-border-top-colors":"<color>+|none","-moz-context-properties":"none|[fill|fill-opacity|stroke|stroke-opacity]#","-moz-float-edge":"border-box|content-box|margin-box|padding-box","-moz-force-broken-image-icon":"0|1","-moz-image-region":"<shape>|auto","-moz-orient":"inline|block|horizontal|vertical","-moz-outline-radius":"<outline-radius>{1,4} [/ <outline-radius>{1,4}]?","-moz-outline-radius-bottomleft":"<outline-radius>","-moz-outline-radius-bottomright":"<outline-radius>","-moz-outline-radius-topleft":"<outline-radius>","-moz-outline-radius-topright":"<outline-radius>","-moz-stack-sizing":"ignore|stretch-to-fit","-moz-text-blink":"none|blink","-moz-user-focus":"ignore|normal|select-after|select-before|select-menu|select-same|select-all|none","-moz-user-input":"auto|none|enabled|disabled","-moz-user-modify":"read-only|read-write|write-only","-moz-window-dragging":"drag|no-drag","-moz-window-shadow":"default|menu|tooltip|sheet|none","-webkit-appearance":"none|button|button-bevel|caps-lock-indicator|caret|checkbox|default-button|inner-spin-button|listbox|listitem|media-controls-background|media-controls-fullscreen-background|media-current-time-display|media-enter-fullscreen-button|media-exit-fullscreen-button|media-fullscreen-button|media-mute-button|media-overlay-play-button|media-play-button|media-seek-back-button|media-seek-forward-button|media-slider|media-sliderthumb|media-time-remaining-display|media-toggle-closed-captions-button|media-volume-slider|media-volume-slider-container|media-volume-sliderthumb|menulist|menulist-button|menulist-text|menulist-textfield|meter|progress-bar|progress-bar-value|push-button|radio|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbargripper-horizontal|scrollbargripper-vertical|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|searchfield-cancel-button|searchfield-decoration|searchfield-results-button|searchfield-results-decoration|slider-horizontal|slider-vertical|sliderthumb-horizontal|sliderthumb-vertical|square-button|textarea|textfield|-apple-pay-button","-webkit-border-before":"<'border-width'>||<'border-style'>||<color>","-webkit-border-before-color":"<color>","-webkit-border-before-style":"<'border-style'>","-webkit-border-before-width":"<'border-width'>","-webkit-box-reflect":"[above|below|right|left]? <length>? <image>?","-webkit-line-clamp":"none|<integer>","-webkit-mask":"[<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||[<box>|border|padding|content|text]||[<box>|border|padding|content]]#","-webkit-mask-attachment":"<attachment>#","-webkit-mask-clip":"[<box>|border|padding|content|text]#","-webkit-mask-composite":"<composite-style>#","-webkit-mask-image":"<mask-reference>#","-webkit-mask-origin":"[<box>|border|padding|content]#","-webkit-mask-position":"<position>#","-webkit-mask-position-x":"[<length-percentage>|left|center|right]#","-webkit-mask-position-y":"[<length-percentage>|top|center|bottom]#","-webkit-mask-repeat":"<repeat-style>#","-webkit-mask-repeat-x":"repeat|no-repeat|space|round","-webkit-mask-repeat-y":"repeat|no-repeat|space|round","-webkit-mask-size":"<bg-size>#","-webkit-overflow-scrolling":"auto|touch","-webkit-tap-highlight-color":"<color>","-webkit-text-fill-color":"<color>","-webkit-text-stroke":"<length>||<color>","-webkit-text-stroke-color":"<color>","-webkit-text-stroke-width":"<length>","-webkit-touch-callout":"default|none","-webkit-user-modify":"read-only|read-write|read-write-plaintext-only","accent-color":"auto|<color>","align-content":"normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>","align-items":"normal|stretch|<baseline-position>|[<overflow-position>? <self-position>]","align-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? <self-position>","align-tracks":"[normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>]#",all:"initial|inherit|unset|revert|revert-layer",animation:"<single-animation>#","animation-composition":"<single-animation-composition>#","animation-delay":"<time>#","animation-direction":"<single-animation-direction>#","animation-duration":"<time>#","animation-fill-mode":"<single-animation-fill-mode>#","animation-iteration-count":"<single-animation-iteration-count>#","animation-name":"[none|<keyframes-name>]#","animation-play-state":"<single-animation-play-state>#","animation-timing-function":"<easing-function>#","animation-timeline":"<single-animation-timeline>#",appearance:"none|auto|textfield|menulist-button|<compat-auto>","aspect-ratio":"auto|<ratio>",azimuth:"<angle>|[[left-side|far-left|left|center-left|center|center-right|right|far-right|right-side]||behind]|leftwards|rightwards","backdrop-filter":"none|<filter-function-list>","backface-visibility":"visible|hidden",background:"[<bg-layer> ,]* <final-bg-layer>","background-attachment":"<attachment>#","background-blend-mode":"<blend-mode>#","background-clip":"<bg-clip>#","background-color":"<color>","background-image":"<bg-image>#","background-origin":"<box>#","background-position":"<bg-position>#","background-position-x":"[center|[[left|right|x-start|x-end]? <length-percentage>?]!]#","background-position-y":"[center|[[top|bottom|y-start|y-end]? <length-percentage>?]!]#","background-repeat":"<repeat-style>#","background-size":"<bg-size>#","block-overflow":"clip|ellipsis|<string>","block-size":"<'width'>",border:"<line-width>||<line-style>||<color>","border-block":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-color":"<'border-top-color'>{1,2}","border-block-style":"<'border-top-style'>","border-block-width":"<'border-top-width'>","border-block-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-end-color":"<'border-top-color'>","border-block-end-style":"<'border-top-style'>","border-block-end-width":"<'border-top-width'>","border-block-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-start-color":"<'border-top-color'>","border-block-start-style":"<'border-top-style'>","border-block-start-width":"<'border-top-width'>","border-bottom":"<line-width>||<line-style>||<color>","border-bottom-color":"<'border-top-color'>","border-bottom-left-radius":"<length-percentage>{1,2}","border-bottom-right-radius":"<length-percentage>{1,2}","border-bottom-style":"<line-style>","border-bottom-width":"<line-width>","border-collapse":"collapse|separate","border-color":"<color>{1,4}","border-end-end-radius":"<length-percentage>{1,2}","border-end-start-radius":"<length-percentage>{1,2}","border-image":"<'border-image-source'>||<'border-image-slice'> [/ <'border-image-width'>|/ <'border-image-width'>? / <'border-image-outset'>]?||<'border-image-repeat'>","border-image-outset":"[<length>|<number>]{1,4}","border-image-repeat":"[stretch|repeat|round|space]{1,2}","border-image-slice":"<number-percentage>{1,4}&&fill?","border-image-source":"none|<image>","border-image-width":"[<length-percentage>|<number>|auto]{1,4}","border-inline":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-color":"<'border-top-color'>{1,2}","border-inline-style":"<'border-top-style'>","border-inline-width":"<'border-top-width'>","border-inline-end-color":"<'border-top-color'>","border-inline-end-style":"<'border-top-style'>","border-inline-end-width":"<'border-top-width'>","border-inline-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-start-color":"<'border-top-color'>","border-inline-start-style":"<'border-top-style'>","border-inline-start-width":"<'border-top-width'>","border-left":"<line-width>||<line-style>||<color>","border-left-color":"<color>","border-left-style":"<line-style>","border-left-width":"<line-width>","border-radius":"<length-percentage>{1,4} [/ <length-percentage>{1,4}]?","border-right":"<line-width>||<line-style>||<color>","border-right-color":"<color>","border-right-style":"<line-style>","border-right-width":"<line-width>","border-spacing":"<length> <length>?","border-start-end-radius":"<length-percentage>{1,2}","border-start-start-radius":"<length-percentage>{1,2}","border-style":"<line-style>{1,4}","border-top":"<line-width>||<line-style>||<color>","border-top-color":"<color>","border-top-left-radius":"<length-percentage>{1,2}","border-top-right-radius":"<length-percentage>{1,2}","border-top-style":"<line-style>","border-top-width":"<line-width>","border-width":"<line-width>{1,4}",bottom:"<length>|<percentage>|auto","box-align":"start|center|end|baseline|stretch","box-decoration-break":"slice|clone","box-direction":"normal|reverse|inherit","box-flex":"<number>","box-flex-group":"<integer>","box-lines":"single|multiple","box-ordinal-group":"<integer>","box-orient":"horizontal|vertical|inline-axis|block-axis|inherit","box-pack":"start|center|end|justify","box-shadow":"none|<shadow>#","box-sizing":"content-box|border-box","break-after":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-before":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-inside":"auto|avoid|avoid-page|avoid-column|avoid-region","caption-side":"top|bottom|block-start|block-end|inline-start|inline-end",caret:"<'caret-color'>||<'caret-shape'>","caret-color":"auto|<color>","caret-shape":"auto|bar|block|underscore",clear:"none|left|right|both|inline-start|inline-end",clip:"<shape>|auto","clip-path":"<clip-source>|[<basic-shape>||<geometry-box>]|none",color:"<color>","print-color-adjust":"economy|exact","color-scheme":"normal|[light|dark|<custom-ident>]+&&only?","column-count":"<integer>|auto","column-fill":"auto|balance|balance-all","column-gap":"normal|<length-percentage>","column-rule":"<'column-rule-width'>||<'column-rule-style'>||<'column-rule-color'>","column-rule-color":"<color>","column-rule-style":"<'border-style'>","column-rule-width":"<'border-width'>","column-span":"none|all","column-width":"<length>|auto",columns:"<'column-width'>||<'column-count'>",contain:"none|strict|content|[[size||inline-size]||layout||style||paint]","contain-intrinsic-size":"[none|<length>|auto <length>]{1,2}","contain-intrinsic-block-size":"none|<length>|auto <length>","contain-intrinsic-height":"none|<length>|auto <length>","contain-intrinsic-inline-size":"none|<length>|auto <length>","contain-intrinsic-width":"none|<length>|auto <length>",content:"normal|none|[<content-replacement>|<content-list>] [/ [<string>|<counter>]+]?","content-visibility":"visible|auto|hidden","counter-increment":"[<counter-name> <integer>?]+|none","counter-reset":"[<counter-name> <integer>?|<reversed-counter-name> <integer>?]+|none","counter-set":"[<counter-name> <integer>?]+|none",cursor:"[[<url> [<x> <y>]? ,]* [auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing|hand|-webkit-grab|-webkit-grabbing|-webkit-zoom-in|-webkit-zoom-out|-moz-grab|-moz-grabbing|-moz-zoom-in|-moz-zoom-out]]",direction:"ltr|rtl",display:"[<display-outside>||<display-inside>]|<display-listitem>|<display-internal>|<display-box>|<display-legacy>|<-non-standard-display>","empty-cells":"show|hide",filter:"none|<filter-function-list>|<-ms-filter-function-list>",flex:"none|[<'flex-grow'> <'flex-shrink'>?||<'flex-basis'>]","flex-basis":"content|<'width'>","flex-direction":"row|row-reverse|column|column-reverse","flex-flow":"<'flex-direction'>||<'flex-wrap'>","flex-grow":"<number>","flex-shrink":"<number>","flex-wrap":"nowrap|wrap|wrap-reverse",float:"left|right|none|inline-start|inline-end",font:"[[<'font-style'>||<font-variant-css21>||<'font-weight'>||<'font-stretch'>]? <'font-size'> [/ <'line-height'>]? <'font-family'>]|caption|icon|menu|message-box|small-caption|status-bar","font-family":"[<family-name>|<generic-family>]#","font-feature-settings":"normal|<feature-tag-value>#","font-kerning":"auto|normal|none","font-language-override":"normal|<string>","font-optical-sizing":"auto|none","font-variation-settings":"normal|[<string> <number>]#","font-size":"<absolute-size>|<relative-size>|<length-percentage>","font-size-adjust":"none|[ex-height|cap-height|ch-width|ic-width|ic-height]? [from-font|<number>]","font-smooth":"auto|never|always|<absolute-size>|<length>","font-stretch":"<font-stretch-absolute>","font-style":"normal|italic|oblique <angle>?","font-synthesis":"none|[weight||style||small-caps]","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-alternates":"normal|[stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )]","font-variant-caps":"normal|small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps","font-variant-east-asian":"normal|[<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-ligatures":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>]","font-variant-numeric":"normal|[<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero]","font-variant-position":"normal|sub|super","font-weight":"<font-weight-absolute>|bolder|lighter","forced-color-adjust":"auto|none",gap:"<'row-gap'> <'column-gap'>?",grid:"<'grid-template'>|<'grid-template-rows'> / [auto-flow&&dense?] <'grid-auto-columns'>?|[auto-flow&&dense?] <'grid-auto-rows'>? / <'grid-template-columns'>","grid-area":"<grid-line> [/ <grid-line>]{0,3}","grid-auto-columns":"<track-size>+","grid-auto-flow":"[row|column]||dense","grid-auto-rows":"<track-size>+","grid-column":"<grid-line> [/ <grid-line>]?","grid-column-end":"<grid-line>","grid-column-gap":"<length-percentage>","grid-column-start":"<grid-line>","grid-gap":"<'grid-row-gap'> <'grid-column-gap'>?","grid-row":"<grid-line> [/ <grid-line>]?","grid-row-end":"<grid-line>","grid-row-gap":"<length-percentage>","grid-row-start":"<grid-line>","grid-template":"none|[<'grid-template-rows'> / <'grid-template-columns'>]|[<line-names>? <string> <track-size>? <line-names>?]+ [/ <explicit-track-list>]?","grid-template-areas":"none|<string>+","grid-template-columns":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","grid-template-rows":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","hanging-punctuation":"none|[first||[force-end|allow-end]||last]",height:"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","hyphenate-character":"auto|<string>",hyphens:"none|manual|auto","image-orientation":"from-image|<angle>|[<angle>? flip]","image-rendering":"auto|crisp-edges|pixelated|optimizeSpeed|optimizeQuality|<-non-standard-image-rendering>","image-resolution":"[from-image||<resolution>]&&snap?","ime-mode":"auto|normal|active|inactive|disabled","initial-letter":"normal|[<number> <integer>?]","initial-letter-align":"[auto|alphabetic|hanging|ideographic]","inline-size":"<'width'>","input-security":"auto|none",inset:"<'top'>{1,4}","inset-block":"<'top'>{1,2}","inset-block-end":"<'top'>","inset-block-start":"<'top'>","inset-inline":"<'top'>{1,2}","inset-inline-end":"<'top'>","inset-inline-start":"<'top'>",isolation:"auto|isolate","justify-content":"normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]","justify-items":"normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|legacy|legacy&&[left|right|center]","justify-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]","justify-tracks":"[normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]]#",left:"<length>|<percentage>|auto","letter-spacing":"normal|<length-percentage>","line-break":"auto|loose|normal|strict|anywhere","line-clamp":"none|<integer>","line-height":"normal|<number>|<length>|<percentage>","line-height-step":"<length>","list-style":"<'list-style-type'>||<'list-style-position'>||<'list-style-image'>","list-style-image":"<image>|none","list-style-position":"inside|outside","list-style-type":"<counter-style>|<string>|none",margin:"[<length>|<percentage>|auto]{1,4}","margin-block":"<'margin-left'>{1,2}","margin-block-end":"<'margin-left'>","margin-block-start":"<'margin-left'>","margin-bottom":"<length>|<percentage>|auto","margin-inline":"<'margin-left'>{1,2}","margin-inline-end":"<'margin-left'>","margin-inline-start":"<'margin-left'>","margin-left":"<length>|<percentage>|auto","margin-right":"<length>|<percentage>|auto","margin-top":"<length>|<percentage>|auto","margin-trim":"none|in-flow|all",mask:"<mask-layer>#","mask-border":"<'mask-border-source'>||<'mask-border-slice'> [/ <'mask-border-width'>? [/ <'mask-border-outset'>]?]?||<'mask-border-repeat'>||<'mask-border-mode'>","mask-border-mode":"luminance|alpha","mask-border-outset":"[<length>|<number>]{1,4}","mask-border-repeat":"[stretch|repeat|round|space]{1,2}","mask-border-slice":"<number-percentage>{1,4} fill?","mask-border-source":"none|<image>","mask-border-width":"[<length-percentage>|<number>|auto]{1,4}","mask-clip":"[<geometry-box>|no-clip]#","mask-composite":"<compositing-operator>#","mask-image":"<mask-reference>#","mask-mode":"<masking-mode>#","mask-origin":"<geometry-box>#","mask-position":"<position>#","mask-repeat":"<repeat-style>#","mask-size":"<bg-size>#","mask-type":"luminance|alpha","masonry-auto-flow":"[pack|next]||[definite-first|ordered]","math-depth":"auto-add|add( <integer> )|<integer>","math-shift":"normal|compact","math-style":"normal|compact","max-block-size":"<'max-width'>","max-height":"none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","max-inline-size":"<'max-width'>","max-lines":"none|<integer>","max-width":"none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>","min-block-size":"<'min-width'>","min-height":"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )","min-inline-size":"<'min-width'>","min-width":"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>","mix-blend-mode":"<blend-mode>|plus-lighter","object-fit":"fill|contain|cover|none|scale-down","object-position":"<position>",offset:"[<'offset-position'>? [<'offset-path'> [<'offset-distance'>||<'offset-rotate'>]?]?]! [/ <'offset-anchor'>]?","offset-anchor":"auto|<position>","offset-distance":"<length-percentage>","offset-path":"none|ray( [<angle>&&<size>&&contain?] )|<path()>|<url>|[<basic-shape>||<geometry-box>]","offset-position":"auto|<position>","offset-rotate":"[auto|reverse]||<angle>",opacity:"<alpha-value>",order:"<integer>",orphans:"<integer>",outline:"[<'outline-color'>||<'outline-style'>||<'outline-width'>]","outline-color":"<color>|invert","outline-offset":"<length>","outline-style":"auto|<'border-style'>","outline-width":"<line-width>",overflow:"[visible|hidden|clip|scroll|auto]{1,2}|<-non-standard-overflow>","overflow-anchor":"auto|none","overflow-block":"visible|hidden|clip|scroll|auto","overflow-clip-box":"padding-box|content-box","overflow-clip-margin":"<visual-box>||<length [0,\u221E]>","overflow-inline":"visible|hidden|clip|scroll|auto","overflow-wrap":"normal|break-word|anywhere","overflow-x":"visible|hidden|clip|scroll|auto","overflow-y":"visible|hidden|clip|scroll|auto","overscroll-behavior":"[contain|none|auto]{1,2}","overscroll-behavior-block":"contain|none|auto","overscroll-behavior-inline":"contain|none|auto","overscroll-behavior-x":"contain|none|auto","overscroll-behavior-y":"contain|none|auto",padding:"[<length>|<percentage>]{1,4}","padding-block":"<'padding-left'>{1,2}","padding-block-end":"<'padding-left'>","padding-block-start":"<'padding-left'>","padding-bottom":"<length>|<percentage>","padding-inline":"<'padding-left'>{1,2}","padding-inline-end":"<'padding-left'>","padding-inline-start":"<'padding-left'>","padding-left":"<length>|<percentage>","padding-right":"<length>|<percentage>","padding-top":"<length>|<percentage>","page-break-after":"auto|always|avoid|left|right|recto|verso","page-break-before":"auto|always|avoid|left|right|recto|verso","page-break-inside":"auto|avoid","paint-order":"normal|[fill||stroke||markers]",perspective:"none|<length>","perspective-origin":"<position>","place-content":"<'align-content'> <'justify-content'>?","place-items":"<'align-items'> <'justify-items'>?","place-self":"<'align-self'> <'justify-self'>?","pointer-events":"auto|none|visiblePainted|visibleFill|visibleStroke|visible|painted|fill|stroke|all|inherit",position:"static|relative|absolute|sticky|fixed|-webkit-sticky",quotes:"none|auto|[<string> <string>]+",resize:"none|both|horizontal|vertical|block|inline",right:"<length>|<percentage>|auto",rotate:"none|<angle>|[x|y|z|<number>{3}]&&<angle>","row-gap":"normal|<length-percentage>","ruby-align":"start|center|space-between|space-around","ruby-merge":"separate|collapse|auto","ruby-position":"[alternate||[over|under]]|inter-character",scale:"none|<number>{1,3}","scrollbar-color":"auto|<color>{2}","scrollbar-gutter":"auto|stable&&both-edges?","scrollbar-width":"auto|thin|none","scroll-behavior":"auto|smooth","scroll-margin":"<length>{1,4}","scroll-margin-block":"<length>{1,2}","scroll-margin-block-start":"<length>","scroll-margin-block-end":"<length>","scroll-margin-bottom":"<length>","scroll-margin-inline":"<length>{1,2}","scroll-margin-inline-start":"<length>","scroll-margin-inline-end":"<length>","scroll-margin-left":"<length>","scroll-margin-right":"<length>","scroll-margin-top":"<length>","scroll-padding":"[auto|<length-percentage>]{1,4}","scroll-padding-block":"[auto|<length-percentage>]{1,2}","scroll-padding-block-start":"auto|<length-percentage>","scroll-padding-block-end":"auto|<length-percentage>","scroll-padding-bottom":"auto|<length-percentage>","scroll-padding-inline":"[auto|<length-percentage>]{1,2}","scroll-padding-inline-start":"auto|<length-percentage>","scroll-padding-inline-end":"auto|<length-percentage>","scroll-padding-left":"auto|<length-percentage>","scroll-padding-right":"auto|<length-percentage>","scroll-padding-top":"auto|<length-percentage>","scroll-snap-align":"[none|start|end|center]{1,2}","scroll-snap-coordinate":"none|<position>#","scroll-snap-destination":"<position>","scroll-snap-points-x":"none|repeat( <length-percentage> )","scroll-snap-points-y":"none|repeat( <length-percentage> )","scroll-snap-stop":"normal|always","scroll-snap-type":"none|[x|y|block|inline|both] [mandatory|proximity]?","scroll-snap-type-x":"none|mandatory|proximity","scroll-snap-type-y":"none|mandatory|proximity","scroll-timeline":"<scroll-timeline-name>||<scroll-timeline-axis>","scroll-timeline-axis":"block|inline|vertical|horizontal","scroll-timeline-name":"none|<custom-ident>","shape-image-threshold":"<alpha-value>","shape-margin":"<length-percentage>","shape-outside":"none|[<shape-box>||<basic-shape>]|<image>","tab-size":"<integer>|<length>","table-layout":"auto|fixed","text-align":"start|end|left|right|center|justify|match-parent","text-align-last":"auto|start|end|left|right|center|justify","text-combine-upright":"none|all|[digits <integer>?]","text-decoration":"<'text-decoration-line'>||<'text-decoration-style'>||<'text-decoration-color'>||<'text-decoration-thickness'>","text-decoration-color":"<color>","text-decoration-line":"none|[underline||overline||line-through||blink]|spelling-error|grammar-error","text-decoration-skip":"none|[objects||[spaces|[leading-spaces||trailing-spaces]]||edges||box-decoration]","text-decoration-skip-ink":"auto|all|none","text-decoration-style":"solid|double|dotted|dashed|wavy","text-decoration-thickness":"auto|from-font|<length>|<percentage>","text-emphasis":"<'text-emphasis-style'>||<'text-emphasis-color'>","text-emphasis-color":"<color>","text-emphasis-position":"[over|under]&&[right|left]","text-emphasis-style":"none|[[filled|open]||[dot|circle|double-circle|triangle|sesame]]|<string>","text-indent":"<length-percentage>&&hanging?&&each-line?","text-justify":"auto|inter-character|inter-word|none","text-orientation":"mixed|upright|sideways","text-overflow":"[clip|ellipsis|<string>]{1,2}","text-rendering":"auto|optimizeSpeed|optimizeLegibility|geometricPrecision","text-shadow":"none|<shadow-t>#","text-size-adjust":"none|auto|<percentage>","text-transform":"none|capitalize|uppercase|lowercase|full-width|full-size-kana","text-underline-offset":"auto|<length>|<percentage>","text-underline-position":"auto|from-font|[under||[left|right]]",top:"<length>|<percentage>|auto","touch-action":"auto|none|[[pan-x|pan-left|pan-right]||[pan-y|pan-up|pan-down]||pinch-zoom]|manipulation",transform:"none|<transform-list>","transform-box":"content-box|border-box|fill-box|stroke-box|view-box","transform-origin":"[<length-percentage>|left|center|right|top|bottom]|[[<length-percentage>|left|center|right]&&[<length-percentage>|top|center|bottom]] <length>?","transform-style":"flat|preserve-3d",transition:"<single-transition>#","transition-delay":"<time>#","transition-duration":"<time>#","transition-property":"none|<single-transition-property>#","transition-timing-function":"<easing-function>#",translate:"none|<length-percentage> [<length-percentage> <length>?]?","unicode-bidi":"normal|embed|isolate|bidi-override|isolate-override|plaintext|-moz-isolate|-moz-isolate-override|-moz-plaintext|-webkit-isolate|-webkit-isolate-override|-webkit-plaintext","user-select":"auto|text|none|contain|all","vertical-align":"baseline|sub|super|text-top|text-bottom|middle|top|bottom|<percentage>|<length>",visibility:"visible|hidden|collapse","white-space":"normal|pre|nowrap|pre-wrap|pre-line|break-spaces",widows:"<integer>",width:"auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|fill|stretch|intrinsic|-moz-max-content|-webkit-max-content|-moz-fit-content|-webkit-fit-content","will-change":"auto|<animateable-feature>#","word-break":"normal|break-all|keep-all|break-word","word-spacing":"normal|<length>","word-wrap":"normal|break-word","writing-mode":"horizontal-tb|vertical-rl|vertical-lr|sideways-rl|sideways-lr|<svg-writing-mode>","z-index":"auto|<integer>",zoom:"normal|reset|<number>|<percentage>","-moz-background-clip":"padding|border","-moz-border-radius-bottomleft":"<'border-bottom-left-radius'>","-moz-border-radius-bottomright":"<'border-bottom-right-radius'>","-moz-border-radius-topleft":"<'border-top-left-radius'>","-moz-border-radius-topright":"<'border-bottom-right-radius'>","-moz-control-character-visibility":"visible|hidden","-moz-osx-font-smoothing":"auto|grayscale","-moz-user-select":"none|text|all|-moz-none","-ms-flex-align":"start|end|center|baseline|stretch","-ms-flex-item-align":"auto|start|end|center|baseline|stretch","-ms-flex-line-pack":"start|end|center|justify|distribute|stretch","-ms-flex-negative":"<'flex-shrink'>","-ms-flex-pack":"start|end|center|justify|distribute","-ms-flex-order":"<integer>","-ms-flex-positive":"<'flex-grow'>","-ms-flex-preferred-size":"<'flex-basis'>","-ms-interpolation-mode":"nearest-neighbor|bicubic","-ms-grid-column-align":"start|end|center|stretch","-ms-grid-row-align":"start|end|center|stretch","-ms-hyphenate-limit-last":"none|always|column|page|spread","-webkit-background-clip":"[<box>|border|padding|content|text]#","-webkit-column-break-after":"always|auto|avoid","-webkit-column-break-before":"always|auto|avoid","-webkit-column-break-inside":"always|auto|avoid","-webkit-font-smoothing":"auto|none|antialiased|subpixel-antialiased","-webkit-mask-box-image":"[<url>|<gradient>|none] [<length-percentage>{4} <-webkit-mask-box-repeat>{2}]?","-webkit-print-color-adjust":"economy|exact","-webkit-text-security":"none|circle|disc|square","-webkit-user-drag":"none|element|auto","-webkit-user-select":"auto|none|text|all","alignment-baseline":"auto|baseline|before-edge|text-before-edge|middle|central|after-edge|text-after-edge|ideographic|alphabetic|hanging|mathematical","baseline-shift":"baseline|sub|super|<svg-length>",behavior:"<url>+","clip-rule":"nonzero|evenodd",cue:"<'cue-before'> <'cue-after'>?","cue-after":"<url> <decibel>?|none","cue-before":"<url> <decibel>?|none","dominant-baseline":"auto|use-script|no-change|reset-size|ideographic|alphabetic|hanging|mathematical|central|middle|text-after-edge|text-before-edge",fill:"<paint>","fill-opacity":"<number-zero-one>","fill-rule":"nonzero|evenodd","glyph-orientation-horizontal":"<angle>","glyph-orientation-vertical":"<angle>",kerning:"auto|<svg-length>",marker:"none|<url>","marker-end":"none|<url>","marker-mid":"none|<url>","marker-start":"none|<url>",pause:"<'pause-before'> <'pause-after'>?","pause-after":"<time>|none|x-weak|weak|medium|strong|x-strong","pause-before":"<time>|none|x-weak|weak|medium|strong|x-strong",rest:"<'rest-before'> <'rest-after'>?","rest-after":"<time>|none|x-weak|weak|medium|strong|x-strong","rest-before":"<time>|none|x-weak|weak|medium|strong|x-strong","shape-rendering":"auto|optimizeSpeed|crispEdges|geometricPrecision",src:"[<url> [format( <string># )]?|local( <family-name> )]#",speak:"auto|none|normal","speak-as":"normal|spell-out||digits||[literal-punctuation|no-punctuation]",stroke:"<paint>","stroke-dasharray":"none|[<svg-length>+]#","stroke-dashoffset":"<svg-length>","stroke-linecap":"butt|round|square","stroke-linejoin":"miter|round|bevel","stroke-miterlimit":"<number-one-or-greater>","stroke-opacity":"<number-zero-one>","stroke-width":"<svg-length>","text-anchor":"start|middle|end","unicode-range":"<urange>#","voice-balance":"<number>|left|center|right|leftwards|rightwards","voice-duration":"auto|<time>","voice-family":"[[<family-name>|<generic-voice>] ,]* [<family-name>|<generic-voice>]|preserve","voice-pitch":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-range":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-rate":"[normal|x-slow|slow|medium|fast|x-fast]||<percentage>","voice-stress":"normal|strong|moderate|none|reduced","voice-volume":"silent|[[x-soft|soft|medium|loud|x-loud]||<decibel>]"},atrules:{charset:{prelude:"<string>",descriptors:null},"counter-style":{prelude:"<counter-style-name>",descriptors:{"additive-symbols":"[<integer>&&<symbol>]#",fallback:"<counter-style-name>",negative:"<symbol> <symbol>?",pad:"<integer>&&<symbol>",prefix:"<symbol>",range:"[[<integer>|infinite]{2}]#|auto","speak-as":"auto|bullets|numbers|words|spell-out|<counter-style-name>",suffix:"<symbol>",symbols:"<symbol>+",system:"cyclic|numeric|alphabetic|symbolic|additive|[fixed <integer>?]|[extends <counter-style-name>]"}},document:{prelude:"[<url>|url-prefix( <string> )|domain( <string> )|media-document( <string> )|regexp( <string> )]#",descriptors:null},"font-face":{prelude:null,descriptors:{"ascent-override":"normal|<percentage>","descent-override":"normal|<percentage>","font-display":"[auto|block|swap|fallback|optional]","font-family":"<family-name>","font-feature-settings":"normal|<feature-tag-value>#","font-variation-settings":"normal|[<string> <number>]#","font-stretch":"<font-stretch-absolute>{1,2}","font-style":"normal|italic|oblique <angle>{0,2}","font-weight":"<font-weight-absolute>{1,2}","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]","line-gap-override":"normal|<percentage>","size-adjust":"<percentage>",src:"[<url> [format( <string># )]?|local( <family-name> )]#","unicode-range":"<urange>#"}},"font-feature-values":{prelude:"<family-name>#",descriptors:null},import:{prelude:"[<string>|<url>] [layer|layer( <layer-name> )]? [supports( [<supports-condition>|<declaration>] )]? <media-query-list>?",descriptors:null},keyframes:{prelude:"<keyframes-name>",descriptors:null},layer:{prelude:"[<layer-name>#|<layer-name>?]",descriptors:null},media:{prelude:"<media-query-list>",descriptors:null},namespace:{prelude:"<namespace-prefix>? [<string>|<url>]",descriptors:null},page:{prelude:"<page-selector-list>",descriptors:{bleed:"auto|<length>",marks:"none|[crop||cross]",size:"<length>{1,2}|auto|[<page-size>||[portrait|landscape]]"}},property:{prelude:"<custom-property-name>",descriptors:{syntax:"<string>",inherits:"true|false","initial-value":"<string>"}},"scroll-timeline":{prelude:"<timeline-name>",descriptors:null},supports:{prelude:"<supports-condition>",descriptors:null},viewport:{prelude:null,descriptors:{height:"<viewport-length>{1,2}","max-height":"<viewport-length>","max-width":"<viewport-length>","max-zoom":"auto|<number>|<percentage>","min-height":"<viewport-length>","min-width":"<viewport-length>","min-zoom":"auto|<number>|<percentage>",orientation:"auto|portrait|landscape","user-zoom":"zoom|fixed","viewport-fit":"auto|contain|cover",width:"<viewport-length>{1,2}",zoom:"auto|<number>|<percentage>"}},nest:{prelude:"<complex-selector-list>",descriptors:null}}};var Pb={};On(Pb,{AnPlusB:()=>dO,Atrule:()=>pO,AtrulePrelude:()=>hO,AttributeSelector:()=>_O,Block:()=>bO,Brackets:()=>xO,CDC:()=>SO,CDO:()=>MO,ClassSelector:()=>TO,Combinator:()=>DO,Comment:()=>IO,Declaration:()=>OO,DeclarationList:()=>FO,Dimension:()=>BO,Function:()=>zO,Hash:()=>$O,IdSelector:()=>WO,Identifier:()=>UO,MediaFeature:()=>XO,MediaQuery:()=>YO,MediaQueryList:()=>ZO,NestingSelector:()=>e4,Nth:()=>n4,Number:()=>o4,Operator:()=>a4,Parentheses:()=>l4,Percentage:()=>d4,PseudoClassSelector:()=>p4,PseudoElementSelector:()=>h4,Ratio:()=>g4,Raw:()=>v4,Rule:()=>C4,Selector:()=>y4,SelectorList:()=>w4,String:()=>T4,StyleSheet:()=>D4,TypeSelector:()=>A4,UnicodeRange:()=>R4,Url:()=>B4,Value:()=>z4,WhiteSpace:()=>$4});var dO={};On(dO,{generate:()=>F_e,name:()=>N_e,parse:()=>cO,structure:()=>R_e});var cd=43,Zs=45,Pw=110,nh=!0,O_e=!1;function Iw(t,i){let e=this.tokenStart+t,n=this.charCodeAt(e);for((n===cd||n===Zs)&&(i&&this.error("Number sign is not allowed"),e++);e<this.tokenEnd;e++)nr(this.charCodeAt(e))||this.error("Integer is expected",e)}function wg(t){return Iw.call(this,0,t)}function wp(t,i){if(!this.cmpChar(this.tokenStart+t,i)){let e="";switch(i){case Pw:e="N is expected";break;case Zs:e="HyphenMinus is expected";break}this.error(e,this.tokenStart+t)}}function lO(){let t=0,i=0,e=this.tokenType;for(;e===13||e===25;)e=this.lookupType(++t);if(e!==10)if(this.isDelim(cd,t)||this.isDelim(Zs,t)){i=this.isDelim(cd,t)?cd:Zs;do e=this.lookupType(++t);while(e===13||e===25);e!==10&&(this.skip(t),wg.call(this,nh))}else return null;return t>0&&this.skip(t),i===0&&(e=this.charCodeAt(this.tokenStart),e!==cd&&e!==Zs&&this.error("Number sign is expected")),wg.call(this,i!==0),i===Zs?"-"+this.consume(10):this.consume(10)}var N_e="AnPlusB",R_e={a:[String,null],b:[String,null]};function cO(){let t=this.tokenStart,i=null,e=null;if(this.tokenType===10)wg.call(this,O_e),e=this.consume(10);else if(this.tokenType===1&&this.cmpChar(this.tokenStart,Zs))switch(i="-1",wp.call(this,1,Pw),this.tokenEnd-this.tokenStart){case 2:this.next(),e=lO.call(this);break;case 3:wp.call(this,2,Zs),this.next(),this.skipSC(),wg.call(this,nh),e="-"+this.consume(10);break;default:wp.call(this,2,Zs),Iw.call(this,3,nh),this.next(),e=this.substrToCursor(t+2)}else if(this.tokenType===1||this.isDelim(cd)&&this.lookupType(1)===1){let n=0;switch(i="1",this.isDelim(cd)&&(n=1,this.next()),wp.call(this,0,Pw),this.tokenEnd-this.tokenStart){case 1:this.next(),e=lO.call(this);break;case 2:wp.call(this,1,Zs),this.next(),this.skipSC(),wg.call(this,nh),e="-"+this.consume(10);break;default:wp.call(this,1,Zs),Iw.call(this,2,nh),this.next(),e=this.substrToCursor(t+n+1)}}else if(this.tokenType===12){let n=this.charCodeAt(this.tokenStart),o=n===cd||n===Zs,r=this.tokenStart+o;for(;r<this.tokenEnd&&nr(this.charCodeAt(r));r++);r===this.tokenStart+o&&this.error("Integer is expected",this.tokenStart+o),wp.call(this,r-this.tokenStart,Pw),i=this.substring(t,r),r+1===this.tokenEnd?(this.next(),e=lO.call(this)):(wp.call(this,r-this.tokenStart+1,Zs),r+2===this.tokenEnd?(this.next(),this.skipSC(),wg.call(this,nh),e="-"+this.consume(10)):(Iw.call(this,r-this.tokenStart+2,nh),this.next(),e=this.substrToCursor(r+1)))}else this.error();return i!==null&&i.charCodeAt(0)===cd&&(i=i.substr(1)),e!==null&&e.charCodeAt(0)===cd&&(e=e.substr(1)),{type:"AnPlusB",loc:this.getLocation(t,this.tokenStart),a:i,b:e}}function F_e(t){if(t.a){let i=t.a==="+1"&&"n"||t.a==="1"&&"n"||t.a==="-1"&&"-n"||t.a+"n";if(t.b){let e=t.b[0]==="-"||t.b[0]==="+"?t.b:"+"+t.b;this.tokenize(i+e)}else this.tokenize(i)}else this.tokenize(t.b)}var pO={};On(pO,{generate:()=>j_e,name:()=>B_e,parse:()=>mO,structure:()=>z_e,walkContext:()=>V_e});function n9(t){return this.Raw(t,this.consumeUntilLeftCurlyBracketOrSemicolon,!0)}function L_e(){for(let t=1,i;i=this.lookupType(t);t++){if(i===24)return!0;if(i===23||i===3)return!1}return!1}var B_e="Atrule",V_e="atrule",z_e={name:String,prelude:["AtrulePrelude","Raw",null],block:["Block",null]};function mO(t=!1){let i=this.tokenStart,e,n,o=null,r=null;switch(this.eat(3),e=this.substrToCursor(i+1),n=e.toLowerCase(),this.skipSC(),this.eof===!1&&this.tokenType!==23&&this.tokenType!==17&&(this.parseAtrulePrelude?o=this.parseWithFallback(this.AtrulePrelude.bind(this,e,t),n9):o=n9.call(this,this.tokenIndex),this.skipSC()),this.tokenType){case 17:this.next();break;case 23:hasOwnProperty.call(this.atrule,n)&&typeof this.atrule[n].block=="function"?r=this.atrule[n].block.call(this,t):r=this.Block(L_e.call(this));break}return{type:"Atrule",loc:this.getLocation(i,this.tokenStart),name:e,prelude:o,block:r}}function j_e(t){this.token(3,"@"+t.name),t.prelude!==null&&this.node(t.prelude),t.block?this.node(t.block):this.token(17,";")}var hO={};On(hO,{generate:()=>G_e,name:()=>$_e,parse:()=>uO,structure:()=>U_e,walkContext:()=>H_e});var $_e="AtrulePrelude",H_e="atrulePrelude",U_e={children:[[]]};function uO(t){let i=null;return t!==null&&(t=t.toLowerCase()),this.skipSC(),hasOwnProperty.call(this.atrule,t)&&typeof this.atrule[t].prelude=="function"?i=this.atrule[t].prelude.call(this):i=this.readSequence(this.scope.AtrulePrelude),this.skipSC(),this.eof!==!0&&this.tokenType!==23&&this.tokenType!==17&&this.error("Semicolon or block is expected"),{type:"AtrulePrelude",loc:this.getLocationFromList(i),children:i}}function G_e(t){this.children(t)}var _O={};On(_O,{generate:()=>J_e,name:()=>K_e,parse:()=>gO,structure:()=>Z_e});var W_e=36,i9=42,Aw=61,q_e=94,fO=124,X_e=126;function Q_e(){this.eof&&this.error("Unexpected end of input");let t=this.tokenStart,i=!1;return this.isDelim(i9)?(i=!0,this.next()):this.isDelim(fO)||this.eat(1),this.isDelim(fO)?this.charCodeAt(this.tokenStart+1)!==Aw?(this.next(),this.eat(1)):i&&this.error("Identifier is expected",this.tokenEnd):i&&this.error("Vertical line is expected"),{type:"Identifier",loc:this.getLocation(t,this.tokenStart),name:this.substrToCursor(t)}}function Y_e(){let t=this.tokenStart,i=this.charCodeAt(t);return i!==Aw&&i!==X_e&&i!==q_e&&i!==W_e&&i!==i9&&i!==fO&&this.error("Attribute selector (=, ~=, ^=, $=, *=, |=) is expected"),this.next(),i!==Aw&&(this.isDelim(Aw)||this.error("Equal sign is expected"),this.next()),this.substrToCursor(t)}var K_e="AttributeSelector",Z_e={name:"Identifier",matcher:[String,null],value:["String","Identifier",null],flags:[String,null]};function gO(){let t=this.tokenStart,i,e=null,n=null,o=null;return this.eat(19),this.skipSC(),i=Q_e.call(this),this.skipSC(),this.tokenType!==20&&(this.tokenType!==1&&(e=Y_e.call(this),this.skipSC(),n=this.tokenType===5?this.String():this.Identifier(),this.skipSC()),this.tokenType===1&&(o=this.consume(1),this.skipSC())),this.eat(20),{type:"AttributeSelector",loc:this.getLocation(t,this.tokenStart),name:i,matcher:e,value:n,flags:o}}function J_e(t){this.token(9,"["),this.node(t.name),t.matcher!==null&&(this.tokenize(t.matcher),this.node(t.value)),t.flags!==null&&this.token(1,t.flags),this.token(9,"]")}var bO={};On(bO,{generate:()=>r0e,name:()=>n0e,parse:()=>vO,structure:()=>o0e,walkContext:()=>i0e});var e0e=38;function a9(t){return this.Raw(t,null,!0)}function o9(){return this.parseWithFallback(this.Rule,a9)}function r9(t){return this.Raw(t,this.consumeUntilSemicolonIncluded,!0)}function t0e(){if(this.tokenType===17)return r9.call(this,this.tokenIndex);let t=this.parseWithFallback(this.Declaration,r9);return this.tokenType===17&&this.next(),t}var n0e="Block",i0e="block",o0e={children:[["Atrule","Rule","Declaration"]]};function vO(t){let i=t?t0e:o9,e=this.tokenStart,n=this.createList();this.eat(23);e:for(;!this.eof;)switch(this.tokenType){case 24:break e;case 13:case 25:this.next();break;case 3:n.push(this.parseWithFallback(this.Atrule.bind(this,t),a9));break;default:t&&this.isDelim(e0e)?n.push(o9.call(this)):n.push(i.call(this))}return this.eof||this.eat(24),{type:"Block",loc:this.getLocation(e,this.tokenStart),children:n}}function r0e(t){this.token(23,"{"),this.children(t,i=>{i.type==="Declaration"&&this.token(17,";")}),this.token(24,"}")}var xO={};On(xO,{generate:()=>l0e,name:()=>a0e,parse:()=>CO,structure:()=>s0e});var a0e="Brackets",s0e={children:[[]]};function CO(t,i){let e=this.tokenStart,n=null;return this.eat(19),n=t.call(this,i),this.eof||this.eat(20),{type:"Brackets",loc:this.getLocation(e,this.tokenStart),children:n}}function l0e(t){this.token(9,"["),this.children(t),this.token(9,"]")}var SO={};On(SO,{generate:()=>m0e,name:()=>c0e,parse:()=>yO,structure:()=>d0e});var c0e="CDC",d0e=[];function yO(){let t=this.tokenStart;return this.eat(15),{type:"CDC",loc:this.getLocation(t,this.tokenStart)}}function m0e(){this.token(15,"-->")}var MO={};On(MO,{generate:()=>h0e,name:()=>p0e,parse:()=>wO,structure:()=>u0e});var p0e="CDO",u0e=[];function wO(){let t=this.tokenStart;return this.eat(14),{type:"CDO",loc:this.getLocation(t,this.tokenStart)}}function h0e(){this.token(14,"<!--")}var TO={};On(TO,{generate:()=>v0e,name:()=>g0e,parse:()=>kO,structure:()=>_0e});var f0e=46,g0e="ClassSelector",_0e={name:String};function kO(){return this.eatDelim(f0e),{type:"ClassSelector",loc:this.getLocation(this.tokenStart-1,this.tokenEnd),name:this.consume(1)}}function v0e(t){this.token(9,"."),this.token(1,t.name)}var DO={};On(DO,{generate:()=>w0e,name:()=>y0e,parse:()=>EO,structure:()=>S0e});var b0e=43,s9=47,C0e=62,x0e=126,y0e="Combinator",S0e={name:String};function EO(){let t=this.tokenStart,i;switch(this.tokenType){case 13:i=" ";break;case 9:switch(this.charCodeAt(this.tokenStart)){case C0e:case b0e:case x0e:this.next();break;case s9:this.next(),this.eatIdent("deep"),this.eatDelim(s9);break;default:this.error("Combinator is expected")}i=this.substrToCursor(t);break}return{type:"Combinator",loc:this.getLocation(t,this.tokenStart),name:i}}function w0e(t){this.tokenize(t.name)}var IO={};On(IO,{generate:()=>D0e,name:()=>T0e,parse:()=>PO,structure:()=>E0e});var M0e=42,k0e=47,T0e="Comment",E0e={value:String};function PO(){let t=this.tokenStart,i=this.tokenEnd;return this.eat(25),i-t+2>=2&&this.charCodeAt(i-2)===M0e&&this.charCodeAt(i-1)===k0e&&(i-=2),{type:"Comment",loc:this.getLocation(t,this.tokenStart),value:this.substring(t+2,i)}}function D0e(t){this.token(25,"/*"+t.value+"*/")}var OO={};On(OO,{generate:()=>j0e,name:()=>B0e,parse:()=>AO,structure:()=>z0e,walkContext:()=>V0e});var c9=33,P0e=35,I0e=36,A0e=38,O0e=42,N0e=43,l9=47;function R0e(t){return this.Raw(t,this.consumeUntilExclamationMarkOrSemicolon,!0)}function F0e(t){return this.Raw(t,this.consumeUntilExclamationMarkOrSemicolon,!1)}function L0e(){let t=this.tokenIndex,i=this.Value();return i.type!=="Raw"&&this.eof===!1&&this.tokenType!==17&&this.isDelim(c9)===!1&&this.isBalanceEdge(t)===!1&&this.error(),i}var B0e="Declaration",V0e="declaration",z0e={important:[Boolean,String],property:String,value:["Value","Raw"]};function AO(){let t=this.tokenStart,i=this.tokenIndex,e=$0e.call(this),n=_w(e),o=n?this.parseCustomProperty:this.parseValue,r=n?F0e:R0e,a=!1,c;this.skipSC(),this.eat(16);let m=this.tokenIndex;if(n||this.skipSC(),o?c=this.parseWithFallback(L0e,r):c=r.call(this,this.tokenIndex),n&&c.type==="Value"&&c.children.isEmpty){for(let p=m-this.tokenIndex;p<=0;p++)if(this.lookupType(p)===13){c.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}return this.isDelim(c9)&&(a=H0e.call(this),this.skipSC()),this.eof===!1&&this.tokenType!==17&&this.isBalanceEdge(i)===!1&&this.error(),{type:"Declaration",loc:this.getLocation(t,this.tokenStart),important:a,property:e,value:c}}function j0e(t){this.token(1,t.property),this.token(16,":"),this.node(t.value),t.important&&(this.token(9,"!"),this.token(1,t.important===!0?"important":t.important))}function $0e(){let t=this.tokenStart;if(this.tokenType===9)switch(this.charCodeAt(this.tokenStart)){case O0e:case I0e:case N0e:case P0e:case A0e:this.next();break;case l9:this.next(),this.isDelim(l9)&&this.next();break}return this.tokenType===4?this.eat(4):this.eat(1),this.substrToCursor(t)}function H0e(){this.eat(9),this.skipSC();let t=this.consume(1);return t==="important"?!0:t}var FO={};On(FO,{generate:()=>q0e,name:()=>G0e,parse:()=>RO,structure:()=>W0e});var U0e=38;function NO(t){return this.Raw(t,this.consumeUntilSemicolonIncluded,!0)}var G0e="DeclarationList",W0e={children:[["Declaration","Atrule","Rule"]]};function RO(){let t=this.createList();for(;!this.eof;)switch(this.tokenType){case 13:case 25:case 17:this.next();break;case 3:t.push(this.parseWithFallback(this.Atrule.bind(this,!0),NO));break;default:this.isDelim(U0e)?t.push(this.parseWithFallback(this.Rule,NO)):t.push(this.parseWithFallback(this.Declaration,NO))}return{type:"DeclarationList",loc:this.getLocationFromList(t),children:t}}function q0e(t){this.children(t,i=>{i.type==="Declaration"&&this.token(17,";")})}var BO={};On(BO,{generate:()=>Y0e,name:()=>X0e,parse:()=>LO,structure:()=>Q0e});var X0e="Dimension",Q0e={value:String,unit:String};function LO(){let t=this.tokenStart,i=this.consumeNumber(12);return{type:"Dimension",loc:this.getLocation(t,this.tokenStart),value:i,unit:this.substring(t+i.length,this.tokenStart)}}function Y0e(t){this.token(12,t.value+t.unit)}var zO={};On(zO,{generate:()=>eve,name:()=>K0e,parse:()=>VO,structure:()=>J0e,walkContext:()=>Z0e});var K0e="Function",Z0e="function",J0e={name:String,children:[[]]};function VO(t,i){let e=this.tokenStart,n=this.consumeFunctionName(),o=n.toLowerCase(),r;return r=i.hasOwnProperty(o)?i[o].call(this,i):t.call(this,i),this.eof||this.eat(22),{type:"Function",loc:this.getLocation(e,this.tokenStart),name:n,children:r}}function eve(t){this.token(2,t.name+"("),this.children(t),this.token(22,")")}var $O={};On($O,{generate:()=>ove,name:()=>nve,parse:()=>jO,structure:()=>ive,xxx:()=>tve});var tve="XXX",nve="Hash",ive={value:String};function jO(){let t=this.tokenStart;return this.eat(4),{type:"Hash",loc:this.getLocation(t,this.tokenStart),value:this.substrToCursor(t+1)}}function ove(t){this.token(4,"#"+t.value)}var UO={};On(UO,{generate:()=>sve,name:()=>rve,parse:()=>HO,structure:()=>ave});var rve="Identifier",ave={name:String};function HO(){return{type:"Identifier",loc:this.getLocation(this.tokenStart,this.tokenEnd),name:this.consume(1)}}function sve(t){this.token(1,t.name)}var WO={};On(WO,{generate:()=>dve,name:()=>lve,parse:()=>GO,structure:()=>cve});var lve="IdSelector",cve={name:String};function GO(){let t=this.tokenStart;return this.eat(4),{type:"IdSelector",loc:this.getLocation(t,this.tokenStart),name:this.substrToCursor(t+1)}}function dve(t){this.token(9,"#"+t.name)}var XO={};On(XO,{generate:()=>uve,name:()=>mve,parse:()=>qO,structure:()=>pve});var mve="MediaFeature",pve={name:String,value:["Identifier","Number","Dimension","Ratio",null]};function qO(){let t=this.tokenStart,i,e=null;if(this.eat(21),this.skipSC(),i=this.consume(1),this.skipSC(),this.tokenType!==22){switch(this.eat(16),this.skipSC(),this.tokenType){case 10:this.lookupNonWSType(1)===9?e=this.Ratio():e=this.Number();break;case 12:e=this.Dimension();break;case 1:e=this.Identifier();break;default:this.error("Number, dimension, ratio or identifier is expected")}this.skipSC()}return this.eat(22),{type:"MediaFeature",loc:this.getLocation(t,this.tokenStart),name:i,value:e}}function uve(t){this.token(21,"("),this.token(1,t.name),t.value!==null&&(this.token(16,":"),this.node(t.value)),this.token(22,")")}var YO={};On(YO,{generate:()=>gve,name:()=>hve,parse:()=>QO,structure:()=>fve});var hve="MediaQuery",fve={children:[["Identifier","MediaFeature","WhiteSpace"]]};function QO(){let t=this.createList(),i=null;this.skipSC();e:for(;!this.eof;){switch(this.tokenType){case 25:case 13:this.next();continue;case 1:i=this.Identifier();break;case 21:i=this.MediaFeature();break;default:break e}t.push(i)}return i===null&&this.error("Identifier or parenthesis is expected"),{type:"MediaQuery",loc:this.getLocationFromList(t),children:t}}function gve(t){this.children(t)}var ZO={};On(ZO,{generate:()=>bve,name:()=>_ve,parse:()=>KO,structure:()=>vve});var _ve="MediaQueryList",vve={children:[["MediaQuery"]]};function KO(){let t=this.createList();for(this.skipSC();!this.eof&&(t.push(this.MediaQuery()),this.tokenType===18);)this.next();return{type:"MediaQueryList",loc:this.getLocationFromList(t),children:t}}function bve(t){this.children(t,()=>this.token(18,","))}var e4={};On(e4,{generate:()=>Sve,name:()=>xve,parse:()=>JO,structure:()=>yve});var Cve=38,xve="NestingSelector",yve={};function JO(){let t=this.tokenStart;return this.eatDelim(Cve),{type:"NestingSelector",loc:this.getLocation(t,this.tokenStart)}}function Sve(){this.token(9,"&")}var n4={};On(n4,{generate:()=>kve,name:()=>wve,parse:()=>t4,structure:()=>Mve});var wve="Nth",Mve={nth:["AnPlusB","Identifier"],selector:["SelectorList",null]};function t4(){this.skipSC();let t=this.tokenStart,i=t,e=null,n;return this.lookupValue(0,"odd")||this.lookupValue(0,"even")?n=this.Identifier():n=this.AnPlusB(),i=this.tokenStart,this.skipSC(),this.lookupValue(0,"of")&&(this.next(),e=this.SelectorList(),i=this.tokenStart),{type:"Nth",loc:this.getLocation(t,i),nth:n,selector:e}}function kve(t){this.node(t.nth),t.selector!==null&&(this.token(1,"of"),this.node(t.selector))}var o4={};On(o4,{generate:()=>Dve,name:()=>Tve,parse:()=>i4,structure:()=>Eve});var Tve="Number",Eve={value:String};function i4(){return{type:"Number",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consume(10)}}function Dve(t){this.token(10,t.value)}var a4={};On(a4,{generate:()=>Ave,name:()=>Pve,parse:()=>r4,structure:()=>Ive});var Pve="Operator",Ive={value:String};function r4(){let t=this.tokenStart;return this.next(),{type:"Operator",loc:this.getLocation(t,this.tokenStart),value:this.substrToCursor(t)}}function Ave(t){this.tokenize(t.value)}var l4={};On(l4,{generate:()=>Rve,name:()=>Ove,parse:()=>s4,structure:()=>Nve});var Ove="Parentheses",Nve={children:[[]]};function s4(t,i){let e=this.tokenStart,n=null;return this.eat(21),n=t.call(this,i),this.eof||this.eat(22),{type:"Parentheses",loc:this.getLocation(e,this.tokenStart),children:n}}function Rve(t){this.token(21,"("),this.children(t),this.token(22,")")}var d4={};On(d4,{generate:()=>Bve,name:()=>Fve,parse:()=>c4,structure:()=>Lve});var Fve="Percentage",Lve={value:String};function c4(){return{type:"Percentage",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consumeNumber(11)}}function Bve(t){this.token(11,t.value+"%")}var p4={};On(p4,{generate:()=>$ve,name:()=>Vve,parse:()=>m4,structure:()=>jve,walkContext:()=>zve});var Vve="PseudoClassSelector",zve="function",jve={name:String,children:[["Raw"],null]};function m4(){let t=this.tokenStart,i=null,e,n;return this.eat(16),this.tokenType===2?(e=this.consumeFunctionName(),n=e.toLowerCase(),hasOwnProperty.call(this.pseudo,n)?(this.skipSC(),i=this.pseudo[n].call(this),this.skipSC()):(i=this.createList(),i.push(this.Raw(this.tokenIndex,null,!1))),this.eat(22)):e=this.consume(1),{type:"PseudoClassSelector",loc:this.getLocation(t,this.tokenStart),name:e,children:i}}function $ve(t){this.token(16,":"),t.children===null?this.token(1,t.name):(this.token(2,t.name+"("),this.children(t),this.token(22,")"))}var h4={};On(h4,{generate:()=>Wve,name:()=>Hve,parse:()=>u4,structure:()=>Gve,walkContext:()=>Uve});var Hve="PseudoElementSelector",Uve="function",Gve={name:String,children:[["Raw"],null]};function u4(){let t=this.tokenStart,i=null,e,n;return this.eat(16),this.eat(16),this.tokenType===2?(e=this.consumeFunctionName(),n=e.toLowerCase(),hasOwnProperty.call(this.pseudo,n)?(this.skipSC(),i=this.pseudo[n].call(this),this.skipSC()):(i=this.createList(),i.push(this.Raw(this.tokenIndex,null,!1))),this.eat(22)):e=this.consume(1),{type:"PseudoElementSelector",loc:this.getLocation(t,this.tokenStart),name:e,children:i}}function Wve(t){this.token(16,":"),this.token(16,":"),t.children===null?this.token(1,t.name):(this.token(2,t.name+"("),this.children(t),this.token(22,")"))}var g4={};On(g4,{generate:()=>Kve,name:()=>Qve,parse:()=>f4,structure:()=>Yve});var qve=47,Xve=46;function d9(){this.skipSC();let t=this.consume(10);for(let i=0;i<t.length;i++){let e=t.charCodeAt(i);!nr(e)&&e!==Xve&&this.error("Unsigned number is expected",this.tokenStart-t.length+i)}return Number(t)===0&&this.error("Zero number is not allowed",this.tokenStart-t.length),t}var Qve="Ratio",Yve={left:String,right:String};function f4(){let t=this.tokenStart,i=d9.call(this),e;return this.skipSC(),this.eatDelim(qve),e=d9.call(this),{type:"Ratio",loc:this.getLocation(t,this.tokenStart),left:i,right:e}}function Kve(t){this.token(10,t.left),this.token(9,"/"),this.token(10,t.right)}var v4={};On(v4,{generate:()=>tbe,name:()=>Jve,parse:()=>_4,structure:()=>ebe});function Zve(){return this.tokenIndex>0&&this.lookupType(-1)===13?this.tokenIndex>1?this.getTokenStart(this.tokenIndex-1):this.firstCharOffset:this.tokenStart}var Jve="Raw",ebe={value:String};function _4(t,i,e){let n=this.getTokenStart(t),o;return this.skipUntilBalanced(t,i||this.consumeUntilBalanceEnd),e&&this.tokenStart>n?o=Zve.call(this):o=this.tokenStart,{type:"Raw",loc:this.getLocation(n,o),value:this.substring(n,o)}}function tbe(t){this.tokenize(t.value)}var C4={};On(C4,{generate:()=>abe,name:()=>ibe,parse:()=>b4,structure:()=>rbe,walkContext:()=>obe});function m9(t){return this.Raw(t,this.consumeUntilLeftCurlyBracket,!0)}function nbe(){let t=this.SelectorList();return t.type!=="Raw"&&this.eof===!1&&this.tokenType!==23&&this.error(),t}var ibe="Rule",obe="rule",rbe={prelude:["SelectorList","Raw"],block:["Block"]};function b4(){let t=this.tokenIndex,i=this.tokenStart,e,n;return this.parseRulePrelude?e=this.parseWithFallback(nbe,m9):e=m9.call(this,t),n=this.Block(!0),{type:"Rule",loc:this.getLocation(i,this.tokenStart),prelude:e,block:n}}function abe(t){this.node(t.prelude),this.node(t.block)}var y4={};On(y4,{generate:()=>cbe,name:()=>sbe,parse:()=>x4,structure:()=>lbe});var sbe="Selector",lbe={children:[["TypeSelector","IdSelector","ClassSelector","AttributeSelector","PseudoClassSelector","PseudoElementSelector","Combinator","WhiteSpace"]]};function x4(){let t=this.readSequence(this.scope.Selector);return this.getFirstListNode(t)===null&&this.error("Selector is expected"),{type:"Selector",loc:this.getLocationFromList(t),children:t}}function cbe(t){this.children(t)}var w4={};On(w4,{generate:()=>ube,name:()=>dbe,parse:()=>S4,structure:()=>pbe,walkContext:()=>mbe});var dbe="SelectorList",mbe="selector",pbe={children:[["Selector","Raw"]]};function S4(){let t=this.createList();for(;!this.eof;){if(t.push(this.Selector()),this.tokenType===18){this.next();continue}break}return{type:"SelectorList",loc:this.getLocationFromList(t),children:t}}function ube(t){this.children(t,()=>this.token(18,","))}var T4={};On(T4,{generate:()=>gbe,name:()=>hbe,parse:()=>k4,structure:()=>fbe});var M4=92,p9=34,u9=39;function Ow(t){let i=t.length,e=t.charCodeAt(0),n=e===p9||e===u9?1:0,o=n===1&&i>1&&t.charCodeAt(i-1)===e?i-2:i-1,r="";for(let a=n;a<=o;a++){let c=t.charCodeAt(a);if(c===M4){if(a===o){a!==i-1&&(r=t.substr(a+1));break}if(c=t.charCodeAt(++a),Ja(M4,c)){let m=a-1,p=sd(t,m);a=p-1,r+=hb(t.substring(m+1,p))}else c===13&&t.charCodeAt(a+1)===10&&a++}else r+=t[a]}return r}function h9(t,i){let e=i?"'":'"',n=i?u9:p9,o="",r=!1;for(let a=0;a<t.length;a++){let c=t.charCodeAt(a);if(c===0){o+="\uFFFD";continue}if(c<=31||c===127){o+="\\"+c.toString(16),r=!0;continue}c===n||c===M4?(o+="\\"+t.charAt(a),r=!1):(r&&(ks(c)||ad(c))&&(o+=" "),o+=t.charAt(a),r=!1)}return e+o+e}var hbe="String",fbe={value:String};function k4(){return{type:"String",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:Ow(this.consume(5))}}function gbe(t){this.token(5,h9(t.value))}var D4={};On(D4,{generate:()=>xbe,name:()=>vbe,parse:()=>E4,structure:()=>Cbe,walkContext:()=>bbe});var _be=33;function g9(t){return this.Raw(t,null,!1)}var vbe="StyleSheet",bbe="stylesheet",Cbe={children:[["Comment","CDO","CDC","Atrule","Rule","Raw"]]};function E4(){let t=this.tokenStart,i=this.createList(),e;for(;!this.eof;){switch(this.tokenType){case 13:this.next();continue;case 25:if(this.charCodeAt(this.tokenStart+2)!==_be){this.next();continue}e=this.Comment();break;case 14:e=this.CDO();break;case 15:e=this.CDC();break;case 3:e=this.parseWithFallback(this.Atrule,g9);break;default:e=this.parseWithFallback(this.Rule,g9)}i.push(e)}return{type:"StyleSheet",loc:this.getLocation(t,this.tokenStart),children:i}}function xbe(t){this.children(t)}var A4={};On(A4,{generate:()=>Mbe,name:()=>Sbe,parse:()=>I4,structure:()=>wbe});var ybe=42,_9=124;function P4(){this.tokenType!==1&&this.isDelim(ybe)===!1&&this.error("Identifier or asterisk is expected"),this.next()}var Sbe="TypeSelector",wbe={name:String};function I4(){let t=this.tokenStart;return this.isDelim(_9)?(this.next(),P4.call(this)):(P4.call(this),this.isDelim(_9)&&(this.next(),P4.call(this))),{type:"TypeSelector",loc:this.getLocation(t,this.tokenStart),name:this.substrToCursor(t)}}function Mbe(t){this.tokenize(t.name)}var R4={};On(R4,{generate:()=>Pbe,name:()=>Ebe,parse:()=>N4,structure:()=>Dbe});var v9=43,b9=45,O4=63;function Db(t,i){let e=0;for(let n=this.tokenStart+t;n<this.tokenEnd;n++){let o=this.charCodeAt(n);if(o===b9&&i&&e!==0)return Db.call(this,t+e+1,!1),-1;ks(o)||this.error(i&&e!==0?"Hyphen minus"+(e<6?" or hex digit":"")+" is expected":e<6?"Hex digit is expected":"Unexpected input",n),++e>6&&this.error("Too many hex digits",n)}return this.next(),e}function Nw(t){let i=0;for(;this.isDelim(O4);)++i>t&&this.error("Too many question marks"),this.next()}function kbe(t){this.charCodeAt(this.tokenStart)!==t&&this.error((t===v9?"Plus sign":"Hyphen minus")+" is expected")}function Tbe(){let t=0;switch(this.tokenType){case 10:if(t=Db.call(this,1,!0),this.isDelim(O4)){Nw.call(this,6-t);break}if(this.tokenType===12||this.tokenType===10){kbe.call(this,b9),Db.call(this,1,!1);break}break;case 12:t=Db.call(this,1,!0),t>0&&Nw.call(this,6-t);break;default:if(this.eatDelim(v9),this.tokenType===1){t=Db.call(this,0,!0),t>0&&Nw.call(this,6-t);break}if(this.isDelim(O4)){this.next(),Nw.call(this,5);break}this.error("Hex digit or question mark is expected")}}var Ebe="UnicodeRange",Dbe={value:String};function N4(){let t=this.tokenStart;return this.eatIdent("u"),Tbe.call(this),{type:"UnicodeRange",loc:this.getLocation(t,this.tokenStart),value:this.substrToCursor(t)}}function Pbe(t){this.tokenize(t.value)}var B4={};On(B4,{generate:()=>Lbe,name:()=>Rbe,parse:()=>L4,structure:()=>Fbe});var Ibe=32,F4=92,Abe=34,Obe=39,Nbe=40,C9=41;function x9(t){let i=t.length,e=4,n=t.charCodeAt(i-1)===C9?i-2:i-1,o="";for(;e<n&&ad(t.charCodeAt(e));)e++;for(;e<n&&ad(t.charCodeAt(n));)n--;for(let r=e;r<=n;r++){let a=t.charCodeAt(r);if(a===F4){if(r===n){r!==i-1&&(o=t.substr(r+1));break}if(a=t.charCodeAt(++r),Ja(F4,a)){let c=r-1,m=sd(t,c);r=m-1,o+=hb(t.substring(c+1,m))}else a===13&&t.charCodeAt(r+1)===10&&r++}else o+=t[r]}return o}function y9(t){let i="",e=!1;for(let n=0;n<t.length;n++){let o=t.charCodeAt(n);if(o===0){i+="\uFFFD";continue}if(o<=31||o===127){i+="\\"+o.toString(16),e=!0;continue}o===Ibe||o===F4||o===Abe||o===Obe||o===Nbe||o===C9?(i+="\\"+t.charAt(n),e=!1):(e&&ks(o)&&(i+=" "),i+=t.charAt(n),e=!1)}return"url("+i+")"}var Rbe="Url",Fbe={value:String};function L4(){let t=this.tokenStart,i;switch(this.tokenType){case 7:i=x9(this.consume(7));break;case 2:this.cmpStr(this.tokenStart,this.tokenEnd,"url(")||this.error("Function name must be `url`"),this.eat(2),this.skipSC(),i=Ow(this.consume(5)),this.skipSC(),this.eof||this.eat(22);break;default:this.error("Url or Function is expected")}return{type:"Url",loc:this.getLocation(t,this.tokenStart),value:i}}function Lbe(t){this.token(7,y9(t.value))}var z4={};On(z4,{generate:()=>zbe,name:()=>Bbe,parse:()=>V4,structure:()=>Vbe});var Bbe="Value",Vbe={children:[[]]};function V4(){let t=this.tokenStart,i=this.readSequence(this.scope.Value);return{type:"Value",loc:this.getLocation(t,this.tokenStart),children:i}}function zbe(t){this.children(t)}var $4={};On($4,{generate:()=>Ube,name:()=>$be,parse:()=>j4,structure:()=>Hbe});var jbe=Object.freeze({type:"WhiteSpace",loc:null,value:" "}),$be="WhiteSpace",Hbe={value:String};function j4(){return this.eat(13),jbe}function Ube(t){this.token(13,t.value)}var w9=tt(H({generic:!0},t9),{node:Pb});var H4={};On(H4,{AtrulePrelude:()=>k9,Selector:()=>E9,Value:()=>A9});var Gbe=35,Wbe=42,M9=43,qbe=45,Xbe=47,Qbe=117;function Ib(t){switch(this.tokenType){case 4:return this.Hash();case 18:return this.Operator();case 21:return this.Parentheses(this.readSequence,t.recognizer);case 19:return this.Brackets(this.readSequence,t.recognizer);case 5:return this.String();case 12:return this.Dimension();case 11:return this.Percentage();case 10:return this.Number();case 2:return this.cmpStr(this.tokenStart,this.tokenEnd,"url(")?this.Url():this.Function(this.readSequence,t.recognizer);case 7:return this.Url();case 1:return this.cmpChar(this.tokenStart,Qbe)&&this.cmpChar(this.tokenStart+1,M9)?this.UnicodeRange():this.Identifier();case 9:{let i=this.charCodeAt(this.tokenStart);if(i===Xbe||i===Wbe||i===M9||i===qbe)return this.Operator();i===Gbe&&this.error("Hex or identifier is expected",this.tokenStart+1);break}}}var k9={getNode:Ib};var Ybe=35,Kbe=38,Zbe=42,Jbe=43,eCe=47,T9=46,tCe=62,nCe=124,iCe=126;function oCe(t,i){i.last!==null&&i.last.type!=="Combinator"&&t!==null&&t.type!=="Combinator"&&i.push({type:"Combinator",loc:null,name:" "})}function rCe(){switch(this.tokenType){case 19:return this.AttributeSelector();case 4:return this.IdSelector();case 16:return this.lookupType(1)===16?this.PseudoElementSelector():this.PseudoClassSelector();case 1:return this.TypeSelector();case 10:case 11:return this.Percentage();case 12:this.charCodeAt(this.tokenStart)===T9&&this.error("Identifier is expected",this.tokenStart+1);break;case 9:{switch(this.charCodeAt(this.tokenStart)){case Jbe:case tCe:case iCe:case eCe:return this.Combinator();case T9:return this.ClassSelector();case Zbe:case nCe:return this.TypeSelector();case Ybe:return this.IdSelector();case Kbe:return this.NestingSelector()}break}}}var E9={onWhiteSpace:oCe,getNode:rCe};function D9(){return this.createSingleNodeList(this.Raw(this.tokenIndex,null,!1))}function P9(){let t=this.createList();if(this.skipSC(),t.push(this.Identifier()),this.skipSC(),this.tokenType===18){t.push(this.Operator());let i=this.tokenIndex,e=this.parseCustomProperty?this.Value(null):this.Raw(this.tokenIndex,this.consumeUntilExclamationMarkOrSemicolon,!1);if(e.type==="Value"&&e.children.isEmpty){for(let n=i-this.tokenIndex;n<=0;n++)if(this.lookupType(n)===13){e.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}t.push(e)}return t}function I9(t){return t!==null&&t.type==="Operator"&&(t.value[t.value.length-1]==="-"||t.value[t.value.length-1]==="+")}var A9={getNode:Ib,onWhiteSpace(t,i){I9(t)&&(t.value=" "+t.value),I9(i.last)&&(i.last.value+=" ")},expression:D9,var:P9};var O9={parse:{prelude:null,block(){return this.Block(!0)}}};var N9={parse:{prelude(){let t=this.createList();switch(this.skipSC(),this.tokenType){case 5:t.push(this.String());break;case 7:case 2:t.push(this.Url());break;default:this.error("String or url() is expected")}return(this.lookupNonWSType(0)===1||this.lookupNonWSType(0)===21)&&t.push(this.MediaQueryList()),t},block:null}};var R9={parse:{prelude(){return this.createSingleNodeList(this.MediaQueryList())},block(t=!1){return this.Block(t)}}};var F9={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}};var L9={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}};function aCe(){return this.createSingleNodeList(this.Raw(this.tokenIndex,null,!1))}function sCe(){return this.skipSC(),this.tokenType===1&&this.lookupNonWSType(1)===16?this.createSingleNodeList(this.Declaration()):B9.call(this)}function B9(){let t=this.createList(),i;this.skipSC();e:for(;!this.eof;){switch(this.tokenType){case 25:case 13:this.next();continue;case 2:i=this.Function(aCe,this.scope.AtrulePrelude);break;case 1:i=this.Identifier();break;case 21:i=this.Parentheses(sCe,this.scope.AtrulePrelude);break;default:break e}t.push(i)}return t}var V9={parse:{prelude(){let t=B9.call(this);return this.getFirstListNode(t)===null&&this.error("Condition is expected"),t},block(t=!1){return this.Block(t)}}};var z9={"font-face":O9,import:N9,media:R9,nest:F9,page:L9,supports:V9};var ih={parse(){return this.createSingleNodeList(this.SelectorList())}},U4={parse(){return this.createSingleNodeList(this.Selector())}},j9={parse(){return this.createSingleNodeList(this.Identifier())}},Rw={parse(){return this.createSingleNodeList(this.Nth())}},$9={dir:j9,has:ih,lang:j9,matches:ih,is:ih,"-moz-any":ih,"-webkit-any":ih,where:ih,not:ih,"nth-child":Rw,"nth-last-child":Rw,"nth-last-of-type":Rw,"nth-of-type":Rw,slotted:U4,host:U4,"host-context":U4};var G4={};On(G4,{AnPlusB:()=>cO,Atrule:()=>mO,AtrulePrelude:()=>uO,AttributeSelector:()=>gO,Block:()=>vO,Brackets:()=>CO,CDC:()=>yO,CDO:()=>wO,ClassSelector:()=>kO,Combinator:()=>EO,Comment:()=>PO,Declaration:()=>AO,DeclarationList:()=>RO,Dimension:()=>LO,Function:()=>VO,Hash:()=>jO,IdSelector:()=>GO,Identifier:()=>HO,MediaFeature:()=>qO,MediaQuery:()=>QO,MediaQueryList:()=>KO,NestingSelector:()=>JO,Nth:()=>t4,Number:()=>i4,Operator:()=>r4,Parentheses:()=>s4,Percentage:()=>c4,PseudoClassSelector:()=>m4,PseudoElementSelector:()=>u4,Ratio:()=>f4,Raw:()=>_4,Rule:()=>b4,Selector:()=>x4,SelectorList:()=>S4,String:()=>k4,StyleSheet:()=>E4,TypeSelector:()=>I4,UnicodeRange:()=>N4,Url:()=>L4,Value:()=>V4,WhiteSpace:()=>j4});var H9={parseContext:{default:"StyleSheet",stylesheet:"StyleSheet",atrule:"Atrule",atrulePrelude(t){return this.AtrulePrelude(t.atrule?String(t.atrule):null)},mediaQueryList:"MediaQueryList",mediaQuery:"MediaQuery",rule:"Rule",selectorList:"SelectorList",selector:"Selector",block(){return this.Block(!0)},declarationList:"DeclarationList",declaration:"Declaration",value:"Value"},scope:H4,atrule:z9,pseudo:$9,node:G4};var U9={node:Pb};var G9=sO(H(H(H({},w9),H9),U9));var{tokenize:Fpt,parse:Mg,generate:Fw,lexer:Lpt,createLexer:Bpt,walk:Vpt,find:zpt,findLast:jpt,findAll:$pt,toPlainObject:Hpt,fromPlainObject:Upt,fork:Gpt}=G9;var Ll=(()=>{class t{fix(e){let n=Mg(e,{context:"declarationList"});return n.children.forEach(o=>{o.property==="font-size"&&o.value&&o.value.children&&o.value.children.forEach(r=>{if(r.type==="Number"){let a=r.value.toString();a.indexOf("pt")>=0||a.indexOf("px")>=0||(r.value=`${a}pt`)}})}),Fw(n)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var ca=(()=>{class t{static DEFAULT_FONT="TypeWriter";static DEFAULT_SIZE=10;static REPLACE_BY_FONT="Noto Sans";static REPLACE_BY_SIZE=11;fix(e){return e.font_family===t.DEFAULT_FONT&&e.font_size===t.DEFAULT_SIZE&&(e.font_family=t.REPLACE_BY_FONT,e.font_size=t.REPLACE_BY_SIZE),e}fixStyles(e){let n=Mg(e,{context:"declarationList"}),o=null,r=null,a=!0;if(n.children.forEach(c=>{c.property==="font-family"&&c.value&&c.value.children&&c.value.children.forEach(m=>{m.type==="Identifier"&&(o=m),m.type==="String"&&(o=m,a=!1)}),c.property==="font-size"&&c.value&&c.value.children&&c.value.children.forEach(m=>{m.type==="Dimension"&&(r=m)})}),r&&o){let c=null,m=r.value;a?c=o.name:c=o.value;let p=this.fix({font_family:c.split('"').join(""),font_size:parseInt(m,10)});a?o.name=p.font_family:o.value=p.font_family,r.value=p.font_size}return Fw(n)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Tg=(()=>{class t{fontBBoxCalculator;cssFixer;fontFixer;constructor(e,n,o){this.fontBBoxCalculator=e,this.cssFixer=n,this.fontFixer=o}convert(e,n){let o=new pc;o.rotation=e.rotation,o.style=e.style,o.text=e.text,o.x=e.x,o.y=e.y,o.originalX=e.x,o.originalY=e.y,n!==void 0&&(o.id=n.node_id,o.nodeId=n.node_id);let r=this.cssFixer.fix(o.style),a=this.fontFixer.fixStyles(r),c=this.fontBBoxCalculator.calculate(o.text,a);return o.x!==null&&(o.x+=3),o.y!==null&&(o.y+=c.height),o}static \u0275fac=function(n){return new(n||t)(ge(rd),ge(Ll),ge(ca))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Lw=class{adapterNumber;linkType;name;portNumber;shortName};var Eg=(()=>{class t{convert(e){let n=new Lw;return n.adapterNumber=e.adapter_number,n.linkType=e.link_type,n.name=e.name,n.portNumber=e.port_number,n.shortName=e.short_name,n}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Dg=(()=>{class t{labelToMapLabel;portToMapPort;fontBBoxCalculator;cssFixer;fontFixer;constructor(e,n,o,r,a){this.labelToMapLabel=e,this.portToMapPort=n,this.fontBBoxCalculator=o,this.cssFixer=r,this.fontFixer=a}convert(e){let n=new Ol;if(n.id=e.node_id,n.commandLine=e.command_line,n.computeId=e.compute_id,n.console=e.console,n.consoleHost=e.console_host,n.consoleType=e.console_type,n.firstPortName=e.first_port_name,n.height=e.height,n.label=this.labelToMapLabel?this.labelToMapLabel.convert(e.label,{node_id:e.node_id}):void 0,n.locked=e.locked,n.name=e.name,n.nodeDirectory=e.node_directory,n.nodeType=e.node_type,n.portNameFormat=e.port_name_format,n.portSegmentSize=e.port_segment_size,n.ports=e.ports?e.ports.map(o=>this.portToMapPort.convert(o)):[],n.properties=e.properties,n.projectId=e.project_id,n.status=e.status,n.symbol=e.symbol,n.symbolUrl=e.symbol_url,n.usage=e.properties.usage,n.width=e.width,n.x=e.x,n.y=e.y,n.z=e.z,n.label!==void 0){let o=this.cssFixer.fix(n.label.style),r=this.fontFixer.fixStyles(o),a=this.fontBBoxCalculator.calculate(n.label.text,r);(e.label.x===null||e.label.y===null)&&(n.label.x=e.width/2-a.width/2+3,n.label.y=-8)}return n}static \u0275fac=function(n){return new(n||t)(ge(Tg),ge(Eg),ge(rd),ge(Ll),ge(ca))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var oh=class{id;captureFileName;captureFilePath;capturing;filters;linkType;nodes;projectId;suspend;link_style;wireshark;distance;length;source;target;isSelected=!1;isMultiplied=!1;parallelLinksCount=1;x;y};var Bl=(()=>{class t{static LINK_TYPE_PREFIX="gns3-link-type";static BEZIER_CURVINESS_PREFIX="gns3-bezier-curviness";static FLOWCHART_ROUNDNESS_PREFIX="gns3-flowchart-roundness";static linkTypeKey(e,n){return`${t.LINK_TYPE_PREFIX}:${e}:${n}`}static bezierCurvinessKey(e,n){return`${t.BEZIER_CURVINESS_PREFIX}:${e}:${n}`}static flowchartRoundnessKey(e,n){return`${t.FLOWCHART_ROUNDNESS_PREFIX}:${e}:${n}`}static get(e,n){if(!(!e||!n))try{return localStorage.getItem(t.linkTypeKey(e,n))||void 0}catch{return}}static set(e,n,o){if(!(!e||!n||!o))try{localStorage.setItem(t.linkTypeKey(e,n),o)}catch{}}static getNumberValue(e){try{let n=localStorage.getItem(e);if(n===null||n==="")return;let o=parseInt(n,10);return Number.isNaN(o)?void 0:o}catch{return}}static setNumberValue(e,n){if(n!=null)try{localStorage.setItem(e,`${n}`)}catch{}}static getBezierCurviness(e,n){if(!(!e||!n))return t.getNumberValue(t.bezierCurvinessKey(e,n))}static setBezierCurviness(e,n,o){!e||!n||t.setNumberValue(t.bezierCurvinessKey(e,n),o)}static getFlowchartRoundness(e,n){if(!(!e||!n))return t.getNumberValue(t.flowchartRoundnessKey(e,n))}static setFlowchartRoundness(e,n,o){!e||!n||t.setNumberValue(t.flowchartRoundnessKey(e,n),o)}static getStyleSnapshot(e,n){let o=t.get(e,n),r=t.getBezierCurviness(e,n),a=t.getFlowchartRoundness(e,n);if(!(!o&&r===void 0&&a===void 0))return{link_type:o,bezier_curviness:r,flowchart_roundness:a}}static remove(e,n){if(!(!e||!n))try{localStorage.removeItem(t.linkTypeKey(e,n)),localStorage.removeItem(t.bezierCurvinessKey(e,n)),localStorage.removeItem(t.flowchartRoundnessKey(e,n))}catch{}}}return t})();var em=class{id;nodeId;linkId;adapterNumber;portNumber;label;bezierRenderOffsetX;bezierRenderOffsetY};var Bw=(()=>{class t{labelToMapLabel;constructor(e){this.labelToMapLabel=e}convert(e,n){let o=new em;return o.nodeId=e.node_id,o.adapterNumber=e.adapter_number,o.portNumber=e.port_number,o.label=this.labelToMapLabel.convert(e.label),n!==void 0&&(o.linkId=n.link_id,o.id=`${o.nodeId}-${o.linkId}`),o}static \u0275fac=function(n){return new(n||t)(ge(Tg))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Pg=(()=>{class t{linkNodeToMapLinkNode;constructor(e){this.linkNodeToMapLinkNode=e}convert(e){let n=new oh;if(n.id=e.link_id,n.captureFileName=e.capture_file_name,n.captureFilePath=e.capture_file_path,n.capturing=e.capturing,n.filters=e.filters,n.link_style=e.link_style,!(n.link_style?.link_type!==void 0||n.link_style?.bezier_curviness!==void 0||n.link_style?.flowchart_roundness!==void 0)){let r=Bl.getStyleSnapshot(e.project_id,e.link_id);r&&(n.link_style=H(H({},n.link_style||{}),r))}return n.linkType=e.link_type,n.nodes=e.nodes.map(r=>this.linkNodeToMapLinkNode.convert(r,{link_id:e.link_id})),n.projectId=e.project_id,n.suspend=e.suspend,n.wireshark=e.wireshark,n}static \u0275fac=function(n){return new(n||t)(ge(Bw))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Va=class{id;projectId;rotation;svg;locked;x;y;z;element};var Mp=(()=>{class t{constructor(){}convert(e){let n=new Va;return n.id=e.drawing_id,n.projectId=e.project_id,n.rotation=e.rotation,n.svg=e.svg,n.locked=e.locked,n.x=e.x,n.y=e.y,n.z=e.z,n}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Vw=class{id;builtin;filename;raw};var zw=(()=>{class t{convert(e){let n=new Vw;return n.id=e.symbol_id,n.builtin=e.builtin,n.filename=e.filename,n.raw=e.raw,n}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var jw=class{index;nodes;drawings;links;constructor(i,e=[],n=[],o=[]){this.index=i,this.nodes=e,this.drawings=n,this.links=o}};var Ig=(()=>{class t{layers;constructor(){this.layers={}}getLayersList(){return Object.keys(this.layers).sort((e,n)=>Number(e)-Number(n)).map(e=>this.layers[e])}setNodes(e){e.forEach(n=>{this.getLayerForKey(n.z.toString()).nodes.push(n)})}setDrawings(e){e.forEach(n=>{this.getLayerForKey(n.z.toString()).drawings.push(n)})}setLinks(e){e.filter(n=>n.source&&n.target).forEach(n=>{let o=Math.min(n.source.z,n.target.z).toString();this.getLayerForKey(o).links.push(n)})}clear(){this.layers={}}getLayerForKey(e){return e in this.layers||(this.layers[e]=new jw,this.layers[e].index=Number(e)),this.layers[e]}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var kp=(()=>{class t{static DEFAULT_LINK_SPACING=14;static DENSE_LINK_SPACING=10;static MIN_LINK_SPACING=6;static DENSE_BUNDLE_THRESHOLD=4;static NODE_EDGE_PADDING=8;static MAX_VISIBLE_DENSE_LINKS=8;linkTranslation(e,n,o){if(!e)return{dx:0,dy:0};let r=o.x-n.x,a=o.y-n.y,c=Math.sqrt(r*r+a*a);if(c===0)return{dx:0,dy:0};let m=-a/c,p=r/c;return{dx:m*e,dy:p*e}}assignDataToLinks(e){let n={};e.forEach(o=>{if(!o.source||!o.target){o.distance=0,o.parallelLinksCount=1;return}let r=o.source.id,a=o.target.id,c=r<a?`${r},${a}`:`${a},${r}`;c in n||(n[c]=[]),n[c].push(o)}),Object.keys(n).forEach(o=>{let r=n[o],a=this.calculateSpacingForGroup(r),c=this.getVisibleRange(r.length),m=this.getOverflowStackDistance(r.length,a),p=(c.count-1)/2;r.forEach((h,g)=>{if(g<c.start||g>c.end)h.distance=m;else{let M=g-c.start;h.distance=(M-p)*a}h.parallelLinksCount=r.length})})}getVisibleRange(e){if(e<=t.MAX_VISIBLE_DENSE_LINKS)return{start:0,end:Math.max(0,e-1),count:e};let n=this.getVisibleLinksCountForSpacing(e),o=e-n,a=Math.floor(o/2);return{start:a,end:a+n-1,count:n}}getOverflowStackDistance(e,n){return e<=t.MAX_VISIBLE_DENSE_LINKS?0:n/2}calculateSpacingForGroup(e){if(e.length<=t.DENSE_BUNDLE_THRESHOLD)return t.DEFAULT_LINK_SPACING;let n=t.DENSE_LINK_SPACING,o=this.getMaxSpacingFromNodeSize(e);return o>0&&(n=Math.min(n,o)),Math.max(t.MIN_LINK_SPACING,n)}getMaxSpacingFromNodeSize(e){let n=this.getVisibleLinksCountForSpacing(e.length);if(n<=1)return t.DEFAULT_LINK_SPACING;let o=e[0],r=this.getNodeCrossSection(o.source),a=this.getNodeCrossSection(o.target);if(!r||!a)return 0;let c=Math.min(r,a)-t.NODE_EDGE_PADDING*2;return c<=0?0:c/(n-1)}getVisibleLinksCountForSpacing(e){return Math.min(e,t.MAX_VISIBLE_DENSE_LINKS)}getNodeCrossSection(e){if(!e)return 0;let n=[e.width,e.height].filter(o=>typeof o=="number"&&o>0);return n.length===0?0:Math.min(...n)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Tp=(()=>{class t{mapNodesDataSource;mapLinksDataSource;mapDrawingsDataSource;mapSymbolsDataSource;nodeToMapNode;linkToMapLink;drawingToMapDrawing;symbolToMapSymbol;layersManager;multiLinkCalculator;constructor(e,n,o,r,a,c,m,p,h,g){this.mapNodesDataSource=e,this.mapLinksDataSource=n,this.mapDrawingsDataSource=o,this.mapSymbolsDataSource=r,this.nodeToMapNode=a,this.linkToMapLink=c,this.drawingToMapDrawing=m,this.symbolToMapSymbol=p,this.layersManager=h,this.multiLinkCalculator=g}setNodes(e){if(e){let n=e.map(o=>this.nodeToMapNode.convert(o));this.mapNodesDataSource.set(n),this.assignDataToLinks(),this.onDataUpdate()}}setLinks(e){if(e){let n=e.map(o=>this.linkToMapLink.convert(o));this.mapLinksDataSource.set(n),this.assignDataToLinks(),this.onDataUpdate()}}setDrawings(e){if(e){let n=e.map(o=>this.drawingToMapDrawing.convert(o));this.mapDrawingsDataSource.set(n),this.onDataUpdate()}}setSymbols(e){if(e){let n=e.map(o=>this.symbolToMapSymbol.convert(o));this.mapSymbolsDataSource.set(n)}}getNodes(){return this.mapNodesDataSource.getItems()}getLinks(){return this.mapLinksDataSource.getItems()}getDrawings(){return this.mapDrawingsDataSource.getItems()}getSymbols(){return this.mapSymbolsDataSource.getItems()}onDataUpdate(){this.layersManager.clear(),this.layersManager.setNodes(this.getNodes()),this.layersManager.setLinks(this.getLinks()),this.layersManager.setDrawings(this.getDrawings())}assignDataToLinks(){let e={};this.getNodes().forEach(n=>{e[n.id]=n}),this.getLinks().forEach(n=>{if(!n.nodes||n.nodes.length<2)return;let o=n.nodes[0]?.nodeId,r=n.nodes[1]?.nodeId;o&&o in e&&(n.source=e[o]),r&&r in e&&(n.target=e[r]),n.source&&n.target&&(n.x=n.source.x+(n.target.x-n.source.x)*.5,n.y=n.source.y+(n.target.y-n.source.y)*.5)}),this.multiLinkCalculator.assignDataToLinks(this.getLinks())}static \u0275fac=function(n){return new(n||t)(ge(ag),ge(sg),ge(lg),ge(cg),ge(Dg),ge(Pg),ge(Mp),ge(zw),ge(Ig),ge(kp))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Vl=(()=>{class t{isReadOnly=!1;static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Ep=(()=>{class t{changesDetected=new ve;selectionChangesDetected=new ve;hasBeenDrawn=!1;detectChanges(){this.changesDetected.emit(!0)}detectSelectionChanges(){this.selectionChangesDetected.emit()}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var fCe={value:()=>{}};function Q9(){for(var t=0,i=arguments.length,e={},n;t<i;++t){if(!(n=arguments[t]+"")||n in e||/[\s.]/.test(n))throw new Error("illegal type: "+n);e[n]=[]}return new Hw(e)}function Hw(t){this._=t}function gCe(t,i){return t.trim().split(/^|\s+/).map(function(e){var n="",o=e.indexOf(".");if(o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),e&&!i.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:n}})}Hw.prototype=Q9.prototype={constructor:Hw,on:function(t,i){var e=this._,n=gCe(t+"",e),o,r=-1,a=n.length;if(arguments.length<2){for(;++r<a;)if((o=(t=n[r]).type)&&(o=_Ce(e[o],t.name)))return o;return}if(i!=null&&typeof i!="function")throw new Error("invalid callback: "+i);for(;++r<a;)if(o=(t=n[r]).type)e[o]=X9(e[o],t.name,i);else if(i==null)for(o in e)e[o]=X9(e[o],t.name,null);return this},copy:function(){var t={},i=this._;for(var e in i)t[e]=i[e].slice();return new Hw(t)},call:function(t,i){if((o=arguments.length-2)>0)for(var e=new Array(o),n=0,o,r;n<o;++n)e[n]=arguments[n+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(r=this._[t],n=0,o=r.length;n<o;++n)r[n].value.apply(i,e)},apply:function(t,i,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var n=this._[t],o=0,r=n.length;o<r;++o)n[o].value.apply(i,e)}};function _Ce(t,i){for(var e=0,n=t.length,o;e<n;++e)if((o=t[e]).name===i)return o.value}function X9(t,i,e){for(var n=0,o=t.length;n<o;++n)if(t[n].name===i){t[n]=fCe,t=t.slice(0,n).concat(t.slice(n+1));break}return e!=null&&t.push({name:i,value:e}),t}var rh=Q9;var Y9={passive:!1},ah={capture:!0,passive:!1};function Uw(t){t.stopImmediatePropagation()}function Dp(t){t.preventDefault(),t.stopImmediatePropagation()}function Ob(t){var i=t.document.documentElement,e=dn(t).on("dragstart.drag",Dp,ah);"onselectstart"in i?e.on("selectstart.drag",Dp,ah):(i.__noselect=i.style.MozUserSelect,i.style.MozUserSelect="none")}function Nb(t,i){var e=t.document.documentElement,n=dn(t).on("dragstart.drag",null);i&&(n.on("click.drag",Dp,ah),setTimeout(function(){n.on("click.drag",null)},0)),"onselectstart"in e?n.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}var Rb=t=>()=>t;function Fb(t,{sourceEvent:i,subject:e,target:n,identifier:o,active:r,x:a,y:c,dx:m,dy:p,dispatch:h}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:i,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},identifier:{value:o,enumerable:!0,configurable:!0},active:{value:r,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:c,enumerable:!0,configurable:!0},dx:{value:m,enumerable:!0,configurable:!0},dy:{value:p,enumerable:!0,configurable:!0},_:{value:h}})}Fb.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function vCe(t){return!t.ctrlKey&&!t.button}function bCe(){return this.parentNode}function CCe(t,i){return i??{x:t.x,y:t.y}}function xCe(){return navigator.maxTouchPoints||"ontouchstart"in this}function zl(){var t=vCe,i=bCe,e=CCe,n=xCe,o={},r=rh("start","drag","end"),a=0,c,m,p,h,g=0;function M(E){E.on("mousedown.drag",C).filter(n).on("touchstart.drag",S).on("touchmove.drag",y,Y9).on("touchend.drag touchcancel.drag",k).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function C(E,N){if(!(h||!t.call(this,E,N))){var T=I(this,i.call(this,E,N),E,N,"mouse");T&&(dn(E.view).on("mousemove.drag",_,ah).on("mouseup.drag",w,ah),Ob(E.view),Uw(E),p=!1,c=E.clientX,m=E.clientY,T("start",E))}}function _(E){if(Dp(E),!p){var N=E.clientX-c,T=E.clientY-m;p=N*N+T*T>g}o.mouse("drag",E)}function w(E){dn(E.view).on("mousemove.drag mouseup.drag",null),Nb(E.view,p),Dp(E),o.mouse("end",E)}function S(E,N){if(t.call(this,E,N)){var T=E.changedTouches,R=i.call(this,E,N),W=T.length,pe,_e;for(pe=0;pe<W;++pe)(_e=I(this,R,E,N,T[pe].identifier,T[pe]))&&(Uw(E),_e("start",E,T[pe]))}}function y(E){var N=E.changedTouches,T=N.length,R,W;for(R=0;R<T;++R)(W=o[N[R].identifier])&&(Dp(E),W("drag",E,N[R]))}function k(E){var N=E.changedTouches,T=N.length,R,W;for(h&&clearTimeout(h),h=setTimeout(function(){h=null},500),R=0;R<T;++R)(W=o[N[R].identifier])&&(Uw(E),W("end",E,N[R]))}function I(E,N,T,R,W,pe){var _e=r.copy(),G=aa(pe||T,N),ue,ye,ce;if((ce=e.call(E,new Fb("beforestart",{sourceEvent:T,target:M,identifier:W,active:a,x:G[0],y:G[1],dx:0,dy:0,dispatch:_e}),R))!=null)return ue=ce.x-G[0]||0,ye=ce.y-G[1]||0,function Ie(de,V,Y){var ne=G,ie;switch(de){case"start":o[W]=Ie,ie=a++;break;case"end":delete o[W],--a;case"drag":G=aa(Y||V,N),ie=a;break}_e.call(de,E,new Fb(de,{sourceEvent:V,subject:ce,target:M,identifier:W,active:ie,x:G[0]+ue,y:G[1]+ye,dx:G[0]-ne[0],dy:G[1]-ne[1],dispatch:_e}),R)}}return M.filter=function(E){return arguments.length?(t=typeof E=="function"?E:Rb(!!E),M):t},M.container=function(E){return arguments.length?(i=typeof E=="function"?E:Rb(E),M):i},M.subject=function(E){return arguments.length?(e=typeof E=="function"?E:Rb(E),M):e},M.touchable=function(E){return arguments.length?(n=typeof E=="function"?E:Rb(!!E),M):n},M.on=function(){var E=r.on.apply(r,arguments);return E===r?M:E},M.clickDistance=function(E){return arguments.length?(g=(E=+E)*E,M):Math.sqrt(g)},M}function Gw(t,i,e){t.prototype=i.prototype=e,e.constructor=t}function X4(t,i){var e=Object.create(t.prototype);for(var n in i)e[n]=i[n];return e}function Vb(){}var Lb=.7,Xw=1/Lb,Ag="\\s*([+-]?\\d+)\\s*",Bb="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",dd="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",yCe=/^#([0-9a-f]{3,8})$/,SCe=new RegExp(`^rgb\\(${Ag},${Ag},${Ag}\\)$`),wCe=new RegExp(`^rgb\\(${dd},${dd},${dd}\\)$`),MCe=new RegExp(`^rgba\\(${Ag},${Ag},${Ag},${Bb}\\)$`),kCe=new RegExp(`^rgba\\(${dd},${dd},${dd},${Bb}\\)$`),TCe=new RegExp(`^hsl\\(${Bb},${dd},${dd}\\)$`),ECe=new RegExp(`^hsla\\(${Bb},${dd},${dd},${Bb}\\)$`),K9={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Gw(Vb,Pp,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Z9,formatHex:Z9,formatHex8:DCe,formatHsl:PCe,formatRgb:J9,toString:J9});function Z9(){return this.rgb().formatHex()}function DCe(){return this.rgb().formatHex8()}function PCe(){return r$(this).formatHsl()}function J9(){return this.rgb().formatRgb()}function Pp(t){var i,e;return t=(t+"").trim().toLowerCase(),(i=yCe.exec(t))?(e=i[1].length,i=parseInt(i[1],16),e===6?e$(i):e===3?new Ts(i>>8&15|i>>4&240,i>>4&15|i&240,(i&15)<<4|i&15,1):e===8?Ww(i>>24&255,i>>16&255,i>>8&255,(i&255)/255):e===4?Ww(i>>12&15|i>>8&240,i>>8&15|i>>4&240,i>>4&15|i&240,((i&15)<<4|i&15)/255):null):(i=SCe.exec(t))?new Ts(i[1],i[2],i[3],1):(i=wCe.exec(t))?new Ts(i[1]*255/100,i[2]*255/100,i[3]*255/100,1):(i=MCe.exec(t))?Ww(i[1],i[2],i[3],i[4]):(i=kCe.exec(t))?Ww(i[1]*255/100,i[2]*255/100,i[3]*255/100,i[4]):(i=TCe.exec(t))?i$(i[1],i[2]/100,i[3]/100,1):(i=ECe.exec(t))?i$(i[1],i[2]/100,i[3]/100,i[4]):K9.hasOwnProperty(t)?e$(K9[t]):t==="transparent"?new Ts(NaN,NaN,NaN,0):null}function e$(t){return new Ts(t>>16&255,t>>8&255,t&255,1)}function Ww(t,i,e,n){return n<=0&&(t=i=e=NaN),new Ts(t,i,e,n)}function ICe(t){return t instanceof Vb||(t=Pp(t)),t?(t=t.rgb(),new Ts(t.r,t.g,t.b,t.opacity)):new Ts}function Og(t,i,e,n){return arguments.length===1?ICe(t):new Ts(t,i,e,n??1)}function Ts(t,i,e,n){this.r=+t,this.g=+i,this.b=+e,this.opacity=+n}Gw(Ts,Og,X4(Vb,{brighter(t){return t=t==null?Xw:Math.pow(Xw,t),new Ts(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Lb:Math.pow(Lb,t),new Ts(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Ts(lh(this.r),lh(this.g),lh(this.b),Qw(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:t$,formatHex:t$,formatHex8:ACe,formatRgb:n$,toString:n$}));function t$(){return`#${sh(this.r)}${sh(this.g)}${sh(this.b)}`}function ACe(){return`#${sh(this.r)}${sh(this.g)}${sh(this.b)}${sh((isNaN(this.opacity)?1:this.opacity)*255)}`}function n$(){let t=Qw(this.opacity);return`${t===1?"rgb(":"rgba("}${lh(this.r)}, ${lh(this.g)}, ${lh(this.b)}${t===1?")":`, ${t})`}`}function Qw(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function lh(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function sh(t){return t=lh(t),(t<16?"0":"")+t.toString(16)}function i$(t,i,e,n){return n<=0?t=i=e=NaN:e<=0||e>=1?t=i=NaN:i<=0&&(t=NaN),new fc(t,i,e,n)}function r$(t){if(t instanceof fc)return new fc(t.h,t.s,t.l,t.opacity);if(t instanceof Vb||(t=Pp(t)),!t)return new fc;if(t instanceof fc)return t;t=t.rgb();var i=t.r/255,e=t.g/255,n=t.b/255,o=Math.min(i,e,n),r=Math.max(i,e,n),a=NaN,c=r-o,m=(r+o)/2;return c?(i===r?a=(e-n)/c+(e<n)*6:e===r?a=(n-i)/c+2:a=(i-e)/c+4,c/=m<.5?r+o:2-r-o,a*=60):c=m>0&&m<1?0:a,new fc(a,c,m,t.opacity)}function a$(t,i,e,n){return arguments.length===1?r$(t):new fc(t,i,e,n??1)}function fc(t,i,e,n){this.h=+t,this.s=+i,this.l=+e,this.opacity=+n}Gw(fc,a$,X4(Vb,{brighter(t){return t=t==null?Xw:Math.pow(Xw,t),new fc(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Lb:Math.pow(Lb,t),new fc(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,i=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,n=e+(e<.5?e:1-e)*i,o=2*e-n;return new Ts(Q4(t>=240?t-240:t+120,o,n),Q4(t,o,n),Q4(t<120?t+240:t-120,o,n),this.opacity)},clamp(){return new fc(o$(this.h),qw(this.s),qw(this.l),Qw(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=Qw(this.opacity);return`${t===1?"hsl(":"hsla("}${o$(this.h)}, ${qw(this.s)*100}%, ${qw(this.l)*100}%${t===1?")":`, ${t})`}`}}));function o$(t){return t=(t||0)%360,t<0?t+360:t}function qw(t){return Math.max(0,Math.min(1,t||0))}function Q4(t,i,e){return(t<60?i+(e-i)*t/60:t<180?e:t<240?i+(e-i)*(240-t)/60:i)*255}function Y4(t,i,e,n,o){var r=t*t,a=r*t;return((1-3*t+3*r-a)*i+(4-6*r+3*a)*e+(1+3*t+3*r-3*a)*n+a*o)/6}function s$(t){var i=t.length-1;return function(e){var n=e<=0?e=0:e>=1?(e=1,i-1):Math.floor(e*i),o=t[n],r=t[n+1],a=n>0?t[n-1]:2*o-r,c=n<i-1?t[n+2]:2*r-o;return Y4((e-n/i)*i,a,o,r,c)}}function l$(t){var i=t.length;return function(e){var n=Math.floor(((e%=1)<0?++e:e)*i),o=t[(n+i-1)%i],r=t[n%i],a=t[(n+1)%i],c=t[(n+2)%i];return Y4((e-n/i)*i,o,r,a,c)}}var K4=t=>()=>t;function OCe(t,i){return function(e){return t+e*i}}function NCe(t,i,e){return t=Math.pow(t,e),i=Math.pow(i,e)-t,e=1/e,function(n){return Math.pow(t+n*i,e)}}function c$(t){return(t=+t)==1?Yw:function(i,e){return e-i?NCe(i,e,t):K4(isNaN(i)?e:i)}}function Yw(t,i){var e=i-t;return e?OCe(t,e):K4(isNaN(t)?i:t)}var Kw=(function t(i){var e=c$(i);function n(o,r){var a=e((o=Og(o)).r,(r=Og(r)).r),c=e(o.g,r.g),m=e(o.b,r.b),p=Yw(o.opacity,r.opacity);return function(h){return o.r=a(h),o.g=c(h),o.b=m(h),o.opacity=p(h),o+""}}return n.gamma=t,n})(1);function d$(t){return function(i){var e=i.length,n=new Array(e),o=new Array(e),r=new Array(e),a,c;for(a=0;a<e;++a)c=Og(i[a]),n[a]=c.r||0,o[a]=c.g||0,r[a]=c.b||0;return n=t(n),o=t(o),r=t(r),c.opacity=1,function(m){return c.r=n(m),c.g=o(m),c.b=r(m),c+""}}}var RCe=d$(s$),FCe=d$(l$);function jl(t,i){return t=+t,i=+i,function(e){return t*(1-e)+i*e}}var J4=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Z4=new RegExp(J4.source,"g");function LCe(t){return function(){return t}}function BCe(t){return function(i){return t(i)+""}}function eN(t,i){var e=J4.lastIndex=Z4.lastIndex=0,n,o,r,a=-1,c=[],m=[];for(t=t+"",i=i+"";(n=J4.exec(t))&&(o=Z4.exec(i));)(r=o.index)>e&&(r=i.slice(e,r),c[a]?c[a]+=r:c[++a]=r),(n=n[0])===(o=o[0])?c[a]?c[a]+=o:c[++a]=o:(c[++a]=null,m.push({i:a,x:jl(n,o)})),e=Z4.lastIndex;return e<i.length&&(r=i.slice(e),c[a]?c[a]+=r:c[++a]=r),c.length<2?m[0]?BCe(m[0].x):LCe(i):(i=m.length,function(p){for(var h=0,g;h<i;++h)c[(g=m[h]).i]=g.x(p);return c.join("")})}var m$=180/Math.PI,Zw={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function tN(t,i,e,n,o,r){var a,c,m;return(a=Math.sqrt(t*t+i*i))&&(t/=a,i/=a),(m=t*e+i*n)&&(e-=t*m,n-=i*m),(c=Math.sqrt(e*e+n*n))&&(e/=c,n/=c,m/=c),t*n<i*e&&(t=-t,i=-i,m=-m,a=-a),{translateX:o,translateY:r,rotate:Math.atan2(i,t)*m$,skewX:Math.atan(m)*m$,scaleX:a,scaleY:c}}var Jw;function p$(t){let i=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return i.isIdentity?Zw:tN(i.a,i.b,i.c,i.d,i.e,i.f)}function u$(t){return t==null?Zw:(Jw||(Jw=document.createElementNS("http://www.w3.org/2000/svg","g")),Jw.setAttribute("transform",t),(t=Jw.transform.baseVal.consolidate())?(t=t.matrix,tN(t.a,t.b,t.c,t.d,t.e,t.f)):Zw)}function h$(t,i,e,n){function o(p){return p.length?p.pop()+" ":""}function r(p,h,g,M,C,_){if(p!==g||h!==M){var w=C.push("translate(",null,i,null,e);_.push({i:w-4,x:jl(p,g)},{i:w-2,x:jl(h,M)})}else(g||M)&&C.push("translate("+g+i+M+e)}function a(p,h,g,M){p!==h?(p-h>180?h+=360:h-p>180&&(p+=360),M.push({i:g.push(o(g)+"rotate(",null,n)-2,x:jl(p,h)})):h&&g.push(o(g)+"rotate("+h+n)}function c(p,h,g,M){p!==h?M.push({i:g.push(o(g)+"skewX(",null,n)-2,x:jl(p,h)}):h&&g.push(o(g)+"skewX("+h+n)}function m(p,h,g,M,C,_){if(p!==g||h!==M){var w=C.push(o(C)+"scale(",null,",",null,")");_.push({i:w-4,x:jl(p,g)},{i:w-2,x:jl(h,M)})}else(g!==1||M!==1)&&C.push(o(C)+"scale("+g+","+M+")")}return function(p,h){var g=[],M=[];return p=t(p),h=t(h),r(p.translateX,p.translateY,h.translateX,h.translateY,g,M),a(p.rotate,h.rotate,g,M),c(p.skewX,h.skewX,g,M),m(p.scaleX,p.scaleY,h.scaleX,h.scaleY,g,M),p=h=null,function(C){for(var _=-1,w=M.length,S;++_<w;)g[(S=M[_]).i]=S.x(C);return g.join("")}}}var nN=h$(p$,"px, ","px)","deg)"),iN=h$(u$,", ",")",")");var VCe=1e-12;function f$(t){return((t=Math.exp(t))+1/t)/2}function zCe(t){return((t=Math.exp(t))-1/t)/2}function jCe(t){return((t=Math.exp(2*t))-1)/(t+1)}var oN=(function t(i,e,n){function o(r,a){var c=r[0],m=r[1],p=r[2],h=a[0],g=a[1],M=a[2],C=h-c,_=g-m,w=C*C+_*_,S,y;if(w<VCe)y=Math.log(M/p)/i,S=function(R){return[c+R*C,m+R*_,p*Math.exp(i*R*y)]};else{var k=Math.sqrt(w),I=(M*M-p*p+n*w)/(2*p*e*k),E=(M*M-p*p-n*w)/(2*M*e*k),N=Math.log(Math.sqrt(I*I+1)-I),T=Math.log(Math.sqrt(E*E+1)-E);y=(T-N)/i,S=function(R){var W=R*y,pe=f$(N),_e=p/(e*k)*(pe*jCe(i*W+N)-zCe(N));return[c+_e*C,m+_e*_,p*pe/f$(i*W+N)]}}return S.duration=y*1e3*i/Math.SQRT2,S}return o.rho=function(r){var a=Math.max(.001,+r),c=a*a,m=c*c;return t(a,c,m)},o})(Math.SQRT2,2,4);var Ng=0,jb=0,zb=0,_$=1e3,e2,$b,t2=0,ch=0,n2=0,Hb=typeof performance=="object"&&performance.now?performance:Date,v$=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Gb(){return ch||(v$($Ce),ch=Hb.now()+n2)}function $Ce(){ch=0}function Ub(){this._call=this._time=this._next=null}Ub.prototype=i2.prototype={constructor:Ub,restart:function(t,i,e){if(typeof t!="function")throw new TypeError("callback is not a function");e=(e==null?Gb():+e)+(i==null?0:+i),!this._next&&$b!==this&&($b?$b._next=this:e2=this,$b=this),this._call=t,this._time=e,rN()},stop:function(){this._call&&(this._call=null,this._time=1/0,rN())}};function i2(t,i,e){var n=new Ub;return n.restart(t,i,e),n}function b$(){Gb(),++Ng;for(var t=e2,i;t;)(i=ch-t._time)>=0&&t._call.call(void 0,i),t=t._next;--Ng}function g$(){ch=(t2=Hb.now())+n2,Ng=jb=0;try{b$()}finally{Ng=0,UCe(),ch=0}}function HCe(){var t=Hb.now(),i=t-t2;i>_$&&(n2-=i,t2=t)}function UCe(){for(var t,i=e2,e,n=1/0;i;)i._call?(n>i._time&&(n=i._time),t=i,i=i._next):(e=i._next,i._next=null,i=t?t._next=e:e2=e);$b=t,rN(n)}function rN(t){if(!Ng){jb&&(jb=clearTimeout(jb));var i=t-ch;i>24?(t<1/0&&(jb=setTimeout(g$,t-Hb.now()-n2)),zb&&(zb=clearInterval(zb))):(zb||(t2=Hb.now(),zb=setInterval(HCe,_$)),Ng=1,v$(g$))}}function o2(t,i,e){var n=new Ub;return i=i==null?0:+i,n.restart(o=>{n.stop(),t(o+i)},i,e),n}var GCe=rh("start","end","cancel","interrupt"),WCe=[],y$=0,C$=1,a2=2,r2=3,x$=4,s2=5,Wb=6;function Ip(t,i,e,n,o,r){var a=t.__transition;if(!a)t.__transition={};else if(e in a)return;qCe(t,e,{name:i,index:n,group:o,on:GCe,tween:WCe,time:r.time,delay:r.delay,duration:r.duration,ease:r.ease,timer:null,state:y$})}function qb(t,i){var e=Yr(t,i);if(e.state>y$)throw new Error("too late; already scheduled");return e}function Sa(t,i){var e=Yr(t,i);if(e.state>r2)throw new Error("too late; already running");return e}function Yr(t,i){var e=t.__transition;if(!e||!(e=e[i]))throw new Error("transition not found");return e}function qCe(t,i,e){var n=t.__transition,o;n[i]=e,e.timer=i2(r,0,e.time);function r(p){e.state=C$,e.timer.restart(a,e.delay,e.time),e.delay<=p&&a(p-e.delay)}function a(p){var h,g,M,C;if(e.state!==C$)return m();for(h in n)if(C=n[h],C.name===e.name){if(C.state===r2)return o2(a);C.state===x$?(C.state=Wb,C.timer.stop(),C.on.call("interrupt",t,t.__data__,C.index,C.group),delete n[h]):+h<i&&(C.state=Wb,C.timer.stop(),C.on.call("cancel",t,t.__data__,C.index,C.group),delete n[h])}if(o2(function(){e.state===r2&&(e.state=x$,e.timer.restart(c,e.delay,e.time),c(p))}),e.state=a2,e.on.call("start",t,t.__data__,e.index,e.group),e.state===a2){for(e.state=r2,o=new Array(M=e.tween.length),h=0,g=-1;h<M;++h)(C=e.tween[h].value.call(t,t.__data__,e.index,e.group))&&(o[++g]=C);o.length=g+1}}function c(p){for(var h=p<e.duration?e.ease.call(null,p/e.duration):(e.timer.restart(m),e.state=s2,1),g=-1,M=o.length;++g<M;)o[g].call(t,h);e.state===s2&&(e.on.call("end",t,t.__data__,e.index,e.group),m())}function m(){e.state=Wb,e.timer.stop(),delete n[i];for(var p in n)return;delete t.__transition}}function Ap(t,i){var e=t.__transition,n,o,r=!0,a;if(e){i=i==null?null:i+"";for(a in e){if((n=e[a]).name!==i){r=!1;continue}o=n.state>a2&&n.state<s2,n.state=Wb,n.timer.stop(),n.on.call(o?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete e[a]}r&&delete t.__transition}}function S$(t){return this.each(function(){Ap(this,t)})}function XCe(t,i){var e,n;return function(){var o=Sa(this,t),r=o.tween;if(r!==e){n=e=r;for(var a=0,c=n.length;a<c;++a)if(n[a].name===i){n=n.slice(),n.splice(a,1);break}}o.tween=n}}function QCe(t,i,e){var n,o;if(typeof e!="function")throw new Error;return function(){var r=Sa(this,t),a=r.tween;if(a!==n){o=(n=a).slice();for(var c={name:i,value:e},m=0,p=o.length;m<p;++m)if(o[m].name===i){o[m]=c;break}m===p&&o.push(c)}r.tween=o}}function w$(t,i){var e=this._id;if(t+="",arguments.length<2){for(var n=Yr(this.node(),e).tween,o=0,r=n.length,a;o<r;++o)if((a=n[o]).name===t)return a.value;return null}return this.each((i==null?XCe:QCe)(e,t,i))}function Rg(t,i,e){var n=t._id;return t.each(function(){var o=Sa(this,n);(o.value||(o.value={}))[i]=e.apply(this,arguments)}),function(o){return Yr(o,n).value[i]}}function l2(t,i){var e;return(typeof i=="number"?jl:i instanceof Pp?Kw:(e=Pp(i))?(i=e,Kw):eN)(t,i)}function YCe(t){return function(){this.removeAttribute(t)}}function KCe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function ZCe(t,i,e){var n,o=e+"",r;return function(){var a=this.getAttribute(t);return a===o?null:a===n?r:r=i(n=a,e)}}function JCe(t,i,e){var n,o=e+"",r;return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===n?r:r=i(n=a,e)}}function exe(t,i,e){var n,o,r;return function(){var a,c=e(this),m;return c==null?void this.removeAttribute(t):(a=this.getAttribute(t),m=c+"",a===m?null:a===n&&m===o?r:(o=m,r=i(n=a,c)))}}function txe(t,i,e){var n,o,r;return function(){var a,c=e(this),m;return c==null?void this.removeAttributeNS(t.space,t.local):(a=this.getAttributeNS(t.space,t.local),m=c+"",a===m?null:a===n&&m===o?r:(o=m,r=i(n=a,c)))}}function M$(t,i){var e=qd(t),n=e==="transform"?iN:l2;return this.attrTween(t,typeof i=="function"?(e.local?txe:exe)(e,n,Rg(this,"attr."+t,i)):i==null?(e.local?KCe:YCe)(e):(e.local?JCe:ZCe)(e,n,i))}function nxe(t,i){return function(e){this.setAttribute(t,i.call(this,e))}}function ixe(t,i){return function(e){this.setAttributeNS(t.space,t.local,i.call(this,e))}}function oxe(t,i){var e,n;function o(){var r=i.apply(this,arguments);return r!==n&&(e=(n=r)&&ixe(t,r)),e}return o._value=i,o}function rxe(t,i){var e,n;function o(){var r=i.apply(this,arguments);return r!==n&&(e=(n=r)&&nxe(t,r)),e}return o._value=i,o}function k$(t,i){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(i==null)return this.tween(e,null);if(typeof i!="function")throw new Error;var n=qd(t);return this.tween(e,(n.local?oxe:rxe)(n,i))}function axe(t,i){return function(){qb(this,t).delay=+i.apply(this,arguments)}}function sxe(t,i){return i=+i,function(){qb(this,t).delay=i}}function T$(t){var i=this._id;return arguments.length?this.each((typeof t=="function"?axe:sxe)(i,t)):Yr(this.node(),i).delay}function lxe(t,i){return function(){Sa(this,t).duration=+i.apply(this,arguments)}}function cxe(t,i){return i=+i,function(){Sa(this,t).duration=i}}function E$(t){var i=this._id;return arguments.length?this.each((typeof t=="function"?lxe:cxe)(i,t)):Yr(this.node(),i).duration}function dxe(t,i){if(typeof i!="function")throw new Error;return function(){Sa(this,t).ease=i}}function D$(t){var i=this._id;return arguments.length?this.each(dxe(i,t)):Yr(this.node(),i).ease}function mxe(t,i){return function(){var e=i.apply(this,arguments);if(typeof e!="function")throw new Error;Sa(this,t).ease=e}}function P$(t){if(typeof t!="function")throw new Error;return this.each(mxe(this._id,t))}function I$(t){typeof t!="function"&&(t=sb(t));for(var i=this._groups,e=i.length,n=new Array(e),o=0;o<e;++o)for(var r=i[o],a=r.length,c=n[o]=[],m,p=0;p<a;++p)(m=r[p])&&t.call(m,m.__data__,p,r)&&c.push(m);return new ts(n,this._parents,this._name,this._id)}function A$(t){if(t._id!==this._id)throw new Error;for(var i=this._groups,e=t._groups,n=i.length,o=e.length,r=Math.min(n,o),a=new Array(n),c=0;c<r;++c)for(var m=i[c],p=e[c],h=m.length,g=a[c]=new Array(h),M,C=0;C<h;++C)(M=m[C]||p[C])&&(g[C]=M);for(;c<n;++c)a[c]=i[c];return new ts(a,this._parents,this._name,this._id)}function pxe(t){return(t+"").trim().split(/^|\s+/).every(function(i){var e=i.indexOf(".");return e>=0&&(i=i.slice(0,e)),!i||i==="start"})}function uxe(t,i,e){var n,o,r=pxe(i)?qb:Sa;return function(){var a=r(this,t),c=a.on;c!==n&&(o=(n=c).copy()).on(i,e),a.on=o}}function O$(t,i){var e=this._id;return arguments.length<2?Yr(this.node(),e).on.on(t):this.each(uxe(e,t,i))}function hxe(t){return function(){var i=this.parentNode;for(var e in this.__transition)if(+e!==t)return;i&&i.removeChild(this)}}function N$(){return this.on("end.remove",hxe(this._id))}function R$(t){var i=this._name,e=this._id;typeof t!="function"&&(t=Zu(t));for(var n=this._groups,o=n.length,r=new Array(o),a=0;a<o;++a)for(var c=n[a],m=c.length,p=r[a]=new Array(m),h,g,M=0;M<m;++M)(h=c[M])&&(g=t.call(h,h.__data__,M,c))&&("__data__"in h&&(g.__data__=h.__data__),p[M]=g,Ip(p[M],i,e,M,p,Yr(h,e)));return new ts(r,this._parents,i,e)}function F$(t){var i=this._name,e=this._id;typeof t!="function"&&(t=ab(t));for(var n=this._groups,o=n.length,r=[],a=[],c=0;c<o;++c)for(var m=n[c],p=m.length,h,g=0;g<p;++g)if(h=m[g]){for(var M=t.call(h,h.__data__,g,m),C,_=Yr(h,e),w=0,S=M.length;w<S;++w)(C=M[w])&&Ip(C,i,e,w,M,_);r.push(M),a.push(h)}return new ts(r,a,i,e)}var fxe=Xd.prototype.constructor;function L$(){return new fxe(this._groups,this._parents)}function gxe(t,i){var e,n,o;return function(){var r=_p(this,t),a=(this.style.removeProperty(t),_p(this,t));return r===a?null:r===e&&a===n?o:o=i(e=r,n=a)}}function B$(t){return function(){this.style.removeProperty(t)}}function _xe(t,i,e){var n,o=e+"",r;return function(){var a=_p(this,t);return a===o?null:a===n?r:r=i(n=a,e)}}function vxe(t,i,e){var n,o,r;return function(){var a=_p(this,t),c=e(this),m=c+"";return c==null&&(m=c=(this.style.removeProperty(t),_p(this,t))),a===m?null:a===n&&m===o?r:(o=m,r=i(n=a,c))}}function bxe(t,i){var e,n,o,r="style."+i,a="end."+r,c;return function(){var m=Sa(this,t),p=m.on,h=m.value[r]==null?c||(c=B$(i)):void 0;(p!==e||o!==h)&&(n=(e=p).copy()).on(a,o=h),m.on=n}}function V$(t,i,e){var n=(t+="")=="transform"?nN:l2;return i==null?this.styleTween(t,gxe(t,n)).on("end.style."+t,B$(t)):typeof i=="function"?this.styleTween(t,vxe(t,n,Rg(this,"style."+t,i))).each(bxe(this._id,t)):this.styleTween(t,_xe(t,n,i),e).on("end.style."+t,null)}function Cxe(t,i,e){return function(n){this.style.setProperty(t,i.call(this,n),e)}}function xxe(t,i,e){var n,o;function r(){var a=i.apply(this,arguments);return a!==o&&(n=(o=a)&&Cxe(t,a,e)),n}return r._value=i,r}function z$(t,i,e){var n="style."+(t+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(i==null)return this.tween(n,null);if(typeof i!="function")throw new Error;return this.tween(n,xxe(t,i,e??""))}function yxe(t){return function(){this.textContent=t}}function Sxe(t){return function(){var i=t(this);this.textContent=i??""}}function j$(t){return this.tween("text",typeof t=="function"?Sxe(Rg(this,"text",t)):yxe(t==null?"":t+""))}function wxe(t){return function(i){this.textContent=t.call(this,i)}}function Mxe(t){var i,e;function n(){var o=t.apply(this,arguments);return o!==e&&(i=(e=o)&&wxe(o)),i}return n._value=t,n}function $$(t){var i="text";if(arguments.length<1)return(i=this.tween(i))&&i._value;if(t==null)return this.tween(i,null);if(typeof t!="function")throw new Error;return this.tween(i,Mxe(t))}function H$(){for(var t=this._name,i=this._id,e=c2(),n=this._groups,o=n.length,r=0;r<o;++r)for(var a=n[r],c=a.length,m,p=0;p<c;++p)if(m=a[p]){var h=Yr(m,i);Ip(m,t,e,p,a,{time:h.time+h.delay+h.duration,delay:0,duration:h.duration,ease:h.ease})}return new ts(n,this._parents,t,e)}function U$(){var t,i,e=this,n=e._id,o=e.size();return new Promise(function(r,a){var c={value:a},m={value:function(){--o===0&&r()}};e.each(function(){var p=Sa(this,n),h=p.on;h!==t&&(i=(t=h).copy(),i._.cancel.push(c),i._.interrupt.push(c),i._.end.push(m)),p.on=i}),o===0&&r()})}var kxe=0;function ts(t,i,e,n){this._groups=t,this._parents=i,this._name=e,this._id=n}function G$(t){return Xd().transition(t)}function c2(){return++kxe}var tm=Xd.prototype;ts.prototype=G$.prototype={constructor:ts,select:R$,selectAll:F$,selectChild:tm.selectChild,selectChildren:tm.selectChildren,filter:I$,merge:A$,selection:L$,transition:H$,call:tm.call,nodes:tm.nodes,node:tm.node,size:tm.size,empty:tm.empty,each:tm.each,on:O$,attr:M$,attrTween:k$,style:V$,styleTween:z$,text:j$,textTween:$$,remove:N$,tween:w$,delay:T$,duration:E$,ease:D$,easeVarying:P$,end:U$,[Symbol.iterator]:tm[Symbol.iterator]};function d2(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var Txe={time:null,delay:0,duration:250,ease:d2};function Exe(t,i){for(var e;!(e=t.__transition)||!(e=e[i]);)if(!(t=t.parentNode))throw new Error(`transition ${i} not found`);return e}function W$(t){var i,e;t instanceof ts?(i=t._id,t=t._name):(i=c2(),(e=Txe).time=Gb(),t=t==null?null:t+"");for(var n=this._groups,o=n.length,r=0;r<o;++r)for(var a=n[r],c=a.length,m,p=0;p<c;++p)(m=a[p])&&Ip(m,t,i,p,a,e||Exe(m,i));return new ts(n,this._parents,t,i)}Xd.prototype.interrupt=S$;Xd.prototype.transition=W$;var Xb=t=>()=>t;function aN(t,{sourceEvent:i,target:e,transform:n,dispatch:o}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:i,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:n,enumerable:!0,configurable:!0},_:{value:o}})}function gc(t,i,e){this.k=t,this.x=i,this.y=e}gc.prototype={constructor:gc,scale:function(t){return t===1?this:new gc(this.k*t,this.x,this.y)},translate:function(t,i){return t===0&i===0?this:new gc(this.k,this.x+this.k*t,this.y+this.k*i)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Qb=new gc(1,0,0);sN.prototype=gc.prototype;function sN(t){for(;!t.__zoom;)if(!(t=t.parentNode))return Qb;return t.__zoom}function m2(t){t.stopImmediatePropagation()}function Fg(t){t.preventDefault(),t.stopImmediatePropagation()}function Dxe(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function Pxe(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function q$(){return this.__zoom||Qb}function Ixe(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Axe(){return navigator.maxTouchPoints||"ontouchstart"in this}function Oxe(t,i,e){var n=t.invertX(i[0][0])-e[0][0],o=t.invertX(i[1][0])-e[1][0],r=t.invertY(i[0][1])-e[0][1],a=t.invertY(i[1][1])-e[1][1];return t.translate(o>n?(n+o)/2:Math.min(0,n)||Math.max(0,o),a>r?(r+a)/2:Math.min(0,r)||Math.max(0,a))}function lN(){var t=Dxe,i=Pxe,e=Oxe,n=Ixe,o=Axe,r=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],c=250,m=oN,p=rh("start","zoom","end"),h,g,M,C=500,_=150,w=0,S=10;function y(ce){ce.property("__zoom",q$).on("wheel.zoom",W,{passive:!1}).on("mousedown.zoom",pe).on("dblclick.zoom",_e).filter(o).on("touchstart.zoom",G).on("touchmove.zoom",ue).on("touchend.zoom touchcancel.zoom",ye).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}y.transform=function(ce,Ie,de,V){var Y=ce.selection?ce.selection():ce;Y.property("__zoom",q$),ce!==Y?N(ce,Ie,de,V):Y.interrupt().each(function(){T(this,arguments).event(V).start().zoom(null,typeof Ie=="function"?Ie.apply(this,arguments):Ie).end()})},y.scaleBy=function(ce,Ie,de,V){y.scaleTo(ce,function(){var Y=this.__zoom.k,ne=typeof Ie=="function"?Ie.apply(this,arguments):Ie;return Y*ne},de,V)},y.scaleTo=function(ce,Ie,de,V){y.transform(ce,function(){var Y=i.apply(this,arguments),ne=this.__zoom,ie=de==null?E(Y):typeof de=="function"?de.apply(this,arguments):de,De=ne.invert(ie),$e=typeof Ie=="function"?Ie.apply(this,arguments):Ie;return e(I(k(ne,$e),ie,De),Y,a)},de,V)},y.translateBy=function(ce,Ie,de,V){y.transform(ce,function(){return e(this.__zoom.translate(typeof Ie=="function"?Ie.apply(this,arguments):Ie,typeof de=="function"?de.apply(this,arguments):de),i.apply(this,arguments),a)},null,V)},y.translateTo=function(ce,Ie,de,V,Y){y.transform(ce,function(){var ne=i.apply(this,arguments),ie=this.__zoom,De=V==null?E(ne):typeof V=="function"?V.apply(this,arguments):V;return e(Qb.translate(De[0],De[1]).scale(ie.k).translate(typeof Ie=="function"?-Ie.apply(this,arguments):-Ie,typeof de=="function"?-de.apply(this,arguments):-de),ne,a)},V,Y)};function k(ce,Ie){return Ie=Math.max(r[0],Math.min(r[1],Ie)),Ie===ce.k?ce:new gc(Ie,ce.x,ce.y)}function I(ce,Ie,de){var V=Ie[0]-de[0]*ce.k,Y=Ie[1]-de[1]*ce.k;return V===ce.x&&Y===ce.y?ce:new gc(ce.k,V,Y)}function E(ce){return[(+ce[0][0]+ +ce[1][0])/2,(+ce[0][1]+ +ce[1][1])/2]}function N(ce,Ie,de,V){ce.on("start.zoom",function(){T(this,arguments).event(V).start()}).on("interrupt.zoom end.zoom",function(){T(this,arguments).event(V).end()}).tween("zoom",function(){var Y=this,ne=arguments,ie=T(Y,ne).event(V),De=i.apply(Y,ne),$e=de==null?E(De):typeof de=="function"?de.apply(Y,ne):de,it=Math.max(De[1][0]-De[0][0],De[1][1]-De[0][1]),et=Y.__zoom,Se=typeof Ie=="function"?Ie.apply(Y,ne):Ie,q=m(et.invert($e).concat(it/et.k),Se.invert($e).concat(it/Se.k));return function(Oe){if(Oe===1)Oe=Se;else{var Ke=q(Oe),Ct=it/Ke[2];Oe=new gc(Ct,$e[0]-Ke[0]*Ct,$e[1]-Ke[1]*Ct)}ie.zoom(null,Oe)}})}function T(ce,Ie,de){return!de&&ce.__zooming||new R(ce,Ie)}function R(ce,Ie){this.that=ce,this.args=Ie,this.active=0,this.sourceEvent=null,this.extent=i.apply(ce,Ie),this.taps=0}R.prototype={event:function(ce){return ce&&(this.sourceEvent=ce),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(ce,Ie){return this.mouse&&ce!=="mouse"&&(this.mouse[1]=Ie.invert(this.mouse[0])),this.touch0&&ce!=="touch"&&(this.touch0[1]=Ie.invert(this.touch0[0])),this.touch1&&ce!=="touch"&&(this.touch1[1]=Ie.invert(this.touch1[0])),this.that.__zoom=Ie,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(ce){var Ie=dn(this.that).datum();p.call(ce,this.that,new aN(ce,{sourceEvent:this.sourceEvent,target:y,type:ce,transform:this.that.__zoom,dispatch:p}),Ie)}};function W(ce,...Ie){if(!t.apply(this,arguments))return;var de=T(this,Ie).event(ce),V=this.__zoom,Y=Math.max(r[0],Math.min(r[1],V.k*Math.pow(2,n.apply(this,arguments)))),ne=aa(ce);if(de.wheel)(de.mouse[0][0]!==ne[0]||de.mouse[0][1]!==ne[1])&&(de.mouse[1]=V.invert(de.mouse[0]=ne)),clearTimeout(de.wheel);else{if(V.k===Y)return;de.mouse=[ne,V.invert(ne)],Ap(this),de.start()}Fg(ce),de.wheel=setTimeout(ie,_),de.zoom("mouse",e(I(k(V,Y),de.mouse[0],de.mouse[1]),de.extent,a));function ie(){de.wheel=null,de.end()}}function pe(ce,...Ie){if(M||!t.apply(this,arguments))return;var de=ce.currentTarget,V=T(this,Ie,!0).event(ce),Y=dn(ce.view).on("mousemove.zoom",$e,!0).on("mouseup.zoom",it,!0),ne=aa(ce,de),ie=ce.clientX,De=ce.clientY;Ob(ce.view),m2(ce),V.mouse=[ne,this.__zoom.invert(ne)],Ap(this),V.start();function $e(et){if(Fg(et),!V.moved){var Se=et.clientX-ie,q=et.clientY-De;V.moved=Se*Se+q*q>w}V.event(et).zoom("mouse",e(I(V.that.__zoom,V.mouse[0]=aa(et,de),V.mouse[1]),V.extent,a))}function it(et){Y.on("mousemove.zoom mouseup.zoom",null),Nb(et.view,V.moved),Fg(et),V.event(et).end()}}function _e(ce,...Ie){if(t.apply(this,arguments)){var de=this.__zoom,V=aa(ce.changedTouches?ce.changedTouches[0]:ce,this),Y=de.invert(V),ne=de.k*(ce.shiftKey?.5:2),ie=e(I(k(de,ne),V,Y),i.apply(this,Ie),a);Fg(ce),c>0?dn(this).transition().duration(c).call(N,ie,V,ce):dn(this).call(y.transform,ie,V,ce)}}function G(ce,...Ie){if(t.apply(this,arguments)){var de=ce.touches,V=de.length,Y=T(this,Ie,ce.changedTouches.length===V).event(ce),ne,ie,De,$e;for(m2(ce),ie=0;ie<V;++ie)De=de[ie],$e=aa(De,this),$e=[$e,this.__zoom.invert($e),De.identifier],Y.touch0?!Y.touch1&&Y.touch0[2]!==$e[2]&&(Y.touch1=$e,Y.taps=0):(Y.touch0=$e,ne=!0,Y.taps=1+!!h);h&&(h=clearTimeout(h)),ne&&(Y.taps<2&&(g=$e[0],h=setTimeout(function(){h=null},C)),Ap(this),Y.start())}}function ue(ce,...Ie){if(this.__zooming){var de=T(this,Ie).event(ce),V=ce.changedTouches,Y=V.length,ne,ie,De,$e;for(Fg(ce),ne=0;ne<Y;++ne)ie=V[ne],De=aa(ie,this),de.touch0&&de.touch0[2]===ie.identifier?de.touch0[0]=De:de.touch1&&de.touch1[2]===ie.identifier&&(de.touch1[0]=De);if(ie=de.that.__zoom,de.touch1){var it=de.touch0[0],et=de.touch0[1],Se=de.touch1[0],q=de.touch1[1],Oe=(Oe=Se[0]-it[0])*Oe+(Oe=Se[1]-it[1])*Oe,Ke=(Ke=q[0]-et[0])*Ke+(Ke=q[1]-et[1])*Ke;ie=k(ie,Math.sqrt(Oe/Ke)),De=[(it[0]+Se[0])/2,(it[1]+Se[1])/2],$e=[(et[0]+q[0])/2,(et[1]+q[1])/2]}else if(de.touch0)De=de.touch0[0],$e=de.touch0[1];else return;de.zoom("touch",e(I(ie,De,$e),de.extent,a))}}function ye(ce,...Ie){if(this.__zooming){var de=T(this,Ie).event(ce),V=ce.changedTouches,Y=V.length,ne,ie;for(m2(ce),M&&clearTimeout(M),M=setTimeout(function(){M=null},C),ne=0;ne<Y;++ne)ie=V[ne],de.touch0&&de.touch0[2]===ie.identifier?delete de.touch0:de.touch1&&de.touch1[2]===ie.identifier&&delete de.touch1;if(de.touch1&&!de.touch0&&(de.touch0=de.touch1,delete de.touch1),de.touch0)de.touch0[1]=this.__zoom.invert(de.touch0[0]);else if(de.end(),de.taps===2&&(ie=aa(ie,this),Math.hypot(g[0]-ie[0],g[1]-ie[1])<S)){var De=dn(this).on("dblclick.zoom");De&&De.apply(this,arguments)}}}return y.wheelDelta=function(ce){return arguments.length?(n=typeof ce=="function"?ce:Xb(+ce),y):n},y.filter=function(ce){return arguments.length?(t=typeof ce=="function"?ce:Xb(!!ce),y):t},y.touchable=function(ce){return arguments.length?(o=typeof ce=="function"?ce:Xb(!!ce),y):o},y.extent=function(ce){return arguments.length?(i=typeof ce=="function"?ce:Xb([[+ce[0][0],+ce[0][1]],[+ce[1][0],+ce[1][1]]]),y):i},y.scaleExtent=function(ce){return arguments.length?(r[0]=+ce[0],r[1]=+ce[1],y):[r[0],r[1]]},y.translateExtent=function(ce){return arguments.length?(a[0][0]=+ce[0][0],a[1][0]=+ce[1][0],a[0][1]=+ce[0][1],a[1][1]=+ce[1][1],y):[[a[0][0],a[0][1]],[a[1][0],a[1][1]]]},y.constrain=function(ce){return arguments.length?(e=ce,y):e},y.duration=function(ce){return arguments.length?(c=+ce,y):c},y.interpolate=function(ce){return arguments.length?(m=ce,y):m},y.on=function(){var ce=p.on.apply(p,arguments);return ce===p?y:ce},y.clickDistance=function(ce){return arguments.length?(w=(ce=+ce)*ce,y):Math.sqrt(w)},y.tapDistance=function(ce){return arguments.length?(S=+ce,y):S},y}var Lg=(()=>{class t{context;zoom;enabled=!1;needsDeactivate=!1;needsActivate=!1;constructor(e){this.context=e,this.zoom=lN().scaleExtent([1/2,8])}setEnabled(e){this.enabled!=e&&(e?this.needsActivate=!0:this.needsDeactivate=!0),this.enabled=e}draw(e,n){this.needsActivate&&(this.activate(e),this.needsActivate=!1),this.needsDeactivate&&(this.deactivate(e),this.needsDeactivate=!1)}activate(e){let n=this,o=function(r){let a=e.select("g.canvas"),c=r;a.attr("transform",()=>{n.context.transformation.x=c.transform.x,n.context.transformation.y=c.transform.y,n.context.transformation.k=c.transform.k;let m=n.context.getZeroZeroTransformationPoint().x+n.context.transformation.x,p=n.context.getZeroZeroTransformationPoint().y+n.context.transformation.y,h=n.context.transformation.k;return`translate(${m}, ${p}) scale(${h})`})};this.zoom.filter(r=>r.type==="mousedown"),this.zoom.on("zoom",o),e.call(this.zoom)}deactivate(e){e.on("mousedown.zoom",null),this.zoom.on("zoom",null)}static \u0275fac=function(n){return new(n||t)(ge(jo))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var p2=class{x;y;width;height;constructor(i,e,n,o){this.x=i,this.y=e,this.width=n,this.height=o}};var Bg=(()=>{class t{selected=new Le;static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Op=(()=>{class t{context;selectionEventSource;static SELECTABLE_CLASS=".selectable";rectangleSelected=new Le;contextMenuOpened=new ve;path;enabled=!1;constructor(e,n){this.context=e,this.selectionEventSource=n}disableContextMenu(){}setEnabled(e){this.enabled=e,this.contextMenuOpened.emit(!0)}activate(e){let n=this,o=e.node();e.on("mousedown",function(r){if(r.button==2){e.on("contextmenu",()=>{r.preventDefault()}),n.contextMenuOpened.emit(r);return}let a=dn(window),c=n.transformation(aa(r,o));n.startSelection(c),e.selectAll(t.SELECTABLE_CLASS).classed("selected",!1),a.on("mousemove.selection",function(m){let p=n.transformation(aa(m,o));n.moveSelection(c,p)}).on("mouseup.selection",function(m){let p=n.transformation(aa(m,o));n.endSelection(c,p),a.on("mousemove.selection",null).on("mouseup.selection",null)})})}deactivate(e){e.on("mousedown",null)}draw(e,n){let o=e.select("g.canvas");if(!o.select("g.selection-line-tool").node()){let c=o.append("g");c.attr("class","selection-line-tool"),this.path=c.append("path"),this.path.attr("class","selection").attr("visibility","hidden")}let r=o.select("g.selection-line-tool"),a=r.attr("status");a!=="activated"&&this.enabled&&(this.activate(e),r.attr("status","activated")),a!=="deactivated"&&!this.enabled&&(this.deactivate(e),r.attr("status","deactivated"))}startSelection(e){e[0]==null||e[1]==null||isNaN(e[0])||isNaN(e[1])||this.path.attr("d",this.rect(e[0],e[1],0,0)).attr("visibility","visible")}moveSelection(e,n){let o=this.context.transformation.k;if(!o||o===0||isNaN(o))return;let r=e[0]/o,a=e[1]/o;if(isNaN(r)||isNaN(a))return;let c=n[0]/o-r,m=n[1]/o-a;isNaN(c)||isNaN(m)||(this.path.attr("d",this.rect(r,a,c,m)),this.selectedEvent(e,n))}endSelection(e,n){this.path.attr("visibility","hidden"),this.selectedEvent(e,n)}selectedEvent(e,n){let o=Math.min(e[0],n[0]),r=Math.min(e[1],n[1]),a=Math.abs(e[0]-n[0]),c=Math.abs(e[1]-n[1]);this.selectionEventSource.selected.next(new p2(o,r,a,c))}rect(e,n,o,r){return"M"+[e,n]+" l"+[o,0]+" l"+[0,r]+" l"+[-o,0]+"z"}transformation(e){let n=this.context.getZeroZeroTransformationPoint();return[e[0]-n.x-this.context.transformation.x,e[1]-n.y-this.context.transformation.y]}static \u0275fac=function(n){return new(n||t)(ge(jo),ge(Bg))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var{abs:Qgt,max:Ygt,min:Kgt}=Math;function X$(t){return[+t[0],+t[1]]}function Lxe(t){return[X$(t[0]),X$(t[1])]}var Zgt={name:"x",handles:["w","e"].map(cN),input:function(t,i){return t==null?null:[[+t[0],i[0][1]],[+t[1],i[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},Jgt={name:"y",handles:["n","s"].map(cN),input:function(t,i){return t==null?null:[[i[0][0],+t[0]],[i[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},e_t={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(cN),input:function(t){return t==null?null:Lxe(t)},output:function(t){return t}};function cN(t){return{type:t}}var dN=Math.PI,mN=2*dN,dh=1e-6,Bxe=mN-dh;function Q$(t){this._+=t[0];for(let i=1,e=t.length;i<e;++i)this._+=arguments[i]+t[i]}function Vxe(t){let i=Math.floor(t);if(!(i>=0))throw new Error(`invalid digits: ${t}`);if(i>15)return Q$;let e=10**i;return function(n){this._+=n[0];for(let o=1,r=n.length;o<r;++o)this._+=Math.round(arguments[o]*e)/e+n[o]}}var mh=class{constructor(i){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=i==null?Q$:Vxe(i)}moveTo(i,e){this._append`M${this._x0=this._x1=+i},${this._y0=this._y1=+e}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(i,e){this._append`L${this._x1=+i},${this._y1=+e}`}quadraticCurveTo(i,e,n,o){this._append`Q${+i},${+e},${this._x1=+n},${this._y1=+o}`}bezierCurveTo(i,e,n,o,r,a){this._append`C${+i},${+e},${+n},${+o},${this._x1=+r},${this._y1=+a}`}arcTo(i,e,n,o,r){if(i=+i,e=+e,n=+n,o=+o,r=+r,r<0)throw new Error(`negative radius: ${r}`);let a=this._x1,c=this._y1,m=n-i,p=o-e,h=a-i,g=c-e,M=h*h+g*g;if(this._x1===null)this._append`M${this._x1=i},${this._y1=e}`;else if(M>dh)if(!(Math.abs(g*m-p*h)>dh)||!r)this._append`L${this._x1=i},${this._y1=e}`;else{let C=n-a,_=o-c,w=m*m+p*p,S=C*C+_*_,y=Math.sqrt(w),k=Math.sqrt(M),I=r*Math.tan((dN-Math.acos((w+M-S)/(2*y*k)))/2),E=I/k,N=I/y;Math.abs(E-1)>dh&&this._append`L${i+E*h},${e+E*g}`,this._append`A${r},${r},0,0,${+(g*C>h*_)},${this._x1=i+N*m},${this._y1=e+N*p}`}}arc(i,e,n,o,r,a){if(i=+i,e=+e,n=+n,a=!!a,n<0)throw new Error(`negative radius: ${n}`);let c=n*Math.cos(o),m=n*Math.sin(o),p=i+c,h=e+m,g=1^a,M=a?o-r:r-o;this._x1===null?this._append`M${p},${h}`:(Math.abs(this._x1-p)>dh||Math.abs(this._y1-h)>dh)&&this._append`L${p},${h}`,n&&(M<0&&(M=M%mN+mN),M>Bxe?this._append`A${n},${n},0,1,${g},${i-c},${e-m}A${n},${n},0,1,${g},${this._x1=p},${this._y1=h}`:M>dh&&this._append`A${n},${n},0,${+(M>=dN)},${g},${this._x1=i+n*Math.cos(r)},${this._y1=e+n*Math.sin(r)}`)}rect(i,e,n,o){this._append`M${this._x0=this._x1=+i},${this._y0=this._y1=+e}h${n=+n}v${+o}h${-n}Z`}toString(){return this._}};function Np(){return new mh}Np.prototype=mh.prototype;function ph(t){return function(){return t}}var pN=1e-12,Y$=Math.PI,u_t=Y$/2,h_t=2*Y$;function K$(t){let i=3;return t.digits=function(e){if(!arguments.length)return i;if(e==null)i=null;else{let n=Math.floor(e);if(!(n>=0))throw new RangeError(`invalid digits: ${e}`);i=n}return t},()=>new mh(i)}var v_t=Array.prototype.slice;function Z$(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function J$(t){this._context=t}J$.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,i){switch(t=+t,i=+i,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,i):this._context.moveTo(t,i);break;case 1:this._point=2;default:this._context.lineTo(t,i);break}}};function eH(t){return new J$(t)}function tH(t){return t[0]}function nH(t){return t[1]}function uh(t,i){var e=ph(!0),n=null,o=eH,r=null,a=K$(c);t=typeof t=="function"?t:t===void 0?tH:ph(t),i=typeof i=="function"?i:i===void 0?nH:ph(i);function c(m){var p,h=(m=Z$(m)).length,g,M=!1,C;for(n==null&&(r=o(C=a())),p=0;p<=h;++p)!(p<h&&e(g=m[p],p,m))===M&&((M=!M)?r.lineStart():r.lineEnd()),M&&r.point(+t(g,p,m),+i(g,p,m));if(C)return r=null,C+""||null}return c.x=function(m){return arguments.length?(t=typeof m=="function"?m:ph(+m),c):t},c.y=function(m){return arguments.length?(i=typeof m=="function"?m:ph(+m),c):i},c.defined=function(m){return arguments.length?(e=typeof m=="function"?m:ph(!!m),c):e},c.curve=function(m){return arguments.length?(o=m,n!=null&&(r=o(n)),c):o},c.context=function(m){return arguments.length?(m==null?n=r=null:r=o(n=m),c):n},c}function iH(t,i,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+i)/6,(t._y0+4*t._y1+e)/6)}function oH(t){this._context=t}oH.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:iH(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,i){switch(t=+t,i=+i,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,i):this._context.moveTo(t,i);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:iH(this,t,i);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=i}};function Yb(t){return new oH(t)}function rH(t,i,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-i),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function u2(t,i){this._context=t,this._k=(1-i)/6}u2.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:rH(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,i){switch(t=+t,i=+i,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,i):this._context.moveTo(t,i);break;case 1:this._point=2,this._x1=t,this._y1=i;break;case 2:this._point=3;default:rH(this,t,i);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=i}};var D_t=(function t(i){function e(n){return new u2(n,i)}return e.tension=function(n){return t(+n)},e})(0);function zxe(t,i,e){var n=t._x1,o=t._y1,r=t._x2,a=t._y2;if(t._l01_a>pN){var c=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,m=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*c-t._x0*t._l12_2a+t._x2*t._l01_2a)/m,o=(o*c-t._y0*t._l12_2a+t._y2*t._l01_2a)/m}if(t._l23_a>pN){var p=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,h=3*t._l23_a*(t._l23_a+t._l12_a);r=(r*p+t._x1*t._l23_2a-i*t._l12_2a)/h,a=(a*p+t._y1*t._l23_2a-e*t._l12_2a)/h}t._context.bezierCurveTo(n,o,r,a,t._x2,t._y2)}function aH(t,i){this._context=t,this._alpha=i}aH.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,i){if(t=+t,i=+i,this._point){var e=this._x2-t,n=this._y2-i;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,i):this._context.moveTo(t,i);break;case 1:this._point=2;break;case 2:this._point=3;default:zxe(this,t,i);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=i}};var hh=(function t(i){function e(n){return i?new aH(n,i):new u2(n,0)}return e.alpha=function(n){return t(+n)},e})(.5);function sH(t){return t<0?-1:1}function lH(t,i,e){var n=t._x1-t._x0,o=i-t._x1,r=(t._y1-t._y0)/(n||o<0&&-0),a=(e-t._y1)/(o||n<0&&-0),c=(r*o+a*n)/(n+o);return(sH(r)+sH(a))*Math.min(Math.abs(r),Math.abs(a),.5*Math.abs(c))||0}function cH(t,i){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-i)/2:i}function uN(t,i,e){var n=t._x0,o=t._y0,r=t._x1,a=t._y1,c=(r-n)/3;t._context.bezierCurveTo(n+c,o+c*i,r-c,a-c*e,r,a)}function h2(t){this._context=t}h2.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:uN(this,this._t0,cH(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,i){var e=NaN;if(t=+t,i=+i,!(t===this._x1&&i===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,i):this._context.moveTo(t,i);break;case 1:this._point=2;break;case 2:this._point=3,uN(this,cH(this,e=lH(this,t,i)),e);break;default:uN(this,this._t0,e=lH(this,t,i));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=i,this._t0=e}}};function jxe(t){this._context=new dH(t)}(jxe.prototype=Object.create(h2.prototype)).point=function(t,i){h2.prototype.point.call(this,i,t)};function dH(t){this._context=t}dH.prototype={moveTo:function(t,i){this._context.moveTo(i,t)},closePath:function(){this._context.closePath()},lineTo:function(t,i){this._context.lineTo(i,t)},bezierCurveTo:function(t,i,e,n,o,r){this._context.bezierCurveTo(i,t,n,e,r,o)}};function Kb(t){return new h2(t)}var wa=class{height;width;stroke;stroke_width;stroke_dasharray;points;curve_type;arrow_start;arrow_end};var Zb=class{x;y;dx;dy},hN=class extends Zb{datum;constructor(i){super(),this.datum=i}},fN=class extends Zb{datum;constructor(i){super(),this.datum=i}},gN=class extends Zb{datum;constructor(i){super(),this.datum=i}},md=class{start=new ve;drag=new ve;end=new ve;call(i){i.call(this.behaviour())}behaviour(){let i;return zl().on("start",e=>{i=new hN(e.subject),i.dx=e.dx,i.dy=e.dy,i.x=e.x,i.y=e.y,this.start.emit(i)}).on("drag",e=>{let n=new fN(e.subject);n.dx=e.dx,n.dy=e.dy,this.drag.emit(n)}).on("end",e=>{let n=new gN(e.subject);n.dx=e.x-i.x,n.dy=e.y-i.y,this.end.emit(n)})}};var _N=class{datum;dx;dy;constructor(i,e,n){this.datum=i,this.dx=e,this.dy=n}},fh=class extends _N{},f2=class{datum;x;y;width;height;constructor(i,e,n,o,r){this.datum=i,this.x=e,this.y=n,this.width=o,this.height=r}},g2=class{x;y;constructor(i,e){this.x=i,this.y=e}},_2=class{datum;x;y;constructor(i,e,n){this.datum=i,this.x=e,this.y=n}},v2=class{savedText;x;y;constructor(i,e,n){this.savedText=i,this.x=e,this.y=n}},b2=class{textDrawingId;editedText;textElement;constructor(i,e,n){this.textDrawingId=i,this.editedText=e,this.textElement=n}},C2=class{event;drawing;constructor(i,e){this.event=i,this.drawing=e}},_c=class{event;link;constructor(i,e){this.event=i,this.link=e}},x2=class{event;interfaceLabel;constructor(i,e){this.event=i,this.interfaceLabel=e}},y2=class{event;label;constructor(i,e){this.event=i,this.label=e}};var vN=class{event;node;constructor(i,e){this.event=i,this.node=e}};var Jb=class extends vN{};var Yo=(()=>{class t{selection={};selected=new ve;unselected=new ve;setSelected(e){let n=this.convertToKeyDict(e),o=Object.keys(n).filter(a=>!this.isSelectedByKey(a)).map(a=>n[a]),r=Object.keys(this.selection).filter(a=>!(a in n)).map(a=>this.selection[a]);this.selection=n,o.length>0&&this.selected.emit(o),r.length>0&&this.unselected.emit(r)}getSelected(){return Object.keys(this.selection).map(e=>this.selection[e])}isSelected(e){let n=this.getKey(e);return this.isSelectedByKey(n)}isSelectedByKey(e){return e in this.selection}getKey(e){return`${e.constructor.name}-${e.id}`}convertToKeyDict(e){let n={};return e.forEach(o=>{n[this.getKey(o)]=o}),n}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Rp=(()=>{class t{cssFixer;fontFixer;selectionManager;mapSettings;onContextMenu=new ve;draggable=new md;static NODE_LABEL_MARGIN=3;constructor(e,n,o,r){this.cssFixer=e,this.fontFixer=n,this.selectionManager=o,this.mapSettings=r}redrawLabel(e,n){this.drawLabel(this.selectLabel(e,n))}draw(e){let n=this,o=e.selectAll("g.label_container").data(c=>[c.label]),r=o.enter().append("g").attr("class","label_container").attr("label_id",c=>c.id),a=o.merge(r).on("contextmenu",function(c,m){c.preventDefault(),n.onContextMenu.emit(new y2(c,m))});this.drawLabel(a),o.exit().remove(),this.mapSettings.isReadOnly||this.draggable.call(o)}removeInlineFillColor(e){return e.replace(/fill:\s*[^;]+;?/gi,"")}drawLabel(e){let n=e.selectAll("g.label_body").data(a=>[a]),o=n.enter().append("g").attr("class","label_body");o.append("text").attr("class","label"),o.append("rect").attr("class","label_selection");let r=n.merge(o);r.select("text.label").attr("label_id",a=>a.id).attr("style",a=>{let c=this.cssFixer.fix(a.style);return c=this.fontFixer.fixStyles(c),c=this.removeInlineFillColor(c),c}).text(a=>a.text).attr("x",a=>a.x).attr("y",a=>a.y).attr("transform",a=>`rotate(${a.rotation}, ${a.x}, ${a.y})`),r.select("rect.label_selection").attr("visibility",a=>this.selectionManager.isSelected(a)?"visible":"hidden").attr("stroke","black").attr("stroke-dasharray","3,3").attr("stroke-width","0.5").attr("fill","none").each(function(a){let c=dn(this),p=r.select(`text[label_id="${a.id}"]`).node().getBBox(),h=2;c.attr("width",p.width+h*2),c.attr("height",p.height+h*2),c.attr("x",p.x-h),c.attr("y",p.y-h),c.attr("transform",`rotate(${a.rotation}, ${a.x}, ${a.y})`)})}selectLabel(e,n){return e.selectAll(`g.label_container[label_id="${n.id}"]`)}static \u0275fac=function(n){return new(n||t)(ge(Ll),ge(ca),ge(Yo),ge(Vl))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var $l=(()=>{class t{dragged=new ve;labelDragged=new ve;clicked=new ve;static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var zg=(()=>{class t{selectionManager;labelWidget;nodesEventSource;mapSettingsService;onContextMenu=new ve;onContextConsoleMenu=new ve;onNodeClicked=new ve;constructor(e,n,o,r){this.selectionManager=e,this.labelWidget=n,this.nodesEventSource=o,this.mapSettingsService=r}draw(e){let n=this,o=e.selectAll("g.node_body").data(c=>[c]),r=o.enter().append("g").attr("class","node_body");r.append("image");let a=o.merge(r).classed("selected",c=>this.selectionManager.isSelected(c)).classed("locked",c=>c.locked).on("click",(c,m)=>{this.nodesEventSource.clicked.emit(new _2(m,c.pageX,c.pageY))});a.select(".layer_label_wrapper").remove(),this.mapSettingsService.isLayerNumberVisible&&a.append("rect").attr("class","layer_label_wrapper").attr("width","26").attr("height","26").attr("x",c=>c.width/2-13).attr("y",c=>c.height/2-13).attr("fill","red"),a.select(".locked_border").remove(),a.filter(c=>c.locked).append("rect").attr("class","locked_border").attr("width",c=>c.width||60).attr("height",c=>c.height||60).attr("x",0).attr("y",0).attr("stroke","var(--mat-sys-outline)").attr("stroke-width",2).attr("stroke-dasharray","5, 3").attr("fill","none"),a.select(".layer_label").remove(),this.mapSettingsService.isLayerNumberVisible&&a.append("text").attr("class","layer_label").text(c=>c.z).attr("x",function(c){return c.z>=100?c.width/2-13:c.z>=10?c.width/2-9:c.width/2-5}).attr("y",c=>c.height/2+5).attr("style",()=>{let c=[];return c.push('font-family: "Noto Sans"'),c.push("font-size: 11pt"),c.push("font-weight: bold"),c.join("; ")}).attr("fill","#ffffff"),a.select("image").on("contextmenu",function(c,m){c.preventDefault(),n.onContextMenu.emit(new Jb(c,m))}).on("dblclick",function(c,m){c.preventDefault(),n.onContextConsoleMenu.emit(new Jb(c,m))}).each(function(c){this.getAttribute("href")!==c.symbolUrl&&(this.removeAttribute("href"),this.getClientRects(),this.setAttribute("href",c.symbolUrl))}).attr("width",c=>c.width?c.width:60).attr("height",c=>c.height?c.height:60).attr("x",c=>0).attr("y",c=>0).on("mouseover",function(c){dn(this).attr("class","over")}).on("mouseout",function(c){dn(this).attr("class","")}),a.attr("transform",c=>c.width?`translate(${c.x},${c.y})`:`translate(${c.x-30},${c.y-30})`),this.labelWidget.draw(a)}static \u0275fac=function(n){return new(n||t)(ge(Yo),ge(Rp),ge($l),ge(To))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Fp=(()=>{class t{nodeWidget;mapSettings;static NODE_LABEL_MARGIN=3;draggable=new md;constructor(e,n){this.nodeWidget=e,this.mapSettings=n}redrawNode(e,n){this.nodeWidget.draw(this.selectNode(e,n))}updateNodePosition(e,n){this.selectNode(e,n).select("g.node_body").attr("transform",()=>n.width?`translate(${n.x},${n.y})`:`translate(${n.x-30},${n.y-30})`)}draw(e){let n=e.selectAll("g.node").data(a=>a.nodes?a.nodes:[],a=>a.id),o=n.enter().append("g").attr("class","node").attr("node_id",a=>a.id),r=n.merge(o);this.nodeWidget.draw(r),n.exit().remove(),this.mapSettings.isReadOnly||this.draggable.call(r)}selectNode(e,n){return e.selectAll(`g.node[node_id="${n.id}"]`)}static \u0275fac=function(n){return new(n||t)(ge(zg),ge(Vl))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var S2=class{points};var jg=(()=>{class t{drawingLine=new S2;selection;drawing=!1;data={};start(e,n,o){let r=this;this.drawing=!0,this.data=o,this.drawingLine.points=[new vp(e,n)];let a=function(m,p){let h=r.selection.select("g.canvas").node(),g=aa(m,h);r.drawing&&(r.drawingLine.points=[r.drawingLine.points[0],new vp(g[0],g[1])]),r.draw(null,null)},c=function(m,p){m.key==="Escape"&&r.cancel()};this.selection.on("mousemove",a),this.selection.on("keydown",c),this.draw(null,null)}isDrawing(){return this.drawing}cancel(){this.drawing=!1,this.drawingLine.points=[],this.selection.on("mousemove",null),this.selection.on("keydown",null),this.draw(null,null)}stop(){return this.drawing=!1,this.selection.on("mousemove",null),this.selection.on("keydown",null),this.draw(null,null),this.data}connect(e,n){this.selection=e}draw(e,n){let o=this.selection.select("g.canvas");o.select("g.drawing-line-tool").node()||o.append("g").attr("class","drawing-line-tool");let r=this.selection.select("g.drawing-line-tool"),a=[];this.drawing&&this.drawingLine.points.length>0&&(a=[this.drawingLine.points.map(h=>[h.x,h.y])]);let c=uh(),m=r.selectAll("path").data(a);m.exit().remove();let p=m.enter().append("path");m.merge(p).attr("d",c).attr("stroke","#000").attr("stroke-width","2").attr("fill","none")}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var rn=(()=>{class t{static DEFAULT_LINK_TYPE="straight";static BEZIER_CURVINESS_DEFAULT=150;static BEZIER_CURVINESS_MIN=-2500;static BEZIER_CURVINESS_MAX=2500;static BEZIER_CURVINESS_STEP=1;static STATE_MACHINE_CURVINESS_DEFAULT=0;static STATE_MACHINE_CURVINESS_MIN=-2500;static STATE_MACHINE_CURVINESS_MAX=2500;static STATE_MACHINE_CURVINESS_STEP=1;static STATE_MACHINE_ZERO_CURVE_OFFSET=10;static STATE_MACHINE_TRANSLATE_Y=3;static FLOWCHART_ROUNDNESS_DEFAULT=0;static FLOWCHART_ROUNDNESS_MIN=-250;static FLOWCHART_ROUNDNESS_MAX=250;static FLOWCHART_ROUNDNESS_STEP=1;static getLinkStyle(e){return e.type==2?"10, 10":e.type==3?`${e.width}, ${e.width}`:e.type==4?`20, 10, ${e.width}, 10`:e.type==5?`20, 10, ${e.width}, ${e.width}, ${e.width}, 10`:"0, 0"}static normalizeLinkType(e){let n=(e||"").toLowerCase().replace(/[\s_-]/g,"");return n==="bezier"?"bezier":n==="flowchart"?"flowchart":n==="statemachine"?"statemachine":n==="freeform"?"freeform":t.DEFAULT_LINK_TYPE}static getLinkPath(e,n,o,r){let a=t.normalizeLinkType(o?.link_type);if(a==="bezier"){let c=typeof r?.bezierVariation=="number"&&!Number.isNaN(r.bezierVariation)?r.bezierVariation:0,m=t.getEffectiveBezierMajorAnchor(o?.bezier_curviness,c);return t.getJsPlumbBezierPath(e,n,m,r?.sourceOrientation,r?.targetOrientation)}if(a==="flowchart"){let c=t.normalizeFlowchartRoundness(o?.flowchart_roundness);return t.getFlowchartPath(e,n,c,r?.flowchartDistance)}if(a==="statemachine"){let c=t.normalizeStateMachineCurviness(o?.bezier_curviness);return t.getStateMachinePath(e,n,c)}return t.getStraightPath(e,n)}static getFreeformBezierPath(e,n,o,r,a){let c=Np();if(c.moveTo(e[0],e[1]),a){let m=2*a[0]-.5*(e[0]+n[0]),p=2*a[1]-.5*(e[1]+n[1]);c.quadraticCurveTo(m,p,n[0],n[1])}else c.lineTo(n[0],n[1]);return c.toString()}static getLinkTransform(e){return t.normalizeLinkType(e?.link_type)==="statemachine"?`translate(0,${t.STATE_MACHINE_TRANSLATE_Y})`:null}static normalizeBezierCurviness(e){let n=typeof e=="number"&&!Number.isNaN(e)?e:t.BEZIER_CURVINESS_DEFAULT,o=Math.round(n/t.BEZIER_CURVINESS_STEP)*t.BEZIER_CURVINESS_STEP;return Math.max(t.BEZIER_CURVINESS_MIN,Math.min(t.BEZIER_CURVINESS_MAX,o))}static getEffectiveBezierMajorAnchor(e,n=0){let o=t.normalizeBezierCurviness(e),r=typeof n=="number"&&!Number.isNaN(n)?n:0;return-o+r}static normalizeFlowchartRoundness(e){let n=typeof e=="number"&&!Number.isNaN(e)?e:t.FLOWCHART_ROUNDNESS_DEFAULT,o=Math.round(n/t.FLOWCHART_ROUNDNESS_STEP)*t.FLOWCHART_ROUNDNESS_STEP;return Math.max(t.FLOWCHART_ROUNDNESS_MIN,Math.min(t.FLOWCHART_ROUNDNESS_MAX,o))}static normalizeStateMachineCurviness(e){let n=typeof e=="number"&&!Number.isNaN(e)?e:t.STATE_MACHINE_CURVINESS_DEFAULT,o=Math.round(n/t.STATE_MACHINE_CURVINESS_STEP)*t.STATE_MACHINE_CURVINESS_STEP;return Math.max(t.STATE_MACHINE_CURVINESS_MIN,Math.min(t.STATE_MACHINE_CURVINESS_MAX,o))}static getContinuousOrientation(e,n){let o=n[0]-e[0],r=n[1]-e[1];return Math.abs(o)>=Math.abs(r)?[o>=0?1:-1,0]:[0,r>=0?1:-1]}static getBezierControlPoints(e,n,o,r,a){let c=t.sanitizeOrientation(r||t.getContinuousOrientation(e,n)),m=t.sanitizeOrientation(a||t.getContinuousOrientation(n,e)),p=t.findBezierControlPoint(e,e,n,c,m,o),h=t.findBezierControlPoint(n,n,e,m,c,o);return{sourceControlPoint:p,targetControlPoint:h,sourceOrientation:c,targetOrientation:m}}static getBezierSideSign(e,n,o,r,a){let{sourceControlPoint:c}=t.getBezierControlPoints(e,n,o,r,a),m=n[0]-e[0],p=n[1]-e[1],h=c[0]-e[0],g=c[1]-e[1],M=m*g-p*h;return Math.abs(M)<1e-4||M>0?1:-1}static getStraightPath(e,n){let o=Np();return o.moveTo(e[0],e[1]),o.lineTo(n[0],n[1]),o.toString()}static getFlowchartPath(e,n,o,r=0){let a=n[0]-e[0],c=n[1]-e[1],m=Math.abs(a),p=Math.abs(c),h=Math.abs(a)>=Math.abs(c),g=6,M=Math.hypot(a,c)||1,C=typeof r=="number"&&!Number.isNaN(r)?r:0,_=-c/M*C,w=a/M*C;if(m<=g||p<=g)return t.getStraightPath(e,n);let S=[[e[0],e[1]]];if(h){let y=(_<0?-1:1)*Math.abs(w),k=e[0]+a/2+(y-_);S.push([k,e[1]]),S.push([k,n[1]])}else{let y=(w<0?-1:1)*Math.abs(_),k=e[1]+c/2+(y-w);S.push([e[0],k]),S.push([n[0],k])}return S.push([n[0],n[1]]),t.getRoundedPolylinePath(S,Math.abs(o))}static getRoundedPolylinePath(e,n){let o=Np(),r=e.filter((m,p,h)=>{if(p===0)return!0;let g=h[p-1];return m[0]!==g[0]||m[1]!==g[1]});if(r.length===0)return"";if(o.moveTo(r[0][0],r[0][1]),r.length===1)return o.toString();if(n<=0){for(let m=1;m<r.length;m++){let p=r[m];o.lineTo(p[0],p[1])}return o.toString()}let a=1e-4;for(let m=1;m<r.length-1;m++){let p=r[m-1],h=r[m],g=r[m+1],M=h[0]-p[0],C=h[1]-p[1],_=g[0]-h[0],w=g[1]-h[1],S=Math.sqrt(M*M+C*C),y=Math.sqrt(_*_+w*w);if(S<a||y<a){o.lineTo(h[0],h[1]);continue}let k=M/S,I=C/S,E=_/y,N=w/y,T=k*N-I*E;if(Math.abs(T)<a){o.lineTo(h[0],h[1]);continue}let R=Math.min(n,S/2,y/2);if(R<a){o.lineTo(h[0],h[1]);continue}let W=[h[0]-k*R,h[1]-I*R],pe=[h[0]+E*R,h[1]+N*R];o.lineTo(W[0],W[1]),o.quadraticCurveTo(h[0],h[1],pe[0],pe[1])}let c=r[r.length-1];return o.lineTo(c[0],c[1]),o.toString()}static getStateMachinePath(e,n,o){let r=Np(),a=(e[0]+n[0])/2,c=(e[1]+n[1])/2,m=t.getContinuousOrientation(e,n),p=-m[1],h=m[0],g=o+t.STATE_MACHINE_ZERO_CURVE_OFFSET,M=[a+p*g,c+h*g];return r.moveTo(e[0],e[1]),r.bezierCurveTo(M[0],M[1],M[0],M[1],n[0],n[1]),r.toString()}static getJsPlumbBezierPath(e,n,o,r,a){let{sourceControlPoint:c,targetControlPoint:m}=t.getBezierControlPoints(e,n,o,r,a),p=Np();return p.moveTo(e[0],e[1]),p.bezierCurveTo(c[0],c[1],m[0],m[1],n[0],n[1]),p.toString()}static sanitizeOrientation(e){let n=o=>o>0?1:o<0?-1:0;return[n(e[0]),n(e[1])]}static findBezierControlPoint(e,n,o,r,a,c){let p=r[0]!==a[0]||r[1]===a[1],h=[0,0];return p?(a[0]===0?h[0]=o[0]<n[0]?e[0]+10:e[0]-10:h[0]=e[0]+c*a[0],a[1]===0?h[1]=o[1]<n[1]?e[1]+10:e[1]-10:h[1]=e[1]+c*r[1]):(r[0]===0?h[0]=n[0]<o[0]?e[0]+10:e[0]-10:h[0]=e[0]-c*r[0],r[1]===0?h[1]=n[1]<o[1]?e[1]+10:e[1]-10:h[1]=e[1]+c*a[1]),h}}return t})();var pd=(()=>{class t{cssFixer;fontFixer;selectionManager;mapSettings;themeService=f(yi);onContextMenu=new ve;draggable=new md;static SURROUNDING_TEXT_BORDER=5;enabled=!0;constructor(e,n,o,r){this.cssFixer=e,this.fontFixer=n,this.selectionManager=o,this.mapSettings=r}applyThemeLabelColor(e){let n=this.themeService.getCanvasLabelColor();return e.replace(/fill:\s*[^;]+;?/gi,`fill: ${n};`)}getRenderedLabelX(e){let n=this.selectionManager.isSelected(e)?0:e.bezierRenderOffsetX||0;return e.label.x+n}getRenderedLabelY(e){let n=this.selectionManager.isSelected(e)?0:e.bezierRenderOffsetY||0;return e.label.y+n}setEnabled(e){this.enabled=e}draw(e){let n=this,o=e.selectAll("g.link_node_position").data(h=>{let g=h.link_style?.type===0;return[[h.source,h.nodes[0],g],[h.target,h.nodes[1],g]]}),r=o.enter().append("g").classed("link_node_position",!0),a=o.merge(r);a.attr("transform",h=>`translate(${h[0].x}, ${h[0].y})`).classed("link-hidden",h=>h[2]);let c=a.selectAll("g.interface_label_container").data(h=>this.enabled?[h[1]]:[]),m=c.enter().append("g").classed("interface_label_container",!0);m.append("rect").attr("class","interface_label_selection"),m.append("text").attr("class","interface_label noselect").attr("interface_label_id",h=>`${h.id}`);let p=c.merge(m).on("contextmenu",function(h,g){h.preventDefault(),n.onContextMenu.emit(new x2(h,g))});p.select("text.interface_label").text(h=>h.label.text).attr("style",h=>{let g=this.cssFixer.fix(h.label.style);return g=this.fontFixer.fixStyles(g),g=this.applyThemeLabelColor(g),g}).attr("x",h=>this.getRenderedLabelX(h)).attr("y",h=>this.getRenderedLabelY(h)).attr("transform",h=>{let g=this.getRenderedLabelX(h),M=this.getRenderedLabelY(h);return`rotate(${h.label.rotation}, ${g}, ${M})`}),p.select("rect.interface_label_selection").attr("visibility",h=>this.selectionManager.isSelected(h)?"visible":"hidden").attr("stroke","black").attr("stroke-dasharray","3,3").attr("stroke-width","0.5").attr("fill","none").each(function(h){let g=dn(this),C=p.select(`text[interface_label_id="${h.id}"]`).node().getBBox(),_=2;g.attr("width",C.width+_*2),g.attr("height",C.height+_*2),g.attr("x",C.x-_),g.attr("y",C.y-_),g.attr("transform",`rotate(${h.label.rotation}, ${C.x-_}, ${C.y-_})`)}),c.exit().remove(),this.mapSettings.isReadOnly||this.draggable.call(p)}static \u0275fac=function(n){return new(n||t)(ge(Ll),ge(ca),ge(Yo),ge(Vl))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var eC=class{x;y;status;port;constructor(i,e,n,o){this.x=i,this.y=e,this.status=n,this.port=o}};var w2=(()=>{class t{mapSettingsService;static MAX_INLINE_LABELS_PARALLEL_LINKS=4;static LABEL_DISTANCE=60;static MIN_LINK_LENGTH_FOR_LABELS=180;static LABEL_HEIGHT=18;static LABEL_MIN_WIDTH=34;static LABEL_HORIZONTAL_PADDING=2;static LABEL_RADIUS=8;static LABEL_STROKE_WIDTH=3;static LABEL_FONT_SIZE=10;static LABEL_FONT_FAMILY='"Noto Sans", "DejaVu Sans", "Segoe UI", sans-serif';static LABEL_BACKGROUND_COLOR="#E2E8FF";constructor(e){this.mapSettingsService=e}draw(e){let n=this;e.each(function(o){o.isMultiplied=(o.parallelLinksCount||1)>1;let r=dn(this),a=r.select("path"),c=n.mapSettingsService.showInterfaceLabels,m=o.link_style?.type===0,p=c&&n.mapSettingsService.integrateLinkLabelsToLinks,h=c&&n.shouldRenderTooltipOnly(o),g=[],M=a.node();if(M){let C=M.getTotalLength();if(o.source&&o.target&&(h||C>t.MIN_LINK_LENGTH_FOR_LABELS)){let _=h?Math.min(t.LABEL_DISTANCE,C/4):t.LABEL_DISTANCE,w=M.getPointAtLength(_),S=M.getPointAtLength(C-_),y=o.nodes?.find(I=>I.nodeId===o.source.id)?.label?.text||"",k=o.nodes?.find(I=>I.nodeId===o.target.id)?.label?.text||"";g=[new eC(w.x,w.y,o.suspend?"suspended":o.source.status,y),new eC(S.x,S.y,o.suspend?"suspended":o.target.status,k)]}}if(n.renderEndpointHoverTooltips(r,g,h),n.bindEndpointTooltipHover(a,r,h),r.selectAll("circle.status_started").remove(),r.selectAll("circle.status_stopped").remove(),r.selectAll("circle.status_suspended").remove(),r.selectAll("rect.status_started").remove(),r.selectAll("text.status_started_label").remove(),r.selectAll("rect.status_stopped").remove(),r.selectAll("text.status_stopped_label").remove(),r.selectAll("rect.status_suspended").remove(),r.selectAll("text.status_suspended_label").remove(),p&&!h){let C=r.selectAll("g.status_label").data(g),_=C.enter().append("g").attr("class","status_label"),w=C.merge(_).attr("transform",k=>`translate(${k.x}, ${k.y})`).classed("link-hidden",()=>m),S=w.selectAll("rect").data(k=>[k]);S.enter().append("rect").merge(S).attr("class",k=>`status_${k.status}`).attr("width",k=>n.getLabelWidth(k.port)).attr("height",t.LABEL_HEIGHT).attr("x",k=>-(n.getLabelWidth(k.port)/2)).attr("y",-t.LABEL_HEIGHT/2).attr("rx",t.LABEL_RADIUS).attr("ry",t.LABEL_RADIUS).style("fill",t.LABEL_BACKGROUND_COLOR).style("fill-opacity",1).attr("stroke",k=>n.getStatusStrokeColor(k.status)).attr("stroke-width",t.LABEL_STROKE_WIDTH),S.exit().remove();let y=w.selectAll("text").data(k=>[k]);y.enter().append("text").merge(y).attr("class",k=>`status_${k.status}_label`).text(k=>k.port||"").attr("x",0).attr("y",0).attr("dy","0em").attr("text-anchor","middle").attr("dominant-baseline","central").attr("alignment-baseline","central").attr("fill","#111111").style("font-family",t.LABEL_FONT_FAMILY).style("font-size",`${t.LABEL_FONT_SIZE}px`).style("font-weight","500"),y.exit().remove(),C.exit().remove()}else{r.selectAll("g.status_label").remove();let C=r.selectAll("circle.status_started").data(g.filter(E=>E.status==="started")),_=C.enter().append("circle");C.merge(_).attr("class","status_started").attr("cx",E=>E.x).attr("cy",E=>E.y).attr("r",6).attr("text",E=>E.port||"").attr("fill","#2ecc71").classed("link-hidden",()=>m),C.exit().remove();let w=r.selectAll("rect.status_stopped").data(g.filter(E=>E.status==="stopped")),S=w.enter().append("rect"),y=10;w.merge(S).attr("class","status_stopped").attr("x",E=>E.x-y/2).attr("y",E=>E.y-y/2).attr("width",y).attr("height",y).attr("fill","red").classed("link-hidden",()=>m),w.exit().remove();let k=r.selectAll("circle.status_suspended").data(g.filter(E=>E.status==="suspended")),I=k.enter().append("circle");k.merge(I).attr("class","status_suspended").attr("cx",E=>E.x).attr("cy",E=>E.y).attr("r",6).attr("fill","#FFFF00").classed("link-hidden",()=>m),k.exit().remove()}})}getLabelWidth(e){let n=e||"",o=t.LABEL_FONT_SIZE*.62,r=n.length*o+t.LABEL_HORIZONTAL_PADDING*2;return Math.max(t.LABEL_MIN_WIDTH,Math.ceil(r))}getStatusStrokeColor(e){return e==="started"?"#2ecc71":e==="stopped"?"red":"#FFFF00"}shouldRenderTooltipOnly(e){return(e.parallelLinksCount||1)>t.MAX_INLINE_LABELS_PARALLEL_LINKS}renderEndpointHoverTooltips(e,n,o){let r=e.selectAll("g.status_hover_tooltip").data(o?n:[]),a=r.enter().append("g").attr("class","status_hover_tooltip").attr("visibility","hidden"),c=r.merge(a).style("pointer-events","none").attr("transform",h=>`translate(${h.x}, ${h.y})`);c.raise();let m=c.selectAll("rect").data(h=>[h]);m.enter().append("rect").merge(m).attr("class","status_hover_tooltip_rect").attr("width",h=>this.getLabelWidth(h.port)).attr("height",t.LABEL_HEIGHT).attr("x",h=>-(this.getLabelWidth(h.port)/2)).attr("y",-t.LABEL_HEIGHT/2).attr("rx",t.LABEL_RADIUS).attr("ry",t.LABEL_RADIUS).style("fill",t.LABEL_BACKGROUND_COLOR).style("fill-opacity",1).attr("stroke",h=>this.getStatusStrokeColor(h.status)).attr("stroke-width",t.LABEL_STROKE_WIDTH),m.exit().remove();let p=c.selectAll("text").data(h=>[h]);p.enter().append("text").merge(p).attr("class","status_hover_tooltip_label").text(h=>h.port||"").attr("x",0).attr("y",0).attr("dy","0em").attr("text-anchor","middle").attr("dominant-baseline","central").attr("alignment-baseline","central").attr("fill","#111111").style("font-family",t.LABEL_FONT_FAMILY).style("font-size",`${t.LABEL_FONT_SIZE}px`).style("font-weight","500"),p.exit().remove(),r.exit().remove()}bindEndpointTooltipHover(e,n,o){let r=n.node(),a=r&&r.parentNode?dn(r.parentNode):null;if(!o){e.on("mouseover.status_hover_tooltip",null),e.on("mouseout.status_hover_tooltip",null),e.attr("pointer-events",null),n.selectAll("g.status_hover_tooltip").attr("visibility","hidden");return}e.attr("pointer-events","stroke"),e.on("mouseover.status_hover_tooltip",()=>{a&&a.raise(),n.selectAll("g.status_hover_tooltip").raise().attr("visibility","visible")}).on("mouseout.status_hover_tooltip",()=>{n.selectAll("g.status_hover_tooltip").attr("visibility","hidden")});let c=e.node(),m=c?c.matches(":hover"):!1,p=n.selectAll("g.status_hover_tooltip");m&&(a&&a.raise(),p.raise()),p.attr("visibility",m?"visible":"hidden")}static \u0275fac=function(n){return new(n||t)(ge(To))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var $g=class{endpointOrder=new Map;getEndpointOrderKey(i,e){return`${i||""}:${e}`}getEndpointOrder(i,e){return this.endpointOrder.get(this.getEndpointOrderKey(i.id,e))||0}hasDistanceBasedParallelSpacing(i){return i.parallelLinksCount>1&&typeof i.distance=="number"&&!Number.isNaN(i.distance)}getRenderEndpointOrder(i,e){return this.hasDistanceBasedParallelSpacing(i)?0:this.getEndpointOrder(i,e)}getEndpointPoint(i,e,n,o=0){let r=-e[1],a=e[0],m=n*14+o;return[i[0]+r*m,i[1]+a*m]}getFaceEndpointOrder(i,e){let n=e-(i-1)/2;return i===2?e===0?-1:1:n}buildEndpointOrder(i){this.endpointOrder.clear();let e=new Map;i.forEach(n=>{if(!n.source||!n.target||!n.nodes||n.nodes.length<2||rn.normalizeLinkType(n.link_style?.link_type)!=="bezier")return;let r=[n.source.x+n.source.width/2,n.source.y+n.source.height/2],a=[n.target.x+n.target.width/2,n.target.y+n.target.height/2],c=n.nodes[0].nodeId||n.source.id,m=n.nodes[1].nodeId||n.target.id;if(c){let p=rn.getContinuousOrientation(r,a),h=`${c}:${p[0]},${p[1]}`,g=-p[1],M=p[0],C=a[0]-r[0],_=a[1]-r[1],w=C*g+_*M,S=e.get(h)||[];S.push({link:n,endpointIndex:0,projection:w}),e.set(h,S)}if(m){let p=rn.getContinuousOrientation(a,r),h=`${m}:${p[0]},${p[1]}`,g=-p[1],M=p[0],C=r[0]-a[0],_=r[1]-a[1],w=C*g+_*M,S=e.get(h)||[];S.push({link:n,endpointIndex:1,projection:w}),e.set(h,S)}}),e.forEach(n=>{n.sort((o,r)=>o.projection-r.projection),n.forEach((o,r)=>{let a=this.getFaceEndpointOrder(n.length,r);this.endpointOrder.set(this.getEndpointOrderKey(o.link.id,o.endpointIndex),a)})})}clearLabelRenderOffsets(i){i.nodes&&i.nodes.forEach(e=>{e.bezierRenderOffsetX=0,e.bezierRenderOffsetY=0})}applyLabelRenderOffsets(i,e,n,o,r){if(!i.nodes||i.nodes.length<2)return;let a=n[0]-e[0],c=n[1]-e[1],m=Math.hypot(a,c)||1,p=-c/m,h=a/m,g=o>=0?1:-1,M=Math.min(16,Math.max(7,7+Math.abs(r)*.03)),C=6,_=this.getRenderEndpointOrder(i,0),w=this.getRenderEndpointOrder(i,1),S=M*g+_*C,y=-M*g+w*C;i.nodes[0].bezierRenderOffsetX=p*S,i.nodes[0].bezierRenderOffsetY=h*S,i.nodes[1].bezierRenderOffsetX=p*y,i.nodes[1].bezierRenderOffsetY=h*y}getVariation(i){let e=this.getEndpointOrder(i,0),n=this.getEndpointOrder(i,1),o=(e-n)*6;return Math.round(Math.max(-24,Math.min(24,o)))}};var bN=class{link;source;target;style;bezierVariation;sourceOrientation;targetOrientation;controlOffset;constructor(i,e,n,o,r=0,a,c,m){this.link=i,this.source=e,this.target=n,this.style=o,this.bezierVariation=r,this.sourceOrientation=a,this.targetOrientation=c,this.controlOffset=m}},Hg=(()=>{class t{onContextMenu=new ve;bezierLayout=new $g;defaultEthernetLinkStyle={color:"#000000",width:2,type:1,link_type:rn.DEFAULT_LINK_TYPE,bezier_curviness:rn.BEZIER_CURVINESS_DEFAULT,flowchart_roundness:rn.FLOWCHART_ROUNDNESS_DEFAULT};constructor(){}linktoEthernetLink(e){let n=rn.normalizeLinkType(e.link_style?.link_type),o=[e.source.x+e.source.width/2,e.source.y+e.source.height/2],r=[e.target.x+e.target.width/2,e.target.y+e.target.height/2],a=rn.getContinuousOrientation(o,r),c=rn.getContinuousOrientation(r,o),m=n==="bezier"?this.bezierLayout.getVariation(e):0,p=typeof e.link_style?.color=="string"&&e.link_style.color.length>0,h=typeof e.link_style?.width=="number"&&e.link_style.width>=this.defaultEthernetLinkStyle.width,g={color:p?e.link_style.color:this.defaultEthernetLinkStyle.color,width:h?e.link_style.width:this.defaultEthernetLinkStyle.width,type:e.link_style?.type!==void 0?e.link_style.type:this.defaultEthernetLinkStyle.type,link_type:n,bezier_curviness:n==="statemachine"?rn.normalizeStateMachineCurviness(e.link_style?.bezier_curviness):rn.normalizeBezierCurviness(e.link_style?.bezier_curviness),flowchart_roundness:rn.normalizeFlowchartRoundness(e.link_style?.flowchart_roundness),control_offset:e.link_style?.control_offset},M=o,C=r;if(n==="bezier"){M=this.bezierLayout.getEndpointPoint(o,a,this.bezierLayout.getRenderEndpointOrder(e,0)),C=this.bezierLayout.getEndpointPoint(r,c,this.bezierLayout.getRenderEndpointOrder(e,1));let _=rn.getEffectiveBezierMajorAnchor(g.bezier_curviness,m),w=rn.getBezierSideSign(M,C,_,a,c);this.bezierLayout.applyLabelRenderOffsets(e,M,C,w,_)}else this.bezierLayout.clearLabelRenderOffsets(e);return new bN(e,M,C,g,m,a,c,g.control_offset)}draw(e){let n=e.data();this.bezierLayout.buildEndpointOrder(Array.isArray(n)?n:[]);let o=e.selectAll("path.ethernet_link").data(c=>{if(c.linkType==="ethernet"){let m=this.linktoEthernetLink(c);return m?[m]:[]}return[]}),r=o.enter().append("path").attr("class","ethernet_link");o.merge(r).on("contextmenu",(c,m)=>{let p=m;p&&this.onContextMenu.emit(new _c(c,p))}).attr("transform",c=>rn.getLinkTransform(c.style)).attr("fill","none").attr("stroke",c=>!c.style.color||c.style.color===this.defaultEthernetLinkStyle.color?"var(--gns3-canvas-link-color)":c.style.color).attr("stroke-width",c=>c.style.width).attr("stroke-dasharray",c=>rn.getLinkStyle(c.style)).classed("link_hidden",c=>c.style.type===0).attr("pointer-events",c=>c.style.type===0?"stroke":null).attr("d",c=>c.style.link_type==="freeform"||c.controlOffset?rn.getFreeformBezierPath(c.source,c.target,c.sourceOrientation,c.targetOrientation,c.controlOffset):rn.getLinkPath(c.source,c.target,c.style,{bezierVariation:c.bezierVariation,sourceOrientation:c.sourceOrientation,targetOrientation:c.targetOrientation,flowchartDistance:typeof c.link.distance=="number"&&!Number.isNaN(c.link.distance)?c.link.distance:0}))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var CN=class{link;source;target;style;bezierVariation;useLegacySerialPattern;sourceOrientation;targetOrientation;controlOffset;constructor(i,e,n,o,r=0,a=!1,c,m,p){this.link=i,this.source=e,this.target=n,this.style=o,this.bezierVariation=r,this.useLegacySerialPattern=a,this.sourceOrientation=c,this.targetOrientation=m,this.controlOffset=p}},Ug=(()=>{class t{onContextMenu=new ve;bezierLayout=new $g;defaultSerialLinkStyle={color:"#800000",width:2,type:1,link_type:rn.DEFAULT_LINK_TYPE,bezier_curviness:rn.BEZIER_CURVINESS_DEFAULT,flowchart_roundness:rn.FLOWCHART_ROUNDNESS_DEFAULT};constructor(){}getLegacySerialPath(e,n){let o=n[0]-e[0],r=n[1]-e[1],c=Math.atan2(r,o)-Math.PI/4,m=Math.cos(c),p=Math.sin(c),h=15,g=e[0]+o/2,M=e[1]+r/2,C=[g+h*m,M+h*p],_=[g-h*m,M-h*p];return`M${e[0]},${e[1]}L${C[0]},${C[1]}L${_[0]},${_[1]}L${n[0]},${n[1]}`}linkToSerialLink(e){let n=rn.normalizeLinkType(e.link_style?.link_type),o=[e.source.x+e.source.width/2,e.source.y+e.source.height/2],r=[e.target.x+e.target.width/2,e.target.y+e.target.height/2],a=rn.getContinuousOrientation(o,r),c=rn.getContinuousOrientation(r,o),m=n==="bezier"?this.bezierLayout.getVariation(e):0,p=typeof e.link_style?.color=="string"&&e.link_style.color.length>0,h=typeof e.link_style?.width=="number"&&e.link_style.width>=this.defaultSerialLinkStyle.width,g={color:p?e.link_style.color:this.defaultSerialLinkStyle.color,width:h?e.link_style.width:this.defaultSerialLinkStyle.width,type:e.link_style?.type!==void 0?e.link_style.type:this.defaultSerialLinkStyle.type,link_type:n,bezier_curviness:n==="statemachine"?rn.normalizeStateMachineCurviness(e.link_style?.bezier_curviness):rn.normalizeBezierCurviness(e.link_style?.bezier_curviness),flowchart_roundness:rn.normalizeFlowchartRoundness(e.link_style?.flowchart_roundness),control_offset:e.link_style?.control_offset},M=o,C=r;if(n==="bezier"){M=this.bezierLayout.getEndpointPoint(o,a,this.bezierLayout.getRenderEndpointOrder(e,0)),C=this.bezierLayout.getEndpointPoint(r,c,this.bezierLayout.getRenderEndpointOrder(e,1));let _=rn.getEffectiveBezierMajorAnchor(g.bezier_curviness,m),w=rn.getBezierSideSign(M,C,_,a,c);this.bezierLayout.applyLabelRenderOffsets(e,M,C,w,_)}else this.bezierLayout.clearLabelRenderOffsets(e);return new CN(e,M,C,g,m,n===rn.DEFAULT_LINK_TYPE,a,c,g.control_offset)}draw(e){let n=e.data();this.bezierLayout.buildEndpointOrder(Array.isArray(n)?n:[]);let o=e.selectAll("path.serial_link").data(c=>{if(c.linkType==="serial"){let m=this.linkToSerialLink(c);return m?[m]:[]}return[]}),r=o.enter().append("path").attr("class","serial_link");o.merge(r).on("contextmenu",(c,m)=>{let p=m;p&&this.onContextMenu.emit(new _c(c,p))}).attr("transform",c=>rn.getLinkTransform(c.style)).attr("fill","none").attr("stroke",c=>c.style.color).attr("stroke-width",c=>c.style.width).attr("stroke-dasharray",c=>rn.getLinkStyle(c.style)).classed("link_hidden",c=>c.style.type===0).attr("pointer-events",c=>c.style.type===0?"stroke":null).attr("d",c=>c.useLegacySerialPattern?this.getLegacySerialPath(c.source,c.target):c.style.link_type==="freeform"||c.controlOffset?rn.getFreeformBezierPath(c.source,c.target,c.sourceOrientation,c.targetOrientation,c.controlOffset):rn.getLinkPath(c.source,c.target,c.style,{bezierVariation:c.bezierVariation,sourceOrientation:c.sourceOrientation,targetOrientation:c.targetOrientation,flowchartDistance:typeof c.link.distance=="number"&&!Number.isNaN(c.link.distance)?c.link.distance:0}))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var za=(()=>{class t{created=new ve;edited=new ve;interfaceDragged=new ve;static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Gg=(()=>{class t{multiLinkCalculatorHelper;interfaceLabelWidget;interfaceStatusWidget;selectionManager;ethernetLinkWidget;serialLinkWidget;linksEventSource;onContextMenu=new ve;constructor(e,n,o,r,a,c,m){this.multiLinkCalculatorHelper=e,this.interfaceLabelWidget=n,this.interfaceStatusWidget=o,this.selectionManager=r,this.ethernetLinkWidget=a,this.serialLinkWidget=c,this.linksEventSource=m}draw(e){let n=e.selectAll("g.link_body").data(c=>[c]),o=n.enter().append("g").attr("class","link_body"),r=n.merge(o).attr("transform",c=>{let m=this.multiLinkCalculatorHelper.linkTranslation(c.distance,c.source,c.target);return`translate (${m.dx}, ${m.dy})`});n.select(".capture-icon").remove(),n.filter(c=>c.capturing&&!c.suspend&&!(c.filters.bpf||c.filters.corrupt||c.filters.delay||c.filters.frequency_drop||c.filters.packet_loss)).append("g").on("contextmenu",(c,m)=>{let p=c;this.onContextMenu.emit(new _c(p,m))}).attr("class","capture-icon").attr("transform",c=>c.link_style?.link_type==="freeform"&&c.link_style?.control_offset?`translate (${c.link_style.control_offset[0]-5}, ${c.link_style.control_offset[1]-5}) scale(0.5)`:`translate (${(c.source.x+c.target.x)/2+24}, ${(c.source.y+c.target.y)/2+24}) scale(0.5)`).attr("viewBox","0 0 20 20").append("image").attr("xlink:href","assets/resources/images/inspect.svg"),n.select(".filter-capture-icon").remove(),n.filter(c=>c.capturing&&!c.suspend&&(c.filters.bpf||c.filters.corrupt||c.filters.delay||c.filters.frequency_drop||c.filters.packet_loss)).append("g").on("contextmenu",(c,m)=>{let p=c;this.onContextMenu.emit(new _c(p,m))}).attr("class","filter-capture-icon").attr("transform",c=>c.link_style?.link_type==="freeform"&&c.link_style?.control_offset?`translate (${c.link_style.control_offset[0]-5}, ${c.link_style.control_offset[1]-5}) scale(0.5)`:`translate (${(c.source.x+c.target.x)/2+24}, ${(c.source.y+c.target.y)/2+24}) scale(0.5)`).attr("viewBox","0 0 20 20").append("image").attr("xlink:href","assets/resources/images/filter-capture.svg"),n.select(".filter-icon").remove(),n.filter(c=>!c.capturing&&!c.suspend&&(c.filters.bpf||c.filters.corrupt||c.filters.delay||c.filters.frequency_drop||c.filters.packet_loss)).append("g").on("contextmenu",(c,m)=>{let p=c;this.onContextMenu.emit(new _c(p,m))}).attr("class","filter-icon").attr("width","48px").attr("height","48px").attr("transform",c=>`translate (${(c.source.x+c.target.x)/2+24}, ${(c.source.y+c.target.y)/2+24}) scale(0.5)`).attr("viewBox","0 0 20 20").append("image").attr("width","48px").attr("height","48px").attr("xlink:href","assets/resources/images/filter.svg"),n.select(".pause-icon").remove(),n.filter(c=>c.suspend).append("g").on("contextmenu",(c,m)=>{let p=c;this.onContextMenu.emit(new _c(p,m))}).attr("class","pause-icon").attr("transform",c=>`translate (${(c.source.x+c.target.x)/2+24}, ${(c.source.y+c.target.y)/2+24}) scale(0.5)`).attr("viewBox","0 0 20 20").append("image").attr("xlink:href","assets/resources/images/pause.svg"),this.serialLinkWidget.draw(r),this.ethernetLinkWidget.draw(r),r.select("path").classed("selected",c=>this.selectionManager.isSelected(c));let a=this;r.each(function(c){if(rn.normalizeLinkType(c.link_style?.link_type)!=="freeform")return;let h=dn(this).select("path");if(h.empty())return;let g=c.source.x+c.source.width/2,M=c.source.y+c.source.height/2,C=c.target.x+c.target.width/2,_=c.target.y+c.target.height/2,w=(g+C)/2,S=(M+_)/2,y={startX:0,startY:0,startOffset:[0,0]};h.attr("cursor","grab").on("mouseenter",function(){dn(this).attr("cursor","grab")}).on("mouseleave",function(){dn(this).attr("cursor","default")}).call(zl().on("start",function(k){dn(this).attr("cursor","grabbing"),y.startX=k.x,y.startY=k.y,c.link_style?.control_offset?y.startOffset=[c.link_style.control_offset[0],c.link_style.control_offset[1]]:y.startOffset=[w,S]}).on("drag",function(k,I){let E=[k.x,k.y],N=y.startX,T=y.startY,R=y.startOffset,W=E[0]-N,pe=E[1]-T,_e=R[0]+W,G=R[1]+pe,ue=[g,M],ye=[C,_],ce=rn.getContinuousOrientation(ue,ye),Ie=rn.getContinuousOrientation(ye,ue),de=rn.getFreeformBezierPath(ue,ye,ce,Ie,[_e,G]);dn(this).attr("d",de);let V=dn(this.parentNode),Y=V.select("g.capture-icon");Y.empty()||Y.attr("transform",`translate (${_e-5}, ${G-5}) scale(0.5)`);let ne=V.select("g.filter-capture-icon");ne.empty()||ne.attr("transform",`translate (${_e-5}, ${G-5}) scale(0.5)`),I.link_style||(I.link_style={}),I.link_style.control_offset=[_e,G]}).on("end",function(k){dn(this).attr("cursor","grab"),a.linksEventSource.edited.next(c)}))}),this.interfaceLabelWidget.draw(r),this.interfaceStatusWidget.draw(r)}static \u0275fac=function(n){return new(n||t)(ge(kp),ge(pd),ge(w2),ge(Yo),ge(Hg),ge(Ug),ge(za))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Lp=(()=>{class t{multiLinkCalculatorHelper;linkWidget;constructor(e,n){this.multiLinkCalculatorHelper=e,this.linkWidget=n}redrawLink(e,n){let o=this.selectLink(e,n),r=null;o.each(p=>{this.mergeDefinedFields(p,n),n.link_style&&(p.link_style=H(H({},p.link_style||{}),n.link_style)),r=p}),o.attr("map-source",p=>p.source?.id?p.source.id:"").attr("map-target",p=>p.target?.id?p.target.id:"");let a=this.selectRelatedLinks(e,r||n),c=a.empty()?o:a,m=c.data();Array.isArray(m)&&m.length>0&&this.multiLinkCalculatorHelper.assignDataToLinks(m),this.linkWidget.draw(c)}draw(e){let n=e.selectAll("g.link").data(a=>{if(a.links){let c=a.links.filter(m=>m.target&&m.source);return this.multiLinkCalculatorHelper.assignDataToLinks(c),c}return[]},a=>a.id),o=n.enter().append("g").attr("class","link").attr("link_id",a=>a.id).attr("map-source",a=>a.source.id).attr("map-target",a=>a.target.id),r=n.merge(o).attr("link_id",a=>a.id).attr("map-source",a=>a.source.id).attr("map-target",a=>a.target.id);this.linkWidget.draw(r),n.exit().remove()}selectLink(e,n){return e.selectAll(`g.link[link_id="${n.id}"]`)}selectRelatedLinks(e,n){let o=n.source?.id,r=n.target?.id;if(!o||!r)return this.selectLink(e,n);let a=`g.link[map-source="${o}"], g.link[map-target="${o}"], g.link[map-source="${r}"], g.link[map-target="${r}"]`;return e.selectAll(a)}mergeDefinedFields(e,n){!e||!n||Object.keys(n).forEach(o=>{let r=n[o];r!==void 0&&o!=="link_style"&&(e[o]=r)})}static \u0275fac=function(n){return new(n||t)(ge(kp),ge(Gg))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var M2=class{datum;x;y;width;height};var k2=class{convert(i){let e=new wa,n=i.attributes.getNamedItem("stroke");n&&(e.stroke=n.value);let o=i.attributes.getNamedItem("stroke-width");o&&(e.stroke_width=parseInt(o.value,10));let r=i.attributes.getNamedItem("stroke-dasharray");r&&(e.stroke_dasharray=r.value);let a=i.attributes.getNamedItem("data-curve-type");a?e.curve_type=a.value:e.curve_type="catmullrom";let c=i.attributes.getNamedItem("data-arrow-start");c&&(e.arrow_start=c.value==="true");let m=i.attributes.getNamedItem("data-arrow-end");m&&(e.arrow_end=m.value==="true");let p=i.attributes.getNamedItem("d");return p&&(e.points=this.parsePathData(p.value)),e}parsePathData(i){let e=[],n=i.match(/[MLQCZ][^MLQCZ]*/gi);if(!n)return e;for(let o of n){let r=o[0].toUpperCase(),a=o.slice(1).trim().split(/[\s,]+/).map(Number);if(r==="M"||r==="L")for(let c=0;c<a.length;c+=2)!isNaN(a[c])&&!isNaN(a[c+1])&&e.push({x:a[c],y:a[c+1]});else if(r==="Q")for(let c=0;c<a.length;c+=4)!isNaN(a[c])&&isNaN(a[c+1]),!isNaN(a[c+2])&&!isNaN(a[c+3])&&e.push({x:a[c+2],y:a[c+3]});else if(r==="C")for(let c=0;c<a.length;c+=6)!isNaN(a[c+4])&&!isNaN(a[c+5])&&e.push({x:a[c+4],y:a[c+5]})}return e}};var Gi=class{height;width;cx;cy;fill;fill_opacity;rx;ry;stroke;stroke_width;stroke_dasharray};var T2=class{convert(i){let e=new Gi,n=i.attributes.getNamedItem("fill");n&&(e.fill=n.value);let o=i.attributes.getNamedItem("fill-opacity");n&&(e.fill_opacity=parseFloat(o.value));let r=i.attributes.getNamedItem("stroke");r&&(e.stroke=r.value);let a=i.attributes.getNamedItem("stroke-width");r&&(e.stroke_width=parseInt(a.value,10));let c=i.attributes.getNamedItem("stroke-dasharray");c&&(e.stroke_dasharray=c.value);let m=i.attributes.getNamedItem("cx");m&&(e.cx=parseInt(m.value,10));let p=i.attributes.getNamedItem("cy");p&&(e.cy=parseInt(p.value,10));let h=i.attributes.getNamedItem("rx");h&&(e.rx=parseInt(h.value,10));let g=i.attributes.getNamedItem("ry");return g&&(e.ry=parseInt(g.value,10)),e}};var Bp=class{height;width;data};var E2=class{convert(i){let e=new Bp,n=i.attributes.getNamedItem("xlink:href");n&&(e.data=n.value);let o=i.attributes.getNamedItem("width");o&&(e.width=parseInt(o.value,10));let r=i.attributes.getNamedItem("height");return r&&(e.height=parseInt(r.value,10)),e}};var Js=class{height;width;stroke;stroke_width;stroke_dasharray;x1;x2;y1;y2};var D2=class{convert(i){let e=new Js,n=i.attributes.getNamedItem("stroke");n&&(e.stroke=n.value);let o=i.attributes.getNamedItem("stroke-width");n&&(e.stroke_width=parseInt(o.value,10));let r=i.attributes.getNamedItem("stroke-dasharray");r&&(e.stroke_dasharray=r.value);let a=i.attributes.getNamedItem("x1");a&&(e.x1=parseInt(a.value,10));let c=i.attributes.getNamedItem("x2");c&&(e.x2=parseInt(c.value,10));let m=i.attributes.getNamedItem("y1");m&&(e.y1=parseInt(m.value,10));let p=i.attributes.getNamedItem("y2");return p&&(e.y2=parseInt(p.value,10)),e}};var da=class{height;width;fill;fill_opacity;stroke;stroke_width;stroke_dasharray;rx;ry};var P2=class{convert(i){let e=new da,n=i.attributes.getNamedItem("fill");n&&(e.fill=n.value);let o=i.attributes.getNamedItem("fill-opacity");n&&(e.fill_opacity=parseFloat(o.value));let r=i.attributes.getNamedItem("stroke");r&&(e.stroke=r.value);let a=i.attributes.getNamedItem("stroke-width");r&&(e.stroke_width=parseInt(a.value,10));let c=i.attributes.getNamedItem("stroke-dasharray");c&&(e.stroke_dasharray=c.value);let m=i.attributes.getNamedItem("width");m&&(e.width=parseInt(m.value,10));let p=i.attributes.getNamedItem("height");p&&(e.height=parseInt(p.value,10));let h=i.attributes.getNamedItem("rx");h&&(e.rx=parseInt(h.value,0));let g=i.attributes.getNamedItem("ry");return g&&(e.ry=parseInt(g.value,0)),e}};var Es=class{height;width;text;fill;fill_opacity;font_family;font_size;font_weight;text_decoration};var I2=class{convert(i){let e=new Es;e.text=i.textContent;let n=i.attributes.getNamedItem("fill");n&&(e.fill=n.value);let o=i.attributes.getNamedItem("fill-opacity");o&&(e.fill_opacity=parseFloat(o.value));let r=i.attributes.getNamedItem("font-family");r&&(e.font_family=r.value);let a=i.attributes.getNamedItem("font-size");a&&(e.font_size=+a.value);let c=i.attributes.getNamedItem("font-weight");c&&(e.font_weight=c.value);let m=i.attributes.getNamedItem("text-decoration");return m&&(e.text_decoration=m.value),e}};var Vp=(()=>{class t{parser;elementParsers;constructor(){this.parser=new DOMParser,this.elementParsers={text:new I2,image:new E2,rect:new P2,line:new D2,ellipse:new T2,path:new k2}}supportedTags(){return Object.keys(this.elementParsers)}convert(e){let o=this.parser.parseFromString(e,"text/xml").getElementsByTagName("svg");if(o.length!==1)throw new Error(`Cannot locate svg element root in '${e}'`);let r=o[0],a=null,c=null;for(let p in r.children){c=r.children[p];let h=c.nodeName;if(h in this.elementParsers){a=this.elementParsers[h];break}}if(a===null)throw new Error(`Cannot find parser for '${e}'`);let m=a.convert(c);return m.width=+r.getAttribute("width"),m.height=+r.getAttribute("height"),m}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var A2=(()=>{class t{fontFixer;static MARGIN=4;constructor(e){this.fontFixer=e}draw(e){let n=e.selectAll("text.text_element").data(p=>p.element&&p.element instanceof Es?[p.element]:[]),o=n.enter().append("text").attr("class","text_element noselect"),r=n.merge(o);r.attr("style",p=>{let h=this.fontFixer.fix(p),g=[];return h.font_family&&g.push(`font-family: "${p.font_family}"`),h.font_size&&g.push(`font-size: ${p.font_size}pt`),h.font_weight&&g.push(`font-weight: ${p.font_weight}`),g.join("; ")}).attr("dominant-baseline","text-before-edge").attr("fill",p=>p.fill).attr("text-decoration",p=>p.text_decoration);let a=r.selectAll("tspan").data(p=>p.text.split(/\r?\n/)),c=a.enter().append("tspan");a.merge(c).text(p=>p).attr("xml:space","preserve").attr("x",0).attr("dy",(p,h)=>h===0?"0em":"1.4em"),a.exit().remove(),r.attr("transform",function(p){let h=this.getBBox(),g=Number(p.height),M=g>0?h.height/g:0;return`translate(0, ${isFinite(g)&&M>.5?g/2-(h.y+h.height/2):0})`}),n.exit().remove()}static \u0275fac=function(n){return new(n||t)(ge(ca))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var O2=(()=>{class t{draw(e){let n=e.selectAll("image.image_element").data(a=>a.element&&a.element instanceof Bp?[a.element]:[]),o=n.enter().append("image").attr("class","image_element noselect");n.merge(o).attr("xlink:href",a=>a.data).attr("width",a=>a.width).attr("height",a=>a.height),n.exit().remove()}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var ud=(()=>{class t{static MAPPING={"25, 25":"10, 2","5, 25":"4, 2","5, 25, 25":"12, 3, 5, 3","25, 25, 5, 25, 5":"12, 3, 5, 3, 5, 3"};fix(e){if(e||e=="")return e in t.MAPPING?t.MAPPING[e]:e}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var N2=(()=>{class t{qtDasharrayFixer;constructor(e){this.qtDasharrayFixer=e}draw(e){let n=e.selectAll("rect.rect_element").data(a=>a.element&&a.element instanceof da?[a.element]:[]);n.enter().append("line").attr("class","top"),n.enter().append("line").attr("class","bottom"),n.enter().append("line").attr("class","right"),n.enter().append("line").attr("class","left");let o=n.enter().append("rect").attr("class","rect_element noselect");n.merge(o).attr("fill",a=>a.fill).attr("fill-opacity",a=>a.fill_opacity).attr("stroke",a=>a.stroke).attr("stroke-width",a=>a.stroke_width).attr("stroke-dasharray",a=>this.qtDasharrayFixer.fix(a.stroke_dasharray)).attr("width",a=>a.width).attr("height",a=>a.height).attr("rx",a=>a.rx).attr("ry",a=>a.ry),n.exit().remove()}static \u0275fac=function(n){return new(n||t)(ge(ud))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var R2=(()=>{class t{qtDasharrayFixer;constructor(e){this.qtDasharrayFixer=e}getCurveInterpolator(e){switch(e){case"basis":return Yb;case"catmullrom":return hh;case"monotone":return Kb;case"none":return null;default:return hh}}draw(e){this.drawLineElements(e),this.drawCurveElements(e)}drawLineElements(e){let n=e.selectAll("line.line_element").data(a=>a.element&&a.element instanceof Js?[a.element]:[]);n.enter().append("circle").attr("class","right"),n.enter().append("circle").attr("class","left");let o=n.enter().append("line").attr("class","line_element noselect");n.merge(o).attr("stroke",a=>a.stroke).attr("stroke-width",a=>a.stroke_width).attr("stroke-dasharray",a=>this.qtDasharrayFixer.fix(a.stroke_dasharray)).attr("x1",a=>a.x1).attr("x2",a=>a.x2).attr("y1",a=>a.y1).attr("y2",a=>a.y2).attr("cursor","pointer"),n.exit().remove()}drawCurveElements(e){let n=this,o=e.select("defs");o.empty()&&(o=e.append("defs"));let r=e.selectAll("path.curve_element").data(p=>p.element&&p.element instanceof wa?[p]:[]);r.exit().remove();let a=r.enter().append("path").attr("class","curve_element noselect");r.merge(a).each(function(p){let h=p.element;if(h.points&&h.points.length>0){let g=h.points.map(w=>[w.x,w.y]),M=n.getCurveInterpolator(h.curve_type||"catmullrom"),C="";if(M===null){C=`M ${g[0][0]} ${g[0][1]}`;for(let w=1;w<g.length;w++)C+=` L ${g[w][0]} ${g[w][1]}`}else C=uh().curve(M)(g)||"";h.arrow_end&&n.createOrUpdateArrowMarker(o,p.id,"end",h.stroke,h.stroke_width),h.arrow_start&&n.createOrUpdateArrowMarker(o,p.id,"start",h.stroke,h.stroke_width);let _=h.stroke;dn(this).attr("d",C).attr("stroke",h.stroke).attr("stroke-width",h.stroke_width).attr("stroke-dasharray",n.qtDasharrayFixer.fix(h.stroke_dasharray)).attr("fill","none").attr("cursor","pointer").attr("marker-end",h.arrow_end?"url(#arrow-end-"+p.id+")":null).attr("marker-start",h.arrow_start?"url(#arrow-start-"+p.id+")":null).on("mouseenter",function(){let w=getComputedStyle(document.documentElement).getPropertyValue("--mat-sys-error").trim();dn(this).attr("stroke",w),h.arrow_end&&o.select(`#arrow-end-${p.id} path`).attr("fill",w),h.arrow_start&&o.select(`#arrow-start-${p.id} path`).attr("fill",w)}).on("mouseleave",function(){dn(this).attr("stroke",_),h.arrow_end&&o.select(`#arrow-end-${p.id} path`).attr("fill",_),h.arrow_start&&o.select(`#arrow-start-${p.id} path`).attr("fill",_)})}});let m=new Set(e.selectAll("path.curve_element").data().map(p=>p.id));o.selectAll('marker[id^="arrow-"]').each(function(){let p=dn(this).attr("id");if(!p)return;let h=p.replace(/^arrow-(start|end)-/,"");m.has(h)||dn(this).remove()})}createOrUpdateArrowMarker(e,n,o,r,a){let c=`arrow-${o}-${n}`,m=e.select(`marker#${c}`);m.empty()?(m=e.append("marker").attr("id",c).attr("markerWidth","4").attr("markerHeight","4").attr("refX",o==="end"?"0":"4").attr("refY","2").attr("orient","auto").attr("markerUnits","strokeWidth"),m.append("path").attr("d",o==="end"?"M0,0 L4,2 L0,4 z":"M4,0 L0,2 L4,4 z").attr("fill",r)):m.select("path").attr("fill",r)}static \u0275fac=function(n){return new(n||t)(ge(ud))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var F2=(()=>{class t{qtDasharrayFixer;constructor(e){this.qtDasharrayFixer=e}draw(e){let n=e.selectAll("ellipse.ellipse_element").data(a=>a.element&&a.element instanceof Gi?[a.element]:[]);n.enter().append("line").attr("class","top"),n.enter().append("line").attr("class","bottom"),n.enter().append("line").attr("class","right"),n.enter().append("line").attr("class","left");let o=n.enter().append("ellipse").attr("class","ellipse_element noselect");n.merge(o).attr("fill",a=>a.fill).attr("fill-opacity",a=>a.fill_opacity).attr("stroke",a=>a.stroke).attr("stroke-width",a=>a.stroke_width).attr("stroke-dasharray",a=>this.qtDasharrayFixer.fix(a.stroke_dasharray)).attr("cx",a=>a.cx).attr("cy",a=>a.cy).attr("rx",a=>a.rx).attr("ry",a=>a.ry),n.exit().remove()}static \u0275fac=function(n){return new(n||t)(ge(ud))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var L2=(()=>{class t{textDrawingWidget;imageDrawingWidget;rectDrawingWidget;lineDrawingWidget;ellipseDrawingWidget;selectionManager;mapSettingsService;drawingWidgets=[];constructor(e,n,o,r,a,c,m){this.textDrawingWidget=e,this.imageDrawingWidget=n,this.rectDrawingWidget=o,this.lineDrawingWidget=r,this.ellipseDrawingWidget=a,this.selectionManager=c,this.mapSettingsService=m,this.drawingWidgets=[this.textDrawingWidget,this.imageDrawingWidget,this.rectDrawingWidget,this.lineDrawingWidget,this.ellipseDrawingWidget]}draw(e){let n=e.selectAll("g.drawing_body").data(a=>[a]),o=n.enter().append("g").attr("class","drawing_body"),r=n.merge(o).attr("transform",a=>`translate(${a.x},${a.y}) rotate(${a.rotation})`);this.drawingWidgets.forEach(a=>{a.draw(r)}),r.select(".layer_label_wrapper").remove(),this.mapSettingsService.isLayerNumberVisible&&r.filter(a=>a.element instanceof da||a.element instanceof Gi).append("rect").attr("class","layer_label_wrapper").attr("width","26").attr("height","26").attr("x",a=>a.element?a.element.width/2-13:0).attr("y",a=>a.element?a.element.height/2-13:0).attr("fill","red"),r.select(".layer_label").remove(),this.mapSettingsService.isLayerNumberVisible&&r.filter(a=>a.element instanceof da||a.element instanceof Gi).append("text").attr("class","layer_label").text(a=>a.z).attr("x",function(a){return a.z>=100?a.element?a.element.width/2-13:0:a.z>=10?a.element?a.element.width/2-9:0:a.element.width/2-5}).attr("y",a=>a.element?a.element.height/2+5:0).attr("style",()=>{let a=[];return a.push('font-family: "Noto Sans"'),a.push("font-size: 11pt"),a.push("font-weight: bold"),a.join("; ")}).attr("fill","#ffffff"),r.select("line.top").attr("stroke","transparent").attr("stroke-width","8px").attr("x1",a=>a.element instanceof Gi?a.element.cx-a.element.width/10:"0").attr("x2",a=>a.element instanceof Gi?a.element.cx+a.element.width/10:a.element.width).attr("y1","0").attr("y2","0").attr("draggable","true").attr("cursor","ns-resize"),r.select("line.bottom").attr("stroke","transparent").attr("stroke-width","8px").attr("x1",a=>a.element instanceof Gi?a.element.cx-a.element.width/10:"0").attr("x2",a=>a.element instanceof Gi?a.element.cx+a.element.width/10:a.element.width).attr("y1",a=>a.element.height).attr("y2",a=>a.element.height).attr("draggable","true").attr("cursor","ns-resize"),r.select("line.right").attr("stroke","transparent").attr("stroke-width","8px").attr("x1","0").attr("x2","0").attr("y1",a=>a.element instanceof Gi?a.element.cy-a.element.height/10:"0").attr("y2",a=>a.element instanceof Gi?a.element.cy+a.element.height/10:a.element.height).attr("draggable","true").attr("cursor","ew-resize"),r.select("line.left").attr("stroke","transparent").attr("stroke-width","8px").attr("x1",a=>a.element.width).attr("x2",a=>a.element.width).attr("y1",a=>a.element instanceof Gi?a.element.cy-a.element.height/10:"0").attr("y2",a=>a.element instanceof Gi?a.element.cy+a.element.height/10:a.element.height).attr("draggable","true").attr("cursor","ew-resize"),r.select("circle.left").attr("draggable","true").attr("fill","transparent").attr("stroke","transparent").attr("cx",a=>a.element.x1).attr("cy",a=>a.element.y1).attr("r",10).attr("cursor","move"),r.select("circle.right").attr("draggable","true").attr("fill","transparent").attr("stroke","transparent").attr("cx",a=>a.element.x2).attr("cy",a=>a.element.y2).attr("r",10).attr("cursor","move"),r.classed("drawing_selected",a=>this.selectionManager.isSelected(a))}static \u0275fac=function(n){return new(n||t)(ge(A2),ge(O2),ge(N2),ge(R2),ge(F2),ge(Yo),ge(To))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var hd=(()=>{class t{drawingWidget;svgToDrawingConverter;context;mapSettings;draggable=new md;draggingEnabled=!1;resizingFinished=new ve;onContextMenu=new ve;constructor(e,n,o,r){this.drawingWidget=e,this.svgToDrawingConverter=n,this.context=o,this.mapSettings=r,this.svgToDrawingConverter=new Vp}redrawDrawing(e,n){this.drawingWidget.draw(this.selectDrawing(e,n))}draw(e){let n=e.selectAll("g.drawing").data(T=>(T.drawings.forEach(R=>{try{R.element=this.svgToDrawingConverter.convert(R.svg)}catch{}}),T.drawings),T=>T.id),o=n.enter().append("g").attr("class","drawing").attr("drawing_id",T=>T.id).on("contextmenu",(T,R)=>{T.preventDefault(),this.onContextMenu.emit(new C2(T,R))}),r=n.merge(o);this.drawingWidget.draw(r),n.exit().remove(),this.mapSettings.isReadOnly||this.draggable.call(r);let a,c,m,p,h=!1,g=zl().on("start",(T,R)=>{document.body.style.cursor="ns-resize",m=R.y}).on("drag",(T,R)=>{let W=T;h?(c=a-(W.sourceEvent.pageY-(this.context.getZeroZeroTransformationPoint().y+this.context.transformation.y)),a=W.sourceEvent.pageY-(this.context.getZeroZeroTransformationPoint().y+this.context.transformation.y),R.element.height+c<0?(h=!1,a=m,R.element.height=Math.abs(R.element.height+W.dy)):(R.y=W.sourceEvent.pageY-(this.context.getZeroZeroTransformationPoint().y+this.context.transformation.y),R.element.height+=c,R.element instanceof Gi&&(R.element.cy=R.element.cy+c/2<0?1:R.element.cy+=c/2,R.element.ry=R.element.ry+c/2<0?1:R.element.ry+=c/2))):R.element.height+W.dy<0?(h=!0,a=m,R.element.height=Math.abs(R.element.height+W.dy)):(R.element.height+=W.dy,R.element instanceof Gi&&(R.element.cy=R.element.cy+W.dy/2<0?1:R.element.cy+=W.dy/2,R.element.ry=R.element.ry+W.dy/2<0?1:R.element.ry+=W.dy/2)),this.redrawDrawing(e,R)}).on("end",(T,R)=>{document.body.style.cursor="initial",this.resizingFinished.emit(this.createResizingEvent(R))}),M=zl().on("start",(T,R)=>{a=T.sourceEvent.pageY-(this.context.getZeroZeroTransformationPoint().y+this.context.transformation.y),p=a+R.element.height,document.body.style.cursor="ns-resize"}).on("drag",(T,R)=>{let W=T;h?R.element.height+W.dy<0?(h=!1,a=p,R.element.height=Math.abs(R.element.height+W.dy)):(R.element.height+=W.dy,R.element instanceof Gi&&(R.element.cy=R.element.cy+W.dy/2<0?1:R.element.cy+=W.dy/2,R.element.ry=R.element.ry+W.dy/2<0?1:R.element.ry+=W.dy/2)):(c=a-(W.sourceEvent.pageY-(this.context.getZeroZeroTransformationPoint().y+this.context.transformation.y)),a=W.sourceEvent.pageY-(this.context.getZeroZeroTransformationPoint().y+this.context.transformation.y),R.element.height+c<0?(a=p,h=!0,R.element.height=Math.abs(R.element.height+W.dy)):(R.y=W.sourceEvent.pageY-(this.context.getZeroZeroTransformationPoint().y+this.context.transformation.y),R.element.height+=c,R.element instanceof Gi&&(R.element.cy=R.element.cy+c/2<0?1:R.element.cy+=c/2,R.element.ry=R.element.ry+c/2<0?1:R.element.ry+=c/2))),this.redrawDrawing(e,R)}).on("end",(T,R)=>{document.body.style.cursor="initial",this.resizingFinished.emit(this.createResizingEvent(R))}),C,_,w,S,y=!1,k=zl().on("start",(T,R)=>{C=T.sourceEvent.pageX-(this.context.getZeroZeroTransformationPoint().x+this.context.transformation.x),S=C+R.element.width,document.body.style.cursor="ew-resize"}).on("drag",(T,R)=>{let W=T;y?R.element.width+W.dx<0?(C=S,y=!1,R.element.width=Math.abs(R.element.width+W.dx)):(R.element instanceof Gi&&(R.element.cx=R.element.cx+W.dx/2<0?1:R.element.cx+=W.dx/2,R.element.rx=R.element.rx+W.dx/2<0?1:R.element.rx+=W.dx/2),R.element.width=R.element.width+W.dx<0?1:R.element.width+=W.dx):(_=C-(W.sourceEvent.pageX-(this.context.getZeroZeroTransformationPoint().x+this.context.transformation.x)),C=W.sourceEvent.pageX-(this.context.getZeroZeroTransformationPoint().x+this.context.transformation.x),R.element.width+_<0?(C=S,y=!0,R.element.width=Math.abs(R.element.width+W.dx)):(R.x=W.sourceEvent.pageX-(this.context.getZeroZeroTransformationPoint().x+this.context.transformation.x),R.element.width+=_,R.element instanceof Gi&&(R.element.cx=R.element.cx+_/2<0?1:R.element.cx+=_/2,R.element.rx=R.element.rx+_/2<0?1:R.element.rx+=_/2))),this.redrawDrawing(e,R)}).on("end",(T,R)=>{document.body.style.cursor="initial",this.resizingFinished.emit(this.createResizingEvent(R))}),I=zl().on("start",(T,R)=>{document.body.style.cursor="ew-resize",w=R.x}).on("drag",(T,R)=>{let W=T;y?(_=C-(W.sourceEvent.pageX-(this.context.getZeroZeroTransformationPoint().x+this.context.transformation.x)),C=W.sourceEvent.pageX-(this.context.getZeroZeroTransformationPoint().x+this.context.transformation.x),R.element.width+_<0?(C=w,y=!1,R.element.width=Math.abs(R.element.width+W.dx)):(R.x=W.sourceEvent.pageX-(this.context.getZeroZeroTransformationPoint().x+this.context.transformation.x),R.element.width+=_,R.element instanceof Gi&&(R.element.cx=R.element.cx+_/2<0?1:R.element.cx+=_/2,R.element.rx=R.element.rx+_/2<0?1:R.element.rx+=_/2))):R.element.width+W.dx<0?(C=w,y=!0,R.element.width=Math.abs(R.element.width+W.dx)):(R.element instanceof Gi&&(R.element.cx=R.element.cx+W.dx/2<0?1:R.element.cx+=W.dx/2,R.element.rx=R.element.rx+W.dx/2<0?1:R.element.rx+=W.dx/2),R.element.width=R.element.width+W.dx<0?1:R.element.width+=W.dx),this.redrawDrawing(e,R)}).on("end",(T,R)=>{document.body.style.cursor="initial",this.resizingFinished.emit(this.createResizingEvent(R))}),E=zl().on("start",()=>{document.body.style.cursor="move"}).on("drag",(T,R)=>{let W=T;R.element.width+=W.dx,R.element.height+=W.dy,R.element.x2+=W.dx,R.element.y2+=W.dy,this.redrawDrawing(e,R)}).on("end",(T,R)=>{document.body.style.cursor="initial",this.resizingFinished.emit(this.createResizingEvent(R))}),N=zl().on("start",()=>{document.body.style.cursor="move"}).on("drag",(T,R)=>{let W=T;R.element.width+=W.dx,R.element.height+=W.dy,R.element.x1+=W.dx,R.element.y1+=W.dy,this.redrawDrawing(e,R)}).on("end",(T,R)=>{document.body.style.cursor="initial",this.resizingFinished.emit(this.createResizingEvent(R))});r.select("line.bottom").call(g),r.select("line.top").call(M),r.select("line.right").call(k),r.select("line.left").call(I),r.select("circle.right").call(E),r.select("circle.left").call(N)}createResizingEvent(e){let n=new M2;return n.x=e.x,n.y=e.y,n.width=e.element.width,n.height=e.element.height,n.datum=e,n}selectDrawing(e,n){return e.selectAll(`g.drawing[drawing_id="${n.id}"]`)}static \u0275fac=function(n){return new(n||t)(ge(L2),ge(Vp),ge(jo),ge(Vl))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var B2=(()=>{class t{linksWidget;nodesWidget;drawingsWidget;constructor(e,n,o){this.linksWidget=e,this.nodesWidget=n,this.drawingsWidget=o}draw(e,n){let o=e.selectAll("g.layer").data(n,h=>h.index.toString()),r=o.enter().append("g").attr("class","layer");r.append("g").attr("class","links"),r.append("g").attr("class","nodes"),r.append("g").attr("class","drawings");let a=o.merge(r);a.attr("data-index",h=>h.index);let c=a.select("g.links"),m=a.select("g.nodes"),p=a.select("g.drawings");o.exit().remove(),this.linksWidget.draw(c),this.nodesWidget.draw(m),this.drawingsWidget.draw(p)}static \u0275fac=function(n){return new(n||t)(ge(Lp),ge(Fp),ge(hd))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var V2=(()=>{class t{nodesWidget;drawingLineTool;selectionTool;movingTool;layersWidget;layersManager;selectionManager;constructor(e,n,o,r,a,c,m){this.nodesWidget=e,this.drawingLineTool=n,this.selectionTool=o,this.movingTool=r,this.layersWidget=a,this.layersManager=c,this.selectionManager=m}getNodesWidget(){return this.nodesWidget}getDrawingLineTool(){return this.drawingLineTool}getSelectionTool(){return this.selectionTool}connect(e,n){this.drawingLineTool.connect(e,n)}draw(e,n){e.attr("width",n.size.width).attr("height",n.size.height);let o=e.selectAll("g.canvas").data([n]),r=o.enter().append("g").attr("class","canvas");o.merge(r).attr("transform",a=>{let c=a.getZeroZeroTransformationPoint().x+a.transformation.x,m=a.getZeroZeroTransformationPoint().y+a.transformation.y,p=a.transformation.k;return`translate(${c}, ${m}) scale(${p})`}),this.layersWidget.draw(o,this.layersManager.getLayersList()),this.drawingLineTool.draw(e,n),this.selectionTool.draw(e,n),this.movingTool.draw(e,n)}updateSelectionHighlights(e){let n=e.select("g.canvas"),o=e.select("defs");n.selectAll("g.node_body").classed("selected",c=>this.selectionManager.isSelected(c)),n.selectAll("g.link_body").classed("selected",c=>this.selectionManager.isSelected(c));let r=n.selectAll("g.drawing_body");r.classed("drawing_selected",c=>this.selectionManager.isSelected(c));let a=getComputedStyle(document.documentElement).getPropertyValue("--mat-sys-error").trim();r.each(function(c,m,p){let h=p[m],g=c.element&&this.selectionManager.isSelected(c);if(dn(h).selectAll("path.curve_element").classed("selected",()=>this.selectionManager.isSelected(c)),c.element instanceof wa){let C=c.element,_=C.stroke||getComputedStyle(document.documentElement).getPropertyValue("--gns3-canvas-link-color").trim(),w=this.selectionManager.isSelected(c);if(C.arrow_end){let S=o.select(`#arrow-end-${c.id} path`);S.empty()||S.attr("fill",w?a:_)}if(C.arrow_start){let S=o.select(`#arrow-start-${c.id} path`);S.empty()||S.attr("fill",w?a:_)}}}.bind(this))}disconnect(e){e.empty&&!e.empty()&&e.selectAll("*").remove()}static \u0275fac=function(n){return new(n||t)(ge(Fp),ge(jg),ge(Op),ge(Lg),ge(B2),ge(Ig),ge(Yo))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var to=(()=>{class t{httpController;constructor(e){this.httpController=e}createLink(e,n,o,r,a,c,m,p,h){return this.httpController.post(e,`/projects/${n.project_id}/links`,{nodes:[{node_id:n.node_id,port_number:o.port_number,adapter_number:o.adapter_number,label:{rotation:0,style:"font-size: 10; font-style: Verdana",text:o.short_name,x:c,y:m}},{node_id:r.node_id,port_number:a.port_number,adapter_number:a.adapter_number,label:{rotation:0,style:"font-size: 10; font-style: Verdana",text:a.short_name,x:p,y:h}}]})}getLink(e,n,o){return this.httpController.get(e,`/projects/${n}/links/${o}`)}deleteLink(e,n){return this.httpController.delete(e,`/projects/${n.project_id}/links/${n.link_id}`)}updateLink(e,n){let o={};return n.nodes!==void 0&&(o.nodes=n.nodes),n.filters!==void 0&&(o.filters=n.filters),n.suspend!==void 0&&(o.suspend=n.suspend),this.httpController.put(e,`/projects/${n.project_id}/links/${n.link_id}`,o)}updateLinkStyle(e,n){return this.httpController.put(e,`/projects/${n.project_id}/links/${n.link_id}`,{link_style:n.link_style})}getAvailableFilters(e,n){return this.httpController.get(e,`/projects/${n.project_id}/links/${n.link_id}/available_filters`)}updateNodes(e,n,o){let r=o.map(a=>({node_id:a.node_id,port_number:a.port_number,adapter_number:a.adapter_number,label:{rotation:a.label.rotation,style:a.label.style,text:a.label.text,x:a.label.x,y:a.label.y}}));return this.httpController.put(e,`/projects/${n.project_id}/links/${n.link_id}`,{nodes:r})}startCaptureOnLink(e,n,o){return this.httpController.post(e,`/projects/${n.project_id}/links/${n.link_id}/capture/start`,o)}stopCaptureOnLink(e,n){return this.httpController.post(e,`/projects/${n.project_id}/links/${n.link_id}/capture/stop`,{})}restartWiresharkCapture(e,n){return this.httpController.post(e,`/projects/${n.project_id}/links/${n.link_id}/capture/wireshark/restart`,{})}resetLink(e,n){return this.httpController.post(e,`/projects/${n.project_id}/links/${n.link_id}/reset`,{})}streamPcap(e,n){return this.httpController.get(e,`/projects/${n.project_id}/links/${n.link_id}/capture/stream`)}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Ko=(()=>{class t{dragged=new ve;resized=new ve;selected=new ve;pointToAddSelected=new ve;saved=new ve;drawingCompleted=new ve;textAdded=new ve;textEdited=new ve;textSaved=new ve;static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var C1e=["temporaryTextElement"],uH=(()=>{class t{temporaryTextElement=Ut("temporaryTextElement");svg=oe(void 0);controller=oe(void 0);leftPosition=me("0px");topPosition=me("0px");innerText=me("");editingDrawingId;editedElement;editedLink;editedNode;mapListener;textListener;textAddingSubscription;addingFinished=new ve;drawingsEventSource=f(Ko);toolsService=f(Al);context=f(jo);renderer=f(ii);mapScaleService=f(od);linkService=f(to);linksDataSource=f(dr);nodesDataSource=f(ci);selectionManager=f(Yo);fontFixer=f(ca);ngOnInit(){this.textAddingSubscription=this.toolsService.isTextAddingToolActivated.subscribe(e=>{e?this.activateTextAdding():this.deactivateTextAdding()}),this.activateTextEditingForDrawings(),this.activateTextEditingForNodeLabels()}activateTextAdding(){let e=n=>{let o=this.context.getZeroZeroTransformationPoint().x,r=this.context.getZeroZeroTransformationPoint().y,a=this.context.transformation.x,c=this.context.transformation.y,m=this.context.transformation.k,p=(n.pageX-(o+a))/m,h=(n.pageY-(r+c))/m,g=p*m+o+a,M=h*m+r+c;this.leftPosition.set(g.toString()+"px"),this.topPosition.set(M.toString()+"px");let C=this.temporaryTextElement();this.renderer.setStyle(C.nativeElement,"display","initial"),this.renderer.setStyle(C.nativeElement,"transform",`scale(${this.mapScaleService.getScale()})`),C.nativeElement.focus(),document.documentElement.style.cursor="default";let _=()=>{let w=this.temporaryTextElement();this.drawingsEventSource.textAdded.emit(new v2(w.nativeElement.innerText.replace(/\n$/,""),p,h)),this.deactivateTextAdding(),this.innerText.set(""),w.nativeElement.innerText="",w.nativeElement.removeEventListener("focusout",this.textListener),this.renderer.setStyle(w.nativeElement,"display","none")};this.textListener=_,C.nativeElement.addEventListener("focusout",this.textListener)};this.deactivateTextAdding(),this.mapListener=e,this.svg().addEventListener("click",this.mapListener)}deactivateTextAdding(){this.svg().removeEventListener("click",this.mapListener)}activateTextEditingForNodeLabels(){let e=this,n=dn(this.svg());n.selectAll("g.interface_label_container").select("text.interface_label").on("dblclick",function(o,r){e.selectionManager.setSelected([]);let a=e.temporaryTextElement();e.renderer.setStyle(a.nativeElement,"display","initial"),e.renderer.setStyle(a.nativeElement,"transform",`scale(${e.mapScaleService.getScale()})`),e.editedLink=r,dn(o.currentTarget).attr("visibility","hidden"),dn(o.currentTarget).classed("editingMode",!0),e.editedNode=e.nodesDataSource.get(r.nodeId),e.editedLink=r;let c=(r.label.originalX+e.editedNode.x-1)*e.context.transformation.k+e.context.getZeroZeroTransformationPoint().x+e.context.transformation.x,m=(r.label.originalY+e.editedNode.y+4)*e.context.transformation.k+e.context.getZeroZeroTransformationPoint().y+e.context.transformation.y;e.leftPosition.set(c.toString()+"px"),e.topPosition.set(m.toString()+"px"),a.nativeElement.innerText=r.label.text;let p=[];for(let M of r.label.style.split(";"))p.push({property:M.split(": ")[0],value:M.split(": ")[1]});let h={font_family:p.find(M=>M.property==="font-family")?p.find(M=>M.property==="font-family").value:"TypeWriter",font_size:p.find(M=>M.property==="font-size")?Number(p.find(M=>M.property==="font-size").value):10,font_weight:p.find(M=>M.property==="font-weight")?p.find(M=>M.property==="font-weight").value:"normal"};h=e.fontFixer.fix(h),e.renderer.setStyle(a.nativeElement,"color",p.find(M=>M.property==="fill")?p.find(M=>M.property==="fill").value:"#000000"),e.renderer.setStyle(a.nativeElement,"font-family",h.font_family),e.renderer.setStyle(a.nativeElement,"font-size",`${h.font_size}pt`),e.renderer.setStyle(a.nativeElement,"font-weight",h.font_weight);let g=()=>{let M=e.temporaryTextElement().nativeElement.innerText,C=e.linksDataSource.get(e.editedLink.linkId);C.nodes.find(_=>_.node_id===e.editedNode.node_id).label.text=M,e.linkService.updateLink(e.controller(),C).subscribe(_=>{n.selectAll("text.editingMode").attr("visibility","visible").classed("editingMode",!1),e.innerText.set(""),a.nativeElement.innerText="",a.nativeElement.removeEventListener("focusout",e.textListener),e.clearStyle(),e.renderer.setStyle(a.nativeElement,"display","none")})};e.textListener=g,a.nativeElement.addEventListener("focusout",e.textListener),a.nativeElement.focus()})}activateTextEditingForDrawings(){let e=this,n=dn(this.svg());n.selectAll("text.text_element").on("dblclick",function(o,r){let a=e.temporaryTextElement();e.renderer.setStyle(a.nativeElement,"display","initial"),e.renderer.setStyle(a.nativeElement,"transform",`scale(${e.mapScaleService.getScale()})`),e.editedElement=r;let c=o.currentTarget;dn(c).attr("visibility","hidden"),dn(c).classed("editingMode",!0),e.editingDrawingId=c.parentElement.parentElement.getAttribute("drawing_id");var m=c.parentElement.getAttribute("transform").split(/\(|\)/),p=Number(m[1].split(/,/)[0])*e.context.transformation.k+e.context.getZeroZeroTransformationPoint().x+e.context.transformation.x,h=c.getAttribute("transform"),g=0;if(h){var M=h.match(/translate\(0,\s*([^)]+)\)/);M&&(g=parseFloat(M[1])||0)}var C=(Number(m[1].split(/,/)[1])+g)*e.context.transformation.k+e.context.getZeroZeroTransformationPoint().y+e.context.transformation.y;e.leftPosition.set(p.toString()+"px"),e.topPosition.set(C.toString()+"px"),a.nativeElement.innerText=r.text,e.renderer.setStyle(a.nativeElement,"color",r.fill),e.renderer.setStyle(a.nativeElement,"font-family",r.font_family),e.renderer.setStyle(a.nativeElement,"font-size",`${r.font_size}pt`),e.renderer.setStyle(a.nativeElement,"font-weight",r.font_weight);let _=()=>{let w=e.temporaryTextElement().nativeElement.innerText;e.drawingsEventSource.textEdited.emit(new b2(e.editingDrawingId,w.replace(/\n$/,""),e.editedElement)),n.selectAll("text.editingMode").attr("visibility","visible").classed("editingMode",!1),e.innerText.set(""),a.nativeElement.innerText="",a.nativeElement.removeEventListener("focusout",e.textListener),e.clearStyle(),e.renderer.setStyle(a.nativeElement,"display","none")};e.textListener=_,a.nativeElement.addEventListener("focusout",e.textListener),a.nativeElement.focus()})}ngOnDestroy(){this.textAddingSubscription.unsubscribe()}clearStyle(){let e=this.temporaryTextElement();this.renderer.setStyle(e.nativeElement,"color","#000000"),this.renderer.setStyle(e.nativeElement,"font-family","Noto Sans"),this.renderer.setStyle(e.nativeElement,"font-size","11pt"),this.renderer.setStyle(e.nativeElement,"font-weight","bold")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-text-editor"]],viewQuery:function(n,o){n&1&&tn(o.temporaryTextElement,C1e,5),n&2&&nn()},inputs:{svg:[1,"svg"],controller:[1,"controller"]},decls:3,vars:5,consts:[["temporaryTextElement",""],["id","temporaryElement","contenteditable","true",1,"temporaryElement"]],template:function(n,o){n&1&&(_o(0,"div",1,0),d(2),wo()),n&2&&(yn("top",o.topPosition())("left",o.leftPosition()),u(2),X(" ",o.innerText(),`
|
||
`))},styles:[".temporaryElement[_ngcontent-%COMP%]{padding-left:4px;width:fit-content;position:absolute;z-index:99;font-family:Noto Sans;font-size:11pt;font-weight:700;color:var(--mat-app-on-surface-color);vertical-align:top;line-height:1.2;transform-origin:top left}"],changeDetection:0})}return t})();var hH=(()=>{class t{svg=oe(void 0);mapListener;drawingSelected;drawingsEventSource=f(Ko);context=f(jo);ngOnInit(){this.drawingSelected=this.drawingsEventSource.selected.subscribe(e=>{e===""?this.deactivate():this.activate()})}activate(){let e=n=>{let o=(n.pageX-(this.context.getZeroZeroTransformationPoint().x+this.context.transformation.x))/this.context.transformation.k,r=(n.pageY-(this.context.getZeroZeroTransformationPoint().y+this.context.transformation.y))/this.context.transformation.k;this.drawingsEventSource.pointToAddSelected.emit(new g2(o,r)),this.deactivate()};this.deactivate(),this.mapListener=e,this.svg().addEventListener("click",this.mapListener)}deactivate(){this.svg().removeEventListener("click",this.mapListener)}ngOnDestroy(){this.drawingSelected.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-drawing-adding"]],inputs:{svg:[1,"svg"]},decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var Vi=(()=>{class t extends ym{getItemKey(e){return e.drawing_id}static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Wi=(()=>{class t{httpController;svgToDrawingConverter;constructor(e,n){this.httpController=e,this.svgToDrawingConverter=n}add(e,n,o,r,a){return this.httpController.post(e,`/projects/${n}/drawings`,{svg:a,x:Math.round(o),y:Math.round(r),z:1})}duplicate(e,n,o){return this.httpController.post(e,`/projects/${n}/drawings`,{svg:o.svg,rotation:o.rotation,x:o.x+10,y:o.y+10,z:o.z})}updatePosition(e,n,o,r,a){let c=Math.round(r),m=Math.round(a);return n.snap_to_grid&&(o.element=this.svgToDrawingConverter.convert(o.svg),c=Math.round((c+o.element.width/2)/n.drawing_grid_size)*n.drawing_grid_size,m=Math.round((m+o.element.height/2)/n.drawing_grid_size)*n.drawing_grid_size,c=Math.round(c-o.element.width/2),m=Math.round(m-o.element.height/2)),this.httpController.put(e,`/projects/${o.project_id}/drawings/${o.drawing_id}`,{x:c,y:m})}updateSizeAndPosition(e,n,o,r,a){return this.httpController.put(e,`/projects/${n.project_id}/drawings/${n.drawing_id}`,{svg:a,x:Math.round(o),y:Math.round(r)})}updateText(e,n,o){return this.httpController.put(e,`/projects/${n.project_id}/drawings/${n.drawing_id}`,{svg:o,x:Math.round(n.x),y:Math.round(n.y),z:n.z})}update(e,n){return this.httpController.put(e,`/projects/${n.project_id}/drawings/${n.drawing_id}`,{locked:n.locked,svg:n.svg,rotation:n.rotation,x:Math.round(n.x),y:Math.round(n.y),z:n.z})}delete(e,n){return this.httpController.delete(e,`/projects/${n.project_id}/drawings/${n.drawing_id}`)}lockAllNodes(e,n){return this.httpController.post(e,`/projects/${n.project_id}/lock`,{})}unLockAllNodes(e,n){return this.httpController.post(e,`/projects/${n.project_id}/unlock`,{})}static \u0275fac=function(n){return new(n||t)(ge(an),ge(Vp))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var fH=(()=>{class t{svg=oe(void 0);controller=oe(void 0);project=oe(void 0);isDrawing=!1;points=[];drawingSelected;svgSelection;canvasGroup;previewPath;drawingsEventSource=f(Ko);context=f(jo);drawingsDataSource=f(Vi);drawingService=f(Wi);toolsService=f(Al);ngOnInit(){this.svgSelection=dn(this.svg()),this.canvasGroup=this.svgSelection.select("g.canvas"),this.drawingSelected=this.drawingsEventSource.selected.subscribe(e=>{e==="curve"?this.activate():this.deactivate()})}activate(){let e=this;this.toolsService.selectionToolActivation(!1);let n=a=>{a.preventDefault(),a.stopPropagation();let c=e.getCanvasCoordinates(a);e.isDrawing=!0,e.points=[{x:c[0],y:c[1]}],e.createPreviewPath(),document.addEventListener("mousemove",o,{passive:!1}),document.addEventListener("mouseup",r,{passive:!1})},o=a=>{if(!e.isDrawing)return;a.preventDefault();let c=e.getCanvasCoordinates(a);e.points.push({x:c[0],y:c[1]}),e.updatePreviewPath()},r=a=>{e.isDrawing&&(a.preventDefault(),e.isDrawing=!1,document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",r),e.points.length>1&&e.createCurveDrawing(),e.removePreviewPath(),e.drawingsEventSource.drawingCompleted.emit("curve"))};this.svg()._curveDrawingListener=n,this.svg().addEventListener("mousedown",n)}deactivate(){this.toolsService.selectionToolActivation(!0);let e=this.svg()._curveDrawingListener;e&&(this.svg().removeEventListener("mousedown",e),delete this.svg()._curveDrawingListener),this.removePreviewPath(),this.isDrawing=!1,this.points=[]}getCanvasCoordinates(e){let n=this.canvasGroup.node(),o=this.context.transformation,r=this.context.getZeroZeroTransformationPoint(),a=(e.pageX-(r.x+o.x))/o.k,c=(e.pageY-(r.y+o.y))/o.k;return[a,c]}createPreviewPath(){this.canvasGroup.select("g.curve-preview").node()||this.canvasGroup.append("g").attr("class","curve-preview");let e=this.canvasGroup.select("g.curve-preview");this.previewPath=e.append("path").attr("stroke","var(--gns3-canvas-link-color)").attr("stroke-width","2").attr("fill","none").attr("stroke-dasharray","5,5")}updatePreviewPath(){if(!this.previewPath||this.points.length<2)return;let e=`M ${this.points[0].x} ${this.points[0].y}`;for(let n=1;n<this.points.length;n++)e+=` L ${this.points[n].x} ${this.points[n].y}`;this.previewPath.attr("d",e)}removePreviewPath(){this.previewPath&&(this.previewPath.remove(),this.previewPath=null),this.canvasGroup.select("g.curve-preview").remove()}createCurveDrawing(){let e=this.points.map(C=>C.x),n=this.points.map(C=>C.y),o=Math.min(...e),r=Math.max(...e),a=Math.min(...n),c=Math.max(...n),m=r-o,p=c-a,h=new wa;h.points=this.points.map(C=>({x:C.x-o,y:C.y-a}));let g=getComputedStyle(document.documentElement).getPropertyValue("--gns3-canvas-link-color").trim()||"var(--gns3-canvas-link-color)";h.stroke=g,h.stroke_width=3,h.stroke_dasharray="none",h.curve_type="none",h.arrow_start=!1,h.arrow_end=!1,h.width=m,h.height=p;let M=this.convertCurveToSvg(h);this.drawingService.add(this.controller(),this.project().project_id,o,a,M).subscribe(C=>{this.drawingsDataSource.add(C)})}convertCurveToSvg(e){let n="";if(e.points.length>0){n=`M ${e.points[0].x} ${e.points[0].y}`;for(let o=1;o<e.points.length;o++)n+=` L ${e.points[o].x} ${e.points[o].y}`}return`<svg xmlns="http://www.w3.org/2000/svg" width="${e.width}" height="${e.height}">
|
||
<path d="${n}" stroke="${e.stroke}" stroke-width="${e.stroke_width}"
|
||
fill="none" stroke-dasharray="${e.stroke_dasharray}"
|
||
data-curve-type="none"
|
||
data-arrow-start="${e.arrow_start}"
|
||
data-arrow-end="${e.arrow_end}" />
|
||
</svg>`}ngOnDestroy(){this.deactivate(),this.drawingSelected.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-curve-drawing"]],inputs:{svg:[1,"svg"],controller:[1,"controller"],project:[1,"project"]},decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var y1e=["*"],gH=(()=>{class t{resizingFinished;drawingsWidget=f(hd);drawingsEventSource=f(Ko);ngOnInit(){this.resizingFinished=this.drawingsWidget.resizingFinished.subscribe(e=>{this.drawingsEventSource.resized.emit(new f2(e.datum,e.x,e.y,e.width,e.height))})}ngOnDestroy(){this.resizingFinished.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-drawing-resizing"]],ngContentSelectors:y1e,decls:1,vars:0,template:function(n,o){n&1&&(En(),Yt(0))},encapsulation:2,changeDetection:0})}return t})();var z2=(()=>{class t{inRectangle(e,n,o){return e.x<=n&&n<e.x+e.width&&e.y<=o&&o<e.y+e.height}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var _H=(()=>{class t{onSelection;selectionEventSource=f(Bg);graphDataManager=f(Tp);inRectangleHelper=f(z2);selectionManager=f(Yo);cd=f(K);ngOnInit(){this.onSelection=this.selectionEventSource.selected.subscribe(e=>{let n=this.graphDataManager.getNodes().filter(g=>this.inRectangleHelper.inRectangle(e,g.x,g.y)),o=this.graphDataManager.getLinks().filter(g=>this.inRectangleHelper.inRectangle(e,g.x,g.y)),r=this.graphDataManager.getDrawings().filter(g=>this.inRectangleHelper.inRectangle(e,g.x,g.y)),a=this.graphDataManager.getNodes().filter(g=>{if(g.label===void 0)return!1;let M=g.x+g.label.x,C=g.y+g.label.y;return this.inRectangleHelper.inRectangle(e,M,C)}).map(g=>g.label),c=this.graphDataManager.getLinks().filter(g=>{if(g.source===void 0||g.nodes.length!=2||g.nodes[0].label===void 0)return!1;let M=g.source.x+g.nodes[0].label.x,C=g.source.y+g.nodes[0].label.y;return this.inRectangleHelper.inRectangle(e,M,C)}).map(g=>g.nodes[0]),m=this.graphDataManager.getLinks().filter(g=>{if(g.target===void 0||g.nodes.length!=2||g.nodes[1].label===void 0)return!1;let M=g.target.x+g.nodes[1].label.x,C=g.target.y+g.nodes[1].label.y;return this.inRectangleHelper.inRectangle(e,M,C)}).map(g=>g.nodes[1]),p=[...c,...m],h=[...n,...o,...r,...a,...p];this.selectionManager.setSelected(h),this.cd.markForCheck()})}ngOnDestroy(){this.onSelection.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-selection-control"]],decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var vH=(()=>{class t{onSelected;onUnselected;selectionManager=f(Yo);mapChangeDetectorRef=f(Ep);ngOnInit(){this.onSelected=this.selectionManager.selected.subscribe(()=>{this.mapChangeDetectorRef.detectSelectionChanges()}),this.onUnselected=this.selectionManager.unselected.subscribe(()=>{this.mapChangeDetectorRef.detectSelectionChanges()})}ngOnDestroy(){this.onSelected.unsubscribe(),this.onUnselected.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-selection-select"]],decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var bH=(()=>{class t{start;drag;end;mapSettingsSubscription;isMapLocked=!1;svg;nodesWidget=f(Fp);drawingsWidget=f(hd);linksWidget=f(Lp);labelWidget=f(Rp);interfaceWidget=f(pd);selectionManager=f(Yo);nodesEventSource=f($l);drawingsEventSource=f(Ko);graphDataManager=f(Tp);linksEventSource=f(za);mapSettingsService=f(To);ngOnInit(){let e=dn(this.svg);this.mapSettingsSubscription=this.mapSettingsService.isMapLocked.subscribe(n=>{this.isMapLocked=n}),this.start=Dn(this.nodesWidget.draggable.start,this.drawingsWidget.draggable.start,this.labelWidget.draggable.start,this.interfaceWidget.draggable.start).subscribe(n=>{let o=this.selectionManager.getSelected();n.datum instanceof Ol&&o.filter(r=>r instanceof Ol&&r.id===n.datum.id).length===0&&this.selectionManager.setSelected([n.datum]),n.datum instanceof Va&&o.filter(r=>r instanceof Va&&r.id===n.datum.id).length===0&&this.selectionManager.setSelected([n.datum]),n.datum instanceof pc&&o.filter(r=>r instanceof pc&&r.id===n.datum.id).length===0&&this.selectionManager.setSelected([n.datum]),n.datum instanceof em&&o.filter(r=>r instanceof em&&r.id===n.datum.id).length===0&&this.selectionManager.setSelected([n.datum])}),this.drag=Dn(this.nodesWidget.draggable.drag,this.drawingsWidget.draggable.drag,this.labelWidget.draggable.drag,this.interfaceWidget.draggable.drag).subscribe(n=>{if(!this.isMapLocked){let o=this.selectionManager.getSelected(),r=o.filter(_=>_ instanceof Ol),a=r.filter(_=>_.locked),c=r.filter(_=>!_.locked);c.forEach(_=>{_.x+=n.dx,_.y+=n.dy,this.nodesWidget.updateNodePosition(e,_),this.graphDataManager.getLinks().filter(S=>S.target!==void 0&&S.target.id===_.id||S.source!==void 0&&S.source.id===_.id).forEach(S=>{this.linksWidget.redrawLink(e,S)})}),o.filter(_=>_ instanceof Va).filter(_=>!_.locked).forEach(_=>{_.x+=n.dx,_.y+=n.dy,this.drawingsWidget.redrawDrawing(e,_)}),o.filter(_=>_ instanceof pc).filter(_=>a.filter(w=>w.id===_.nodeId).length===0).forEach(_=>{if(c.filter(y=>y.id===_.nodeId).length>0)return;let S=this.graphDataManager.getNodes().filter(y=>y.id===_.nodeId)[0];_.x+=n.dx,_.y+=n.dy,S.label.x=_.x,S.label.y=_.y,this.labelWidget.redrawLabel(e,_)}),o.filter(_=>_ instanceof em).filter(_=>a.filter(w=>w.id===_.nodeId).length===0).forEach(_=>{if(c.filter(y=>y.id===_.nodeId).length>0)return;let S=this.graphDataManager.getLinks().filter(y=>y.nodes[0].id===_.id||y.nodes[1].id===_.id)[0];S.nodes[0].id===_.id&&(S.nodes[0].label.x+=n.dx,S.nodes[0].label.y+=n.dy),S.nodes[1].id===_.id&&(S.nodes[1].label.x+=n.dx,S.nodes[1].label.y+=n.dy),this.linksWidget.redrawLink(e,S)})}}),this.end=Dn(this.nodesWidget.draggable.end,this.drawingsWidget.draggable.end,this.labelWidget.draggable.end,this.interfaceWidget.draggable.end).subscribe(n=>{if(!this.isMapLocked){let o=this.selectionManager.getSelected(),r=o.filter(_=>_ instanceof Ol),a=r.filter(_=>_.locked),c=r.filter(_=>!_.locked);c.forEach(_=>{this.nodesEventSource.dragged.emit(new fh(_,n.dx,n.dy))}),o.filter(_=>_ instanceof Va).filter(_=>!_.locked).forEach(_=>{this.drawingsEventSource.dragged.emit(new fh(_,n.dx,n.dy))}),o.filter(_=>_ instanceof pc).filter(_=>a.filter(w=>w.id===_.nodeId).length===0).forEach(_=>{c.filter(S=>S.id===_.nodeId).length>0||this.nodesEventSource.labelDragged.emit(new fh(_,n.dx,n.dy))}),o.filter(_=>_ instanceof em).filter(_=>a.filter(w=>w.id===_.nodeId).length===0).forEach(_=>{c.filter(S=>S.id===_.nodeId).length>0||this.linksEventSource.interfaceDragged.emit(new fh(_,n.dx,n.dy))})}})}ngOnDestroy(){this.start.unsubscribe(),this.drag.unsubscribe(),this.end.unsubscribe(),this.mapSettingsSubscription.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-draggable-selection"]],inputs:{svg:"svg"},decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var CH=(()=>{class t{linkEditedSubscription;svg=oe(void 0);controller=oe(void 0);linksWidget=f(Lp);linksEventSource=f(za);linksDataSource=f(dr);linkService=f(to);ngOnInit(){let e=dn(this.svg());this.linkEditedSubscription=this.linksEventSource.edited.subscribe(n=>{this.linksWidget.redrawLink(e,n);let o=this.controller();if(o&&n.link_style?.control_offset!==void 0){let r=this.linksDataSource.get(n.id);r&&(r.link_style=H({},n.link_style),this.linkService.updateLinkStyle(o,r).subscribe({error:()=>{}}))}})}ngOnDestroy(){this.linkEditedSubscription.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-link-editing"]],inputs:{svg:[1,"svg"],controller:[1,"controller"]},decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var zp=(()=>{class t{movingModeState=new ve;static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var yH=(()=>{class t{element;movingEventSource;context;mouseupListener=null;mousemoveListener=null;movingModeState;activated=!1;isDragging=!1;constructor(e,n,o){this.element=e,this.movingEventSource=n,this.context=o}ngOnInit(){this.movingModeState=this.movingEventSource.movingModeState.subscribe(e=>{this.activated=e,e||this.removelisteners()})}ngOnDestroy(){this.movingModeState.unsubscribe(),this.removelisteners()}onMouseDown(e){this.activated&&!this.isDragging&&(this.isDragging=!0,this.mousemoveListener=n=>{dn(this.element.nativeElement).selectAll("g.canvas").data([this.context]).attr("transform",()=>{this.context.transformation.x=this.context.transformation.x+n.movementX,this.context.transformation.y=this.context.transformation.y+n.movementY;let a=this.context.getZeroZeroTransformationPoint().x+this.context.transformation.x,c=this.context.getZeroZeroTransformationPoint().y+this.context.transformation.y,m=this.context.transformation.k;return`translate(${a}, ${c}) scale(${m})`})},this.mouseupListener=n=>{this.isDragging=!1,this.removelisteners()},this.element.nativeElement.addEventListener("mousemove",this.mousemoveListener),document.addEventListener("mouseup",this.mouseupListener))}removelisteners(){this.mousemoveListener&&(this.element.nativeElement.removeEventListener("mousemove",this.mousemoveListener),this.mousemoveListener=null),this.mouseupListener&&(document.removeEventListener("mouseup",this.mouseupListener),this.mouseupListener=null),this.isDragging=!1}static \u0275fac=function(n){return new(n||t)(st(Lt),st(zp),st(jo))};static \u0275dir=ft({type:t,selectors:[["","appMovingCanvas",""]],hostBindings:function(n,o){n&1&&v("mousedown",function(a){return o.onMouseDown(a)})}})}return t})();var SH=(()=>{class t{element;renderer;movingEventSource;context;mapsScaleService;wheelListener;movingModeState;constructor(e,n,o,r,a){this.element=e,this.renderer=n,this.movingEventSource=o,this.context=r,this.mapsScaleService=a}ngOnInit(){this.renderer.setStyle(this.element.nativeElement,"touch-action","none"),this.renderer.setStyle(this.element.nativeElement,"-ms-touch-action","none"),this.movingModeState=this.movingEventSource.movingModeState.subscribe(e=>{e?this.addListener():this.removeListener()})}ngOnDestroy(){this.movingModeState.unsubscribe()}addListener(){this.wheelListener=e=>{e.stopPropagation();let n=e.deltaY;n=e.deltaMode===0?n/100:n/3,dn(this.element.nativeElement).selectAll("g.canvas").data([this.context]).attr("transform",()=>{this.context.transformation.k=this.context.transformation.k-n/10;let a=this.context.getZeroZeroTransformationPoint().x+this.context.transformation.x,c=this.context.getZeroZeroTransformationPoint().y+this.context.transformation.y,m=this.context.transformation.k;return this.mapsScaleService.setScale(m),`translate(${a}, ${c}) scale(${m})`})},this.element.nativeElement.addEventListener("wheel",this.wheelListener,{passive:!0})}removeListener(){this.element.nativeElement.removeEventListener("wheel",this.wheelListener)}static \u0275fac=function(n){return new(n||t)(st(Lt),st(ii),st(zp),st(jo),st(od))};static \u0275dir=ft({type:t,selectors:[["","appZoomingCanvas",""]]})}return t})();var S1e=["svg"],w1e=["textEditor"];function M1e(t,i){if(t&1&&(Vn(),s(0,"defs")(1,"pattern",7),F(2,"path",8),l(),s(3,"pattern",9),F(4,"path",8),l()(),F(5,"rect",10)(6,"rect",11)),t&2){let e=b();u(),It("x",e.drawingGridX)("y",e.drawingGridY)("width",e.project().drawing_grid_size)("height",e.project().drawing_grid_size),u(),It("d","M "+e.project().drawing_grid_size+" 0 L 0 0 0 "+e.project().drawing_grid_size)("stroke","var(--gns3-grid-drawing-color)")("stroke-width",1),u(),It("x",e.nodeGridX)("y",e.nodeGridY)("width",e.project().grid_size)("height",e.project().grid_size),u(),It("d","M "+e.project().grid_size+" 0 L 0 0 0 "+e.project().grid_size)("stroke","var(--gns3-grid-node-color)")("stroke-width",1)}}var j2=(()=>{class t{nodes=oe([]);links=oe([]);drawings=oe([]);symbols=oe([]);project=oe(void 0);controller=oe(void 0);width=oe(1500);height=oe(600);svgRef=Ut("svg");textEditor=Ut("textEditor");parentNativeElement;svg;onChangesDetected;subscriptions=[];drawLinkTool;settings={show_interface_labels:!0};gridVisibility=me(0);nodeGridX=0;nodeGridY=0;drawingGridX=0;drawingGridY=0;graphDataManager=f(Tp);context=f(jo);mapChangeDetectorRef=f(Ep);canvasSizeDetector=f(KS);mapSettings=f(Vl);element=f(Lt);interfaceLabelWidget=f(pd);selectionToolWidget=f(Op);movingToolWidget=f(Lg);graphLayout=f(V2);toolsService=f(Al);mapScaleService=f(od);mapSettingsService=f(To);constructor(){this.parentNativeElement=this.element.nativeElement,Ns(()=>{this.project()&&this.mapChangeDetectorRef.hasBeenDrawn&&(this.updateGrid(),this.mapChangeDetectorRef.detectChanges())})}set showInterfaceLabels(e){e&&!this.mapSettingsService.integrateLinkLabelsToLinks?(this.settings.show_interface_labels=!0,this.interfaceLabelWidget.setEnabled(!0)):(this.settings.show_interface_labels=!1,this.interfaceLabelWidget.setEnabled(!1)),this.mapChangeDetectorRef.detectChanges()}set readonly(e){this.mapSettings.isReadOnly=e}resize(e){if(e)this.svg.attr("height",window.innerHeight+window.scrollY-16);else{let n=window.innerHeight-16;this.height()>n?this.svg.attr("height",this.height()):this.svg.attr("height",n)}}ngOnChanges(e){(e.width&&!e.width.isFirstChange()||e.height&&!e.height.isFirstChange()||e.drawings&&!e.drawings.isFirstChange()||e.nodes&&!e.nodes.isFirstChange()||e.links&&!e.links.isFirstChange()||e.symbols&&!e.symbols.isFirstChange())&&this.svg.empty&&!this.svg.empty()&&(e.symbols&&this.onSymbolsChange(e.symbols),this.changeLayout())}ngOnInit(){this.parentNativeElement!==null&&this.createGraph(this.parentNativeElement),this.context.size=this.getSize(),this.project()&&this.updateGrid(),this.onChangesDetected=this.mapChangeDetectorRef.changesDetected.subscribe(()=>{this.mapChangeDetectorRef.hasBeenDrawn&&this.redraw()}),this.subscriptions.push(this.mapChangeDetectorRef.selectionChangesDetected.subscribe(()=>{this.mapChangeDetectorRef.hasBeenDrawn&&this.graphLayout.updateSelectionHighlights(this.svg)})),this.subscriptions.push(this.mapScaleService.scaleChangeEmitter.subscribe(r=>this.redraw())),this.subscriptions.push(this.toolsService.isMovingToolActivated.subscribe(r=>{this.movingToolWidget.setEnabled(r),this.mapChangeDetectorRef.detectChanges()})),this.subscriptions.push(this.toolsService.isSelectionToolActivated.subscribe(r=>{this.selectionToolWidget.setEnabled(r),this.mapChangeDetectorRef.detectChanges()})),this.subscriptions.push(this.toolsService.isDrawLinkToolActivated.subscribe(r=>{this.drawLinkTool=r})),this.gridVisibility.set(localStorage.getItem("gridVisibility")==="true"?1:0),this.mapSettingsService.isScrollDisabled.subscribe(r=>this.resize(r));let n=null,o=null;this.subscriptions.push(this.graphLayout.getNodesWidget().draggable.start.subscribe(()=>{let r=this.context.getZeroZeroTransformationPoint();n=r.x,o=r.y})),this.subscriptions.push(this.graphLayout.getNodesWidget().draggable.drag.subscribe(()=>{let r=this.getSize();this.context.centerX=n,this.context.centerY=o,(r.width>this.context.size.width||r.height>this.context.size.height)&&(this.context.size=r,this.svg.attr("width",r.width).attr("height",r.height))})),this.subscriptions.push(this.graphLayout.getNodesWidget().draggable.end.subscribe(()=>{let r=n??this.context.size.width/2,a=o??this.context.size.height/2,c=this.getSize(),m=this.context.centerX??c.width/2,p=this.context.centerY??c.height/2;window.scrollBy(m-r,p-a),this.context.size=c,this.svg.attr("width",c.width).attr("height",c.height),this.graphLayout.draw(this.svg,this.context),n=null,o=null}))}ngOnDestroy(){this.graphLayout.disconnect(this.svg),this.onChangesDetected.unsubscribe(),this.subscriptions.forEach(e=>{e.unsubscribe()})}applyMapSettingsChanges(){this.redraw()}createGraph(e){let n=dn(e);this.svg=n.select("svg"),this.graphLayout.connect(this.svg,this.context),this.graphLayout.draw(this.svg,this.context),this.mapChangeDetectorRef.hasBeenDrawn=!0}getSize(){let e=document.documentElement.clientWidth,n=document.documentElement.clientHeight,o=this.graphDataManager.getNodes(),r=this.graphDataManager.getDrawings();if(o.length===0&&r.length===0)return this.context.centerX=null,this.context.centerY=null,new bp(e,n);let a=this.context.transformation.k,c=30,m=0,p=0,h=0,g=0;for(let k of o){let I=(k.width||60)*a,E=(k.height||60)*a,N=k.width?k.x*a:(k.x-30)*a,T=k.width?k.y*a:(k.y-30)*a;m=Math.min(m,N),p=Math.max(p,N+I),h=Math.min(h,T),g=Math.max(g,T+E)}for(let k of r)m=Math.min(m,k.x*a),p=Math.max(p,k.x*a),h=Math.min(h,k.y*a),g=Math.max(g,k.y*a);let M=e/2,C=n/2,_=Math.max(M,-m+c),w=Math.max(M,p+c),S=Math.max(C,-h+c),y=Math.max(C,g+c);return this.context.centerX=_,this.context.centerY=S,this.canvasSizeDetector.getOptimalSize(_+w,S+y)}changeLayout(){this.parentNativeElement!=null&&(this.context.size=this.getSize()),this.redraw()}onSymbolsChange(e){this.graphDataManager.setSymbols(this.symbols())}redraw(){this.updateGrid(),this.graphDataManager.setNodes(this.nodes()),this.graphDataManager.setLinks(this.links()),this.graphDataManager.setDrawings(this.drawings()),this.context.size=this.getSize(),this.graphLayout.draw(this.svg,this.context),this.textEditor().activateTextEditingForDrawings(),this.textEditor().activateTextEditingForNodeLabels(),this.mapSettingsService.mapRenderedEmitter.emit(!0)}updateGrid(){let e=this.project();e.grid_size&&e.grid_size>0&&(this.nodeGridX=this.context.size.width/2-Math.floor(this.context.size.width/2/e.grid_size)*e.grid_size),e.grid_size&&e.grid_size>0&&(this.nodeGridY=this.context.size.height/2-Math.floor(this.context.size.height/2/e.grid_size)*e.grid_size),e.drawing_grid_size&&e.drawing_grid_size>0&&(this.drawingGridX=this.context.size.width/2-Math.floor(this.context.size.width/2/e.drawing_grid_size)*e.drawing_grid_size),e.drawing_grid_size&&e.drawing_grid_size>0&&(this.drawingGridY=this.context.size.height/2-Math.floor(this.context.size.height/2/e.drawing_grid_size)*e.drawing_grid_size)}onResize(e){this.changeLayout()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-d3-map"]],viewQuery:function(n,o){n&1&&tn(o.svgRef,S1e,5)(o.textEditor,w1e,5),n&2&&nn(2)},hostBindings:function(n,o){n&1&&v("resize",function(a){return o.onResize(a)},br)},inputs:{nodes:[1,"nodes"],links:[1,"links"],drawings:[1,"drawings"],symbols:[1,"symbols"],project:[1,"project"],controller:[1,"controller"],width:[1,"width"],height:[1,"height"],showInterfaceLabels:[0,"show-interface-labels","showInterfaceLabels"],readonly:"readonly"},features:[un],decls:12,vars:10,consts:[["svg",""],["textEditor",""],["id","map","preserveAspectRatio","none","appMovingCanvas","","appZoomingCanvas","",1,"map"],[3,"svg"],[3,"svg","controller","project"],[3,"controller","svg"],[3,"svg","controller"],["id","gridDrawing","patternUnits","userSpaceOnUse"],["fill","none"],["id","gridNode","patternUnits","userSpaceOnUse"],["width","100%","height","100%","fill","url(#gridDrawing)"],["width","100%","height","100%","fill","url(#gridNode)"]],template:function(n,o){if(n&1&&(Vn(),s(0,"svg",2,0),A(2,M1e,7,14),l(),vr(),F(3,"app-drawing-adding",3)(4,"app-curve-drawing",4)(5,"app-drawing-resizing")(6,"app-selection-control")(7,"app-selection-select")(8,"app-text-editor",5,1)(10,"app-draggable-selection",3)(11,"app-link-editing",6)),n&2){let r=Re(1);u(2),O(o.gridVisibility()>0&&o.project()?2:-1),u(),x("svg",r),u(),x("svg",r)("controller",o.controller())("project",o.project()),u(4),x("controller",o.controller())("svg",r),u(2),x("svg",r),u(),x("svg",r)("controller",o.controller())}},dependencies:[uH,hH,fH,gH,_H,vH,bH,CH,yH,SH],styles:["svg[_ngcontent-%COMP%]{display:block}"],changeDetection:0})}return t})();var $2=class{drawing_id;project_id;rotation;svg;locked;x;y;z;element};var H2=(()=>{class t{constructor(){}convert(e){let n=new $2;return n.drawing_id=e.id,n.project_id=e.projectId,n.rotation=e.rotation,n.svg=e.svg,n.locked=e.locked,n.x=e.x,n.y=e.y,n.z=e.z,n.element=e.element,n}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var U2=class{rotation;style;text;x;y};var fd=(()=>{class t{fontBBoxCalculator;cssFixer;fontFixer;constructor(e,n,o){this.fontBBoxCalculator=e,this.cssFixer=n,this.fontFixer=o}convert(e){let n=this.cssFixer.fix(e.style),o=this.fontFixer.fixStyles(n),r=this.fontBBoxCalculator.calculate(e.text,o),a=new U2;return a.rotation=e.rotation,a.style=e.style,a.text=e.text,a.x=e.x,a.y=e.y,a.x!==null&&(a.x-=3),a.y!==null&&(a.y-=r.height),a}static \u0275fac=function(n){return new(n||t)(ge(rd),ge(Ll),ge(ca))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var G2=class{node_id;adapter_number;port_number;label};var Wg=(()=>{class t{mapLabelToLabel;constructor(e){this.mapLabelToLabel=e}convert(e){let n=new G2;return n.node_id=e.nodeId,n.adapter_number=e.adapterNumber,n.port_number=e.portNumber,n.label=this.mapLabelToLabel.convert(e.label),n}static \u0275fac=function(n){return new(n||t)(ge(fd))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var W2=class{capture_file_name;capture_file_path;capturing;filters;link_id;link_type;nodes;project_id;suspend;link_style;wireshark;distance;length;source;target;x;y};var q2=(()=>{class t{mapLinkNodeToMapLinkNode;constructor(e){this.mapLinkNodeToMapLinkNode=e}convert(e){let n=new W2;return n.link_id=e.id,n.capture_file_name=e.captureFileName,n.capture_file_path=e.captureFilePath,n.capturing=e.capturing,n.filters=e.filters,n.link_type=e.linkType,n.link_style=e.link_style,n.nodes=e.nodes.map(o=>this.mapLinkNodeToMapLinkNode.convert(o)),n.project_id=e.projectId,n.suspend=e.suspend,n.wireshark=e.wireshark,n}static \u0275fac=function(n){return new(n||t)(ge(Wg))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var X2=class{command_line;compute_id;console;console_auto_start;console_host;console_type;custom_adapters;ethernet_adapters;serial_adapters;first_port_name;height;label;locked;name;node_directory;node_id;node_type;port_name_format;port_segment_size;ports;project_id;properties;status;symbol;symbol_url;tags;usage;width;x;y;z;aux_type};var Q2=class{adapter_number;adapter_type;link_type;name;port_number;short_name;available};var qg=(()=>{class t{convert(e){let n=new Q2;return n.adapter_number=e.adapterNumber,n.link_type=e.linkType,n.name=e.name,n.port_number=e.portNumber,n.short_name=e.shortName,n}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var jp=(()=>{class t{mapLabelToLabel;mapPortToPort;constructor(e,n){this.mapLabelToLabel=e,this.mapPortToPort=n}convert(e){let n=new X2;return n.node_id=e.id,n.command_line=e.commandLine,n.compute_id=e.computeId,n.console=e.console,n.console_host=e.consoleHost,n.console_type=e.consoleType,n.first_port_name=e.firstPortName,n.height=e.height,n.label=e.label?this.mapLabelToLabel.convert(e.label):void 0,n.locked=e.locked,n.name=e.name,n.node_directory=e.nodeDirectory,n.node_type=e.nodeType,n.port_name_format=e.portNameFormat,n.port_segment_size=e.portSegmentSize,n.ports=e.ports?e.ports.map(o=>this.mapPortToPort.convert(o)):[],n.properties=e.properties,n.project_id=e.projectId,n.status=e.status,n.symbol=e.symbol,n.symbol_url=e.symbolUrl,n.usage=e.usage,n.width=e.width,n.x=e.x,n.y=e.y,n.z=e.z,n}static \u0275fac=function(n){return new(n||t)(ge(fd),ge(qg))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Xg=(()=>{class t{nodesDataSource;linksDataSource;drawingsDataSource;nodeNotificationEmitter=new ve;linkNotificationEmitter=new ve;drawingNotificationEmitter=new ve;infoNotificationEmitter=new ve;warningNotificationEmitter=new ve;errorNotificationEmitter=new ve;constructor(e,n,o){this.nodesDataSource=e,this.linksDataSource=n,this.drawingsDataSource=o}handleMessage(e){e.action==="node.updated"&&(this.nodesDataSource.update(e.event),this.nodeNotificationEmitter.emit(e)),e.action==="node.created"&&(this.nodesDataSource.add(e.event),this.nodeNotificationEmitter.emit(e)),e.action==="node.deleted"&&(this.nodesDataSource.remove(e.event),this.nodeNotificationEmitter.emit(e)),e.action==="link.created"&&(this.linksDataSource.add(e.event),this.linkNotificationEmitter.emit(e)),e.action==="link.updated"&&(this.linksDataSource.update(e.event),this.linkNotificationEmitter.emit(e)),e.action==="link.deleted"&&(this.linksDataSource.remove(e.event),this.linkNotificationEmitter.emit(e)),e.action==="drawing.created"&&(this.drawingsDataSource.add(e.event),this.drawingNotificationEmitter.emit(e)),e.action==="drawing.updated"&&(this.drawingsDataSource.update(e.event),this.drawingNotificationEmitter.emit(e)),e.action==="drawing.deleted"&&(this.drawingsDataSource.remove(e.event),this.drawingNotificationEmitter.emit(e)),e.action==="log.error"&&this.errorNotificationEmitter.emit(e.event.message),e.action==="log.warning"&&this.warningNotificationEmitter.emit(e.event.message),e.action==="log.info"&&this.infoNotificationEmitter.emit(e.event.message)}static \u0275fac=function(n){return new(n||t)(ge(ci),ge(dr),ge(Vi))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var wt=(()=>{class t{httpController;constructor(e){this.httpController=e}getNodeById(e,n,o){return this.httpController.get(e,`/projects/${n}/nodes/${o}`)}isolate(e,n){return this.httpController.post(e,`/projects/${n.project_id}/nodes/${n.node_id}/isolate`,{})}unisolate(e,n){return this.httpController.post(e,`/projects/${n.project_id}/nodes/${n.node_id}/unisolate`,{})}start(e,n){return this.httpController.post(e,`/projects/${n.project_id}/nodes/${n.node_id}/start`,{})}startAll(e,n){return this.httpController.post(e,`/projects/${n.project_id}/nodes/start`,{})}stop(e,n){return this.httpController.post(e,`/projects/${n.project_id}/nodes/${n.node_id}/stop`,{})}stopAll(e,n){return this.httpController.post(e,`/projects/${n.project_id}/nodes/stop`,{})}suspend(e,n){return this.httpController.post(e,`/projects/${n.project_id}/nodes/${n.node_id}/suspend`,{})}suspendAll(e,n){return this.httpController.post(e,`/projects/${n.project_id}/nodes/suspend`,{})}reload(e,n){return this.httpController.post(e,`/projects/${n.project_id}/nodes/${n.node_id}/reload`,{})}reloadAll(e,n){return this.httpController.post(e,`/projects/${n.project_id}/nodes/reload`,{})}resetAllNodes(e,n){return this.httpController.post(e,`/projects/${n.project_id}/nodes/console/reset`,{})}createFromTemplate(e,n,o,r,a,c){return c?this.httpController.post(e,`/projects/${n.project_id}/templates/${o.template_id}`,{x:Math.round(r),y:Math.round(a),compute_id:c}):this.httpController.post(e,`/projects/${n.project_id}/templates/${o.template_id}`,{x:Math.round(r),y:Math.round(a),compute_id:"local"})}updatePosition(e,n,o,r,a){let c=Math.round(r),m=Math.round(a);return n.snap_to_grid&&(c=Math.round((c+o.width/2)/n.grid_size)*n.grid_size,m=Math.round((m+o.height/2)/n.grid_size)*n.grid_size,c=Math.round(c-o.width/2),m=Math.round(m-o.height/2)),this.httpController.put(e,`/projects/${o.project_id}/nodes/${o.node_id}`,{x:c,y:m})}updateLabel(e,n,o){return this.httpController.put(e,`/projects/${n.project_id}/nodes/${n.node_id}`,{label:{rotation:o.rotation,style:o.style,text:o.text,x:Math.round(o.x),y:Math.round(o.y)}})}updateSymbol(e,n,o){return this.httpController.put(e,`/projects/${n.project_id}/nodes/${n.node_id}`,{symbol:o})}update(e,n){return this.httpController.put(e,`/projects/${n.project_id}/nodes/${n.node_id}`,{x:Math.round(n.x),y:Math.round(n.y),z:n.z})}updateNode(e,n){return this.httpController.put(e,`/projects/${n.project_id}/nodes/${n.node_id}`,{console_type:n.console_type,console_auto_start:n.console_auto_start,locked:n.locked,name:n.name,properties:n.properties,tags:n.tags})}updateNodeWithCustomAdapters(e,n){let o=n.custom_adapters?n.custom_adapters.map(r=>{let a={adapter_number:r.adapter_number,adapter_type:r.adapter_type};return r.port_name!==null&&r.port_name!==void 0&&(a.port_name=r.port_name),r.mac_address!==null&&r.mac_address!==void 0&&(a.mac_address=r.mac_address),a}):[];return this.httpController.put(e,`/projects/${n.project_id}/nodes/${n.node_id}`,{console_type:n.console_type,console_auto_start:n.console_auto_start,custom_adapters:o,name:n.name,properties:n.properties,tags:n.tags})}delete(e,n){return this.httpController.delete(e,`/projects/${n.project_id}/nodes/${n.node_id}`)}duplicate(e,n){return this.httpController.post(e,`/projects/${n.project_id}/nodes/${n.node_id}/duplicate`,{x:n.x+10,y:n.y+10,z:n.z})}getNode(e,n){return this.httpController.get(e,`/projects/${n.project_id}/nodes/${n.node_id}`)}getDefaultCommand(){return'putty.exe -telnet %h %p -wt "%d" -gns3 5 -skin 4'}getNetworkConfiguration(e,n){return this.httpController.get(e,`/projects/${n.project_id}/nodes/${n.node_id}/files/etc/network/interfaces`,{responseType:"text"})}saveNetworkConfiguration(e,n,o){return this.httpController.post(e,`/projects/${n.project_id}/nodes/${n.node_id}/files/etc/network/interfaces`,o)}getStartupConfiguration(e,n){let o=`/projects/${n.project_id}/nodes/${n.node_id}`;return n.node_type==="vpcs"?o+="/files/startup.vpc":n.node_type==="iou"?o+="/files/startup-config.cfg":n.node_type==="dynamips"&&(o+=`/files/configs/i${n.properties.dynamips_id}_startup-config.cfg`),this.httpController.get(e,o,{responseType:"text"})}getPrivateConfiguration(e,n){let o=`/projects/${n.project_id}/nodes/${n.node_id}`;return n.node_type==="iou"?o+="/files/private-config.cfg":n.node_type==="dynamips"&&(o+=`/files/configs/i${n.properties.dynamips_id}_private-config.cfg`),this.httpController.get(e,o,{responseType:"text"})}saveConfiguration(e,n,o){let r=`/projects/${n.project_id}/nodes/${n.node_id}`;return n.node_type==="vpcs"?r+="/files/startup.vpc":n.node_type==="iou"?r+="/files/startup-config.cfg":n.node_type==="dynamips"&&(r+=`/files/configs/i${n.properties.dynamips_id}_startup-config.cfg`),this.httpController.post(e,r,o)}savePrivateConfiguration(e,n,o){let r=`/projects/${n.project_id}/nodes/${n.node_id}`;return n.node_type==="iou"?r+="/files/private-config.cfg":n.node_type==="dynamips"&&(r+=`/files/configs/i${n.properties.dynamips_id}_private-config.cfg`),this.httpController.post(e,r,o)}getIdlePCProposals(e,n){return this.httpController.get(e,`/projects/${n.project_id}/nodes/${n.node_id}/dynamips/idlepc_proposals`)}getAutoIdlePC(e,n){return this.httpController.get(e,`/projects/${n.project_id}/nodes/${n.node_id}/dynamips/auto_idlepc`)}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var gr=(()=>{class t{router;toasterService;mapSettingsService;nodeConsoleTrigger=new ve;closeNodeConsoleTrigger=new Le;consoleResized=new Le;openConsoles=0;defaultConsoleWidth=720;defaultConsoleHeight=408;defaultNumberOfColumns=80;defaultNumberOfRows=24;lastNumberOfColumns;lastNumberOfRows;constructor(e,n,o){this.router=e,this.toasterService=n,this.mapSettingsService=o}getNumberOfColumns(){return this.lastNumberOfColumns}getNumberOfRows(){return this.lastNumberOfRows}setNumberOfColumns(e){this.lastNumberOfColumns=e}setNumberOfRows(e){this.lastNumberOfRows=e}openConsoleForNode(e){this.nodeConsoleTrigger.emit(e)}closeConsoleForNode(e){this.closeNodeConsoleTrigger.next(e)}resizeTerminal(e){this.consoleResized.next(e)}getLineWidth(){return this.defaultConsoleWidth/this.defaultNumberOfColumns}getLineHeight(){return this.defaultConsoleHeight/this.defaultNumberOfRows}getUrl(e,n){let o="ws";return e.protocol==="https:"&&(o="wss"),`${o}://${e.host}:${e.port}/${Ai.current_version}/projects/${n.project_id}/nodes/${n.node_id}/console/ws?token=${e.authToken}`}openConsolesForAllNodesInWidget(e){let n="Please start the following nodes if you want to open consoles for them: ",o=0;e.forEach(r=>{r.console_type!=="none"&&(r.status==="started"?(this.mapSettingsService.logConsoleSubject.next(!0),setTimeout(()=>{this.openConsoleForNode(r)},500)):(o++,n+=r.name+" "))}),o>0&&this.toasterService.error(n)}openConsolesForAllNodesInNewTabs(e){let n="Please start the following nodes if you want to open consoles in tabs for them: ",o=0;e.forEach(r=>{if(r.console_type==="telnet")if(r.status==="started"){let a=this.router.url.split("/"),c=`/static/web-ui/${a[1]}/${a[2]}/${a[3]}/${a[4]}/nodes/${r.node_id}`;window.open(c)}else o++,n+=r.name+" "}),o>0&&this.toasterService.error(n)}static \u0275fac=function(n){return new(n||t)(ge(ut),ge(fe),ge(To))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var $p=(()=>{class t{minimizedWindowsSignal=me([]);minimizedWindows=this.minimizedWindowsSignal.asReadonly();minimizeWindow(e,n,o){let r=this.minimizedWindowsSignal();r.find(a=>a.id===e)||this.minimizedWindowsSignal.set([...r,{id:e,type:n,linkId:o}])}restoreWindow(e){let n=this.minimizedWindowsSignal();this.minimizedWindowsSignal.set(n.filter(o=>o.id!==e))}isMinimized(e){return!!this.minimizedWindowsSignal().find(n=>n.id===e)}toggleMinimize(e,n,o){this.isMinimized(e)?this.restoreWindow(e):this.minimizeWindow(e,n,o)}getMinimizedByType(e){return this.minimizedWindowsSignal().filter(n=>n.type===e)}clearAll(){this.minimizedWindowsSignal.set([])}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var MH=(t,i)=>e=>Ma(500).pipe(fn(()=>i.list(t)),yt(n=>n.find(o=>o.name===e.value)?{projectExist:!0}:null));var ja=(()=>{class t{get(e){var n=new RegExp(/[~`!#$%\^&*+=\[\]\\';,/{}|\\"<>\?]/);return n.test(e.value)?{invalidName:!0}:null}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var D1e=t=>({"is-invalid":t});function P1e(t,i){t&1&&(s(0,"mat-error"),d(1,"Project name is required"),l())}function I1e(t,i){t&1&&(s(0,"mat-error"),d(1,"Project name is incorrect"),l())}function A1e(t,i){t&1&&(s(0,"mat-error"),d(1,"Project with this name exists"),l())}var Qg=(()=>{class t{dialogRef=f(Pe);router=f(ut);projectService=f(Fi);toasterService=f(fe);formBuilder=f(jt);projectNameValidator=f(ja);cd=f(K);controller;projectNameForm;uuid;onAddProject=new ve;ngOnInit(){this.projectNameForm=this.formBuilder.group({projectName:new re(null,[be.required,this.projectNameValidator.get],[MH(this.controller,this.projectService)])})}get form(){return this.projectNameForm.controls}onAddClick(){this.projectNameForm.invalid||this.addProject()}onNoClick(){this.dialogRef.close()}addProject(){this.uuid=Ti(),this.projectService.add(this.controller,this.projectNameForm.controls.projectName.value,this.uuid).subscribe(e=>{this.dialogRef.close(),this.toasterService.success(`Project ${e.name} added`),this.router.navigate(["/controller",this.controller.id,"project",e.project_id])},e=>{this.toasterService.error("Cannot create new project"),console.log(e)})}onKeyDown(e){e.key==="Enter"&&this.onAddClick()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-add-blank-project-dialog"]],features:[hn([ja])],decls:13,vars:7,consts:[["mat-dialog-title",""],[1,"file-name-form",3,"formGroup"],[1,"file-name-form-field"],["matInput","","type","text","formControlName","projectName","placeholder","Please enter name",3,"keydown","ngClass"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",1,"add-project-button",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Create new project"),l(),s(2,"form",1)(3,"mat-form-field",2)(4,"input",3),v("keydown",function(a){return o.onKeyDown(a)}),l(),A(5,P1e,2,0,"mat-error"),A(6,I1e,2,0,"mat-error"),A(7,A1e,2,0,"mat-error"),l(),s(8,"div",4)(9,"button",5),v("click",function(){return o.onNoClick()}),d(10,"Cancel"),l(),s(11,"button",6),v("click",function(){return o.onAddClick()}),d(12," Add project "),l()()()),n&2&&(u(2),x("formGroup",o.projectNameForm),u(2),x("ngClass",ln(5,D1e,o.form.projectName==null?null:o.form.projectName.errors)),u(),O(o.form.projectName!=null&&o.form.projectName.touched&&(o.form.projectName!=null&&o.form.projectName.errors)&&(o.form.projectName!=null&&o.form.projectName.errors.required)?5:-1),u(),O(o.form.projectName!=null&&o.form.projectName.errors&&(o.form.projectName!=null&&o.form.projectName.errors.invalidName)?6:-1),u(),O(o.form.projectName!=null&&o.form.projectName.errors&&(o.form.projectName!=null&&o.form.projectName.errors.projectExist)?7:-1))},dependencies:[Z,Zi,nt,Ue,vt,mt,He,ct,pt,bt,Ce,Ve,Be,$,le,Me,ke,Ni,we,Te],styles:[".file-name-form[_ngcontent-%COMP%]{width:100%;padding:0 24px;box-sizing:border-box}.file-name-form-field[_ngcontent-%COMP%]{width:100%}.project-snackbar[_ngcontent-%COMP%]{background:var(--mat-sys-primary)}"],changeDetection:0})}return t})();var O1e=t=>({lightTheme:t}),ns=(()=>{class t{data;bottomSheetRef=f(gp);themeService=f(yi);message=me("");isLightThemeEnabled=me(!1);constructor(e){this.data=e}ngOnInit(){this.data&&this.data.message&&this.message.set(this.data.message),this.themeService.getActualTheme()==="light"?this.isLightThemeEnabled.set(!0):this.isLightThemeEnabled.set(!1)}onNoClick(){this.bottomSheetRef.dismiss(!1)}onYesClick(){this.bottomSheetRef.dismiss(!0)}static \u0275fac=function(n){return new(n||t)(st(lA))};static \u0275cmp=L({type:t,selectors:[["app-confirmation-bottomsheet"]],decls:8,vars:4,consts:[[1,"dialogWrapper",3,"ngClass"],[1,"title"],[1,"dialogActions"],["mat-button","",1,"cancelBtn",3,"click"],["mat-button","",1,"confirmBtn",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1),d(2),l(),s(3,"div",2)(4,"button",3),v("click",function(){return o.onNoClick()}),d(5,"No"),l(),s(6,"button",4),v("click",function(){return o.onYesClick()}),d(7,"Yes"),l()()()),n&2&&(x("ngClass",ln(2,O1e,o.isLightThemeEnabled())),u(2),U(o.message()))},dependencies:[Z,Zi,id,$,le],styles:[".dialogWrapper[_ngcontent-%COMP%]{background-color:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface);padding:var(--mat-sys-spacing, 16px) 24px;margin-bottom:-8px;display:flex;justify-content:space-between;align-items:center;gap:16px;border-radius:28px 28px 0 0}.title[_ngcontent-%COMP%]{flex:1;font-size:14px;font-weight:500;color:var(--mat-sys-on-surface)}.dialogActions[_ngcontent-%COMP%]{display:flex;gap:8px}.dialogActions[_ngcontent-%COMP%] .cancelBtn[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);border:1px solid var(--mat-sys-outline);padding:8px 16px;border-radius:20px;transition:all .2s cubic-bezier(.4,0,.2,1)}.dialogActions[_ngcontent-%COMP%] .cancelBtn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent);border-color:var(--mat-sys-on-surface-variant)}.dialogActions[_ngcontent-%COMP%] .confirmBtn[_ngcontent-%COMP%]{background-color:var(--mat-sys-error);color:var(--mat-sys-on-error);padding:8px 16px;border-radius:20px;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 6px color-mix(in srgb,var(--mat-sys-error) 25%,transparent)}.dialogActions[_ngcontent-%COMP%] .confirmBtn[_ngcontent-%COMP%]:hover{opacity:.9;transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-error) 35%,transparent)}.dialogActions[_ngcontent-%COMP%] .confirmBtn[_ngcontent-%COMP%]:active{transform:translateY(0)}"],changeDetection:0})}return t})();var Hl=(()=>{class t{get(e){return+e.value>=0?null:{negativeValue:!0}}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function TH(t,i){let n=!i?.manualCleanup?i?.injector?.get(mm)??f(mm):null,o=N1e(i?.equal),r;i?.requireSync?r=me({kind:0},{equal:o}):r=me({kind:1,value:i?.initialValue},{equal:o});let a,c=t.subscribe({next:m=>r.set({kind:1,value:m}),error:m=>{r.set({kind:2,error:m}),a?.()},complete:()=>{a?.()}});if(i?.requireSync&&r().kind===0)throw new vn(601,!1);return a=n?.onDestroy(c.unsubscribe.bind(c)),ri(()=>{let m=r();switch(m.kind){case 1:return m.value;case 2:throw m.error;case 0:throw new vn(601,!1)}},{equal:i?.equal})}function N1e(t=Object.is){return(i,e)=>i.kind===1&&e.kind===1&&t(i.value,e.value)}function MN(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var vh=MN();function NH(t){vh=t}var gh={exec:()=>null};function qi(t,i=""){let e=typeof t=="string"?t:t.source,n={replace:(o,r)=>{let a=typeof r=="string"?r:r.source;return a=a.replace(is.caret,"$1"),e=e.replace(o,a),n},getRegex:()=>new RegExp(e,i)};return n}var R1e=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),is={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}>`)},F1e=/^(?:[ \t]*(?:\n|$))+/,L1e=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,B1e=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,oC=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,V1e=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,kN=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,RH=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,FH=qi(RH).replace(/bull/g,kN).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),z1e=qi(RH).replace(/bull/g,kN).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),TN=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,j1e=/^[^\n]+/,EN=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,$1e=qi(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",EN).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),H1e=qi(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,kN).getRegex(),J2="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",DN=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,U1e=qi("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",DN).replace("tag",J2).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),LH=qi(TN).replace("hr",oC).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",J2).getRegex(),G1e=qi(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",LH).getRegex(),PN={blockquote:G1e,code:L1e,def:$1e,fences:B1e,heading:V1e,hr:oC,html:U1e,lheading:FH,list:H1e,newline:F1e,paragraph:LH,table:gh,text:j1e},EH=qi("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",oC).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",J2).getRegex(),W1e=tt(H({},PN),{lheading:z1e,table:EH,paragraph:qi(TN).replace("hr",oC).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",EH).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",J2).getRegex()}),q1e=tt(H({},PN),{html:qi(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",DN).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:gh,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:qi(TN).replace("hr",oC).replace("heading",` *#{1,6} *[^
|
||
]`).replace("lheading",FH).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()}),X1e=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Q1e=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,BH=/^( {2,}|\\)\n(?!\s*$)/,Y1e=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Yg=/[\p{P}\p{S}]/u,eM=/[\s\p{P}\p{S}]/u,IN=/[^\s\p{P}\p{S}]/u,K1e=qi(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,eM).getRegex(),VH=/(?!~)[\p{P}\p{S}]/u,Z1e=/(?!~)[\s\p{P}\p{S}]/u,J1e=/(?:[^\s\p{P}\p{S}]|~)/u,eye=qi(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",R1e?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),zH=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,tye=qi(zH,"u").replace(/punct/g,Yg).getRegex(),nye=qi(zH,"u").replace(/punct/g,VH).getRegex(),jH="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",iye=qi(jH,"gu").replace(/notPunctSpace/g,IN).replace(/punctSpace/g,eM).replace(/punct/g,Yg).getRegex(),oye=qi(jH,"gu").replace(/notPunctSpace/g,J1e).replace(/punctSpace/g,Z1e).replace(/punct/g,VH).getRegex(),rye=qi("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,IN).replace(/punctSpace/g,eM).replace(/punct/g,Yg).getRegex(),aye=qi(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,Yg).getRegex(),sye="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",lye=qi(sye,"gu").replace(/notPunctSpace/g,IN).replace(/punctSpace/g,eM).replace(/punct/g,Yg).getRegex(),cye=qi(/\\(punct)/,"gu").replace(/punct/g,Yg).getRegex(),dye=qi(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[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])?)+(?![-_])/).getRegex(),mye=qi(DN).replace("(?:-->|$)","-->").getRegex(),pye=qi("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",mye).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),K2=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,uye=qi(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",K2).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),$H=qi(/^!?\[(label)\]\[(ref)\]/).replace("label",K2).replace("ref",EN).getRegex(),HH=qi(/^!?\[(ref)\](?:\[\])?/).replace("ref",EN).getRegex(),hye=qi("reflink|nolink(?!\\()","g").replace("reflink",$H).replace("nolink",HH).getRegex(),DH=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,AN={_backpedal:gh,anyPunctuation:cye,autolink:dye,blockSkip:eye,br:BH,code:Q1e,del:gh,delLDelim:gh,delRDelim:gh,emStrongLDelim:tye,emStrongRDelimAst:iye,emStrongRDelimUnd:rye,escape:X1e,link:uye,nolink:HH,punctuation:K1e,reflink:$H,reflinkSearch:hye,tag:pye,text:Y1e,url:gh},fye=tt(H({},AN),{link:qi(/^!?\[(label)\]\((.*?)\)/).replace("label",K2).getRegex(),reflink:qi(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",K2).getRegex()}),yN=tt(H({},AN),{emStrongRDelimAst:oye,emStrongLDelim:nye,delLDelim:aye,delRDelim:lye,url:qi(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",DH).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:qi(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",DH).getRegex()}),gye=tt(H({},yN),{br:qi(BH).replace("{2,}","*").getRegex(),text:qi(yN.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()}),Y2={normal:PN,gfm:W1e,pedantic:q1e},tC={normal:AN,gfm:yN,breaks:gye,pedantic:fye},_ye={"&":"&","<":"<",">":">",'"':""","'":"'"},PH=t=>_ye[t];function gd(t,i){if(i){if(is.escapeTest.test(t))return t.replace(is.escapeReplace,PH)}else if(is.escapeTestNoEncode.test(t))return t.replace(is.escapeReplaceNoEncode,PH);return t}function IH(t){try{t=encodeURI(t).replace(is.percentDecode,"%")}catch{return null}return t}function AH(t,i){let e=t.replace(is.findPipe,(r,a,c)=>{let m=!1,p=a;for(;--p>=0&&c[p]==="\\";)m=!m;return m?"|":" |"}),n=e.split(is.splitPipe),o=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),i)if(n.length>i)n.splice(i);else for(;n.length<i;)n.push("");for(;o<n.length;o++)n[o]=n[o].trim().replace(is.slashPipe,"|");return n}function nC(t,i,e){let n=t.length;if(n===0)return"";let o=0;for(;o<n;){let r=t.charAt(n-o-1);if(r===i&&!e)o++;else if(r!==i&&e)o++;else break}return t.slice(0,n-o)}function vye(t,i){if(t.indexOf(i[1])===-1)return-1;let e=0;for(let n=0;n<t.length;n++)if(t[n]==="\\")n++;else if(t[n]===i[0])e++;else if(t[n]===i[1]&&(e--,e<0))return n;return e>0?-2:-1}function bye(t,i=0){let e=i,n="";for(let o of t)if(o===" "){let r=4-e%4;n+=" ".repeat(r),e+=r}else n+=o,e++;return n}function OH(t,i,e,n,o){let r=i.href,a=i.title||null,c=t[1].replace(o.other.outputLinkReplace,"$1");n.state.inLink=!0;let m={type:t[0].charAt(0)==="!"?"image":"link",raw:e,href:r,title:a,text:c,tokens:n.inlineTokens(c)};return n.state.inLink=!1,m}function Cye(t,i,e){let n=t.match(e.other.indentCodeCompensation);if(n===null)return i;let o=n[1];return i.split(`
|
||
`).map(r=>{let a=r.match(e.other.beginningSpace);if(a===null)return r;let[c]=a;return c.length>=o.length?r.slice(o.length):r}).join(`
|
||
`)}var Z2=class{options;rules;lexer;constructor(t){this.options=t||vh}space(t){let i=this.rules.block.newline.exec(t);if(i&&i[0].length>0)return{type:"space",raw:i[0]}}code(t){let i=this.rules.block.code.exec(t);if(i){let e=i[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:i[0],codeBlockStyle:"indented",text:this.options.pedantic?e:nC(e,`
|
||
`)}}}fences(t){let i=this.rules.block.fences.exec(t);if(i){let e=i[0],n=Cye(e,i[3]||"",this.rules);return{type:"code",raw:e,lang:i[2]?i[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):i[2],text:n}}}heading(t){let i=this.rules.block.heading.exec(t);if(i){let e=i[2].trim();if(this.rules.other.endingHash.test(e)){let n=nC(e,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(e=n.trim())}return{type:"heading",raw:i[0],depth:i[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(t){let i=this.rules.block.hr.exec(t);if(i)return{type:"hr",raw:nC(i[0],`
|
||
`)}}blockquote(t){let i=this.rules.block.blockquote.exec(t);if(i){let e=nC(i[0],`
|
||
`).split(`
|
||
`),n="",o="",r=[];for(;e.length>0;){let a=!1,c=[],m;for(m=0;m<e.length;m++)if(this.rules.other.blockquoteStart.test(e[m]))c.push(e[m]),a=!0;else if(!a)c.push(e[m]);else break;e=e.slice(m);let p=c.join(`
|
||
`),h=p.replace(this.rules.other.blockquoteSetextReplace,`
|
||
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");n=n?`${n}
|
||
${p}`:p,o=o?`${o}
|
||
${h}`:h;let g=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(h,r,!0),this.lexer.state.top=g,e.length===0)break;let M=r.at(-1);if(M?.type==="code")break;if(M?.type==="blockquote"){let C=M,_=C.raw+`
|
||
`+e.join(`
|
||
`),w=this.blockquote(_);r[r.length-1]=w,n=n.substring(0,n.length-C.raw.length)+w.raw,o=o.substring(0,o.length-C.text.length)+w.text;break}else if(M?.type==="list"){let C=M,_=C.raw+`
|
||
`+e.join(`
|
||
`),w=this.list(_);r[r.length-1]=w,n=n.substring(0,n.length-M.raw.length)+w.raw,o=o.substring(0,o.length-C.raw.length)+w.raw,e=_.substring(r.at(-1).raw.length).split(`
|
||
`);continue}}return{type:"blockquote",raw:n,tokens:r,text:o}}}list(t){let i=this.rules.block.list.exec(t);if(i){let e=i[1].trim(),n=e.length>1,o={type:"list",raw:"",ordered:n,start:n?+e.slice(0,-1):"",loose:!1,items:[]};e=n?`\\d{1,9}\\${e.slice(-1)}`:`\\${e}`,this.options.pedantic&&(e=n?e:"[*+-]");let r=this.rules.other.listItemRegex(e),a=!1;for(;t;){let m=!1,p="",h="";if(!(i=r.exec(t))||this.rules.block.hr.test(t))break;p=i[0],t=t.substring(p.length);let g=bye(i[2].split(`
|
||
`,1)[0],i[1].length),M=t.split(`
|
||
`,1)[0],C=!g.trim(),_=0;if(this.options.pedantic?(_=2,h=g.trimStart()):C?_=i[1].length+1:(_=g.search(this.rules.other.nonSpaceChar),_=_>4?1:_,h=g.slice(_),_+=i[1].length),C&&this.rules.other.blankLine.test(M)&&(p+=M+`
|
||
`,t=t.substring(M.length+1),m=!0),!m){let w=this.rules.other.nextBulletRegex(_),S=this.rules.other.hrRegex(_),y=this.rules.other.fencesBeginRegex(_),k=this.rules.other.headingBeginRegex(_),I=this.rules.other.htmlBeginRegex(_),E=this.rules.other.blockquoteBeginRegex(_);for(;t;){let N=t.split(`
|
||
`,1)[0],T;if(M=N,this.options.pedantic?(M=M.replace(this.rules.other.listReplaceNesting," "),T=M):T=M.replace(this.rules.other.tabCharGlobal," "),y.test(M)||k.test(M)||I.test(M)||E.test(M)||w.test(M)||S.test(M))break;if(T.search(this.rules.other.nonSpaceChar)>=_||!M.trim())h+=`
|
||
`+T.slice(_);else{if(C||g.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||y.test(g)||k.test(g)||S.test(g))break;h+=`
|
||
`+M}C=!M.trim(),p+=N+`
|
||
`,t=t.substring(N.length+1),g=T.slice(_)}}o.loose||(a?o.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(a=!0)),o.items.push({type:"list_item",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(h),loose:!1,text:h,tokens:[]}),o.raw+=p}let c=o.items.at(-1);if(c)c.raw=c.raw.trimEnd(),c.text=c.text.trimEnd();else return;o.raw=o.raw.trimEnd();for(let m of o.items){if(this.lexer.state.top=!1,m.tokens=this.lexer.blockTokens(m.text,[]),m.task){if(m.text=m.text.replace(this.rules.other.listReplaceTask,""),m.tokens[0]?.type==="text"||m.tokens[0]?.type==="paragraph"){m.tokens[0].raw=m.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),m.tokens[0].text=m.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}}let p=this.rules.other.listTaskCheckbox.exec(m.raw);if(p){let h={type:"checkbox",raw:p[0]+" ",checked:p[0]!=="[ ]"};m.checked=h.checked,o.loose?m.tokens[0]&&["paragraph","text"].includes(m.tokens[0].type)&&"tokens"in m.tokens[0]&&m.tokens[0].tokens?(m.tokens[0].raw=h.raw+m.tokens[0].raw,m.tokens[0].text=h.raw+m.tokens[0].text,m.tokens[0].tokens.unshift(h)):m.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):m.tokens.unshift(h)}}if(!o.loose){let p=m.tokens.filter(g=>g.type==="space"),h=p.length>0&&p.some(g=>this.rules.other.anyLine.test(g.raw));o.loose=h}}if(o.loose)for(let m of o.items){m.loose=!0;for(let p of m.tokens)p.type==="text"&&(p.type="paragraph")}return o}}html(t){let i=this.rules.block.html.exec(t);if(i)return{type:"html",block:!0,raw:i[0],pre:i[1]==="pre"||i[1]==="script"||i[1]==="style",text:i[0]}}def(t){let i=this.rules.block.def.exec(t);if(i){let e=i[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),n=i[2]?i[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",o=i[3]?i[3].substring(1,i[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):i[3];return{type:"def",tag:e,raw:i[0],href:n,title:o}}}table(t){let i=this.rules.block.table.exec(t);if(!i||!this.rules.other.tableDelimiter.test(i[2]))return;let e=AH(i[1]),n=i[2].replace(this.rules.other.tableAlignChars,"").split("|"),o=i[3]?.trim()?i[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
||
`):[],r={type:"table",raw:i[0],header:[],align:[],rows:[]};if(e.length===n.length){for(let a of n)this.rules.other.tableAlignRight.test(a)?r.align.push("right"):this.rules.other.tableAlignCenter.test(a)?r.align.push("center"):this.rules.other.tableAlignLeft.test(a)?r.align.push("left"):r.align.push(null);for(let a=0;a<e.length;a++)r.header.push({text:e[a],tokens:this.lexer.inline(e[a]),header:!0,align:r.align[a]});for(let a of o)r.rows.push(AH(a,r.header.length).map((c,m)=>({text:c,tokens:this.lexer.inline(c),header:!1,align:r.align[m]})));return r}}lheading(t){let i=this.rules.block.lheading.exec(t);if(i){let e=i[1].trim();return{type:"heading",raw:i[0],depth:i[2].charAt(0)==="="?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(t){let i=this.rules.block.paragraph.exec(t);if(i){let e=i[1].charAt(i[1].length-1)===`
|
||
`?i[1].slice(0,-1):i[1];return{type:"paragraph",raw:i[0],text:e,tokens:this.lexer.inline(e)}}}text(t){let i=this.rules.block.text.exec(t);if(i)return{type:"text",raw:i[0],text:i[0],tokens:this.lexer.inline(i[0])}}escape(t){let i=this.rules.inline.escape.exec(t);if(i)return{type:"escape",raw:i[0],text:i[1]}}tag(t){let i=this.rules.inline.tag.exec(t);if(i)return!this.lexer.state.inLink&&this.rules.other.startATag.test(i[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(i[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(i[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(i[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:i[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:i[0]}}link(t){let i=this.rules.inline.link.exec(t);if(i){let e=i[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let r=nC(e.slice(0,-1),"\\");if((e.length-r.length)%2===0)return}else{let r=vye(i[2],"()");if(r===-2)return;if(r>-1){let a=(i[0].indexOf("!")===0?5:4)+i[1].length+r;i[2]=i[2].substring(0,r),i[0]=i[0].substring(0,a).trim(),i[3]=""}}let n=i[2],o="";if(this.options.pedantic){let r=this.rules.other.pedanticHrefTitle.exec(n);r&&(n=r[1],o=r[3])}else o=i[3]?i[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n=n.slice(1):n=n.slice(1,-1)),OH(i,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:o&&o.replace(this.rules.inline.anyPunctuation,"$1")},i[0],this.lexer,this.rules)}}reflink(t,i){let e;if((e=this.rules.inline.reflink.exec(t))||(e=this.rules.inline.nolink.exec(t))){let n=(e[2]||e[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=i[n.toLowerCase()];if(!o){let r=e[0].charAt(0);return{type:"text",raw:r,text:r}}return OH(e,o,e[0],this.lexer,this.rules)}}emStrong(t,i,e=""){let n=this.rules.inline.emStrongLDelim.exec(t);if(!(!n||!n[1]&&!n[2]&&!n[3]&&!n[4]||n[4]&&e.match(this.rules.other.unicodeAlphaNumeric))&&(!(n[1]||n[3])||!e||this.rules.inline.punctuation.exec(e))){let o=[...n[0]].length-1,r,a,c=o,m=0,p=n[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(p.lastIndex=0,i=i.slice(-1*t.length+o);(n=p.exec(i))!=null;){if(r=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!r)continue;if(a=[...r].length,n[3]||n[4]){c+=a;continue}else if((n[5]||n[6])&&o%3&&!((o+a)%3)){m+=a;continue}if(c-=a,c>0)continue;a=Math.min(a,a+c+m);let h=[...n[0]][0].length,g=t.slice(0,o+n.index+h+a);if(Math.min(o,a)%2){let C=g.slice(1,-1);return{type:"em",raw:g,text:C,tokens:this.lexer.inlineTokens(C)}}let M=g.slice(2,-2);return{type:"strong",raw:g,text:M,tokens:this.lexer.inlineTokens(M)}}}}codespan(t){let i=this.rules.inline.code.exec(t);if(i){let e=i[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(e),o=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&o&&(e=e.substring(1,e.length-1)),{type:"codespan",raw:i[0],text:e}}}br(t){let i=this.rules.inline.br.exec(t);if(i)return{type:"br",raw:i[0]}}del(t,i,e=""){let n=this.rules.inline.delLDelim.exec(t);if(n&&(!n[1]||!e||this.rules.inline.punctuation.exec(e))){let o=[...n[0]].length-1,r,a,c=o,m=this.rules.inline.delRDelim;for(m.lastIndex=0,i=i.slice(-1*t.length+o);(n=m.exec(i))!=null;){if(r=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!r||(a=[...r].length,a!==o))continue;if(n[3]||n[4]){c+=a;continue}if(c-=a,c>0)continue;a=Math.min(a,a+c);let p=[...n[0]][0].length,h=t.slice(0,o+n.index+p+a),g=h.slice(o,-o);return{type:"del",raw:h,text:g,tokens:this.lexer.inlineTokens(g)}}}}autolink(t){let i=this.rules.inline.autolink.exec(t);if(i){let e,n;return i[2]==="@"?(e=i[1],n="mailto:"+e):(e=i[1],n=e),{type:"link",raw:i[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(t){let i;if(i=this.rules.inline.url.exec(t)){let e,n;if(i[2]==="@")e=i[0],n="mailto:"+e;else{let o;do o=i[0],i[0]=this.rules.inline._backpedal.exec(i[0])?.[0]??"";while(o!==i[0]);e=i[0],i[1]==="www."?n="http://"+i[0]:n=i[0]}return{type:"link",raw:i[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(t){let i=this.rules.inline.text.exec(t);if(i){let e=this.lexer.state.inRawBlock;return{type:"text",raw:i[0],text:i[0],escaped:e}}}},vc=class SN{tokens;options;state;inlineQueue;tokenizer;constructor(i){this.tokens=[],this.tokens.links=Object.create(null),this.options=i||vh,this.options.tokenizer=this.options.tokenizer||new Z2,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let e={other:is,block:Y2.normal,inline:tC.normal};this.options.pedantic?(e.block=Y2.pedantic,e.inline=tC.pedantic):this.options.gfm&&(e.block=Y2.gfm,this.options.breaks?e.inline=tC.breaks:e.inline=tC.gfm),this.tokenizer.rules=e}static get rules(){return{block:Y2,inline:tC}}static lex(i,e){return new SN(e).lex(i)}static lexInline(i,e){return new SN(e).inlineTokens(i)}lex(i){i=i.replace(is.carriageReturn,`
|
||
`),this.blockTokens(i,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let n=this.inlineQueue[e];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(i,e=[],n=!1){for(this.tokenizer.lexer=this,this.options.pedantic&&(i=i.replace(is.tabCharGlobal," ").replace(is.spaceLine,""));i;){let o;if(this.options.extensions?.block?.some(a=>(o=a.call({lexer:this},i,e))?(i=i.substring(o.raw.length),e.push(o),!0):!1))continue;if(o=this.tokenizer.space(i)){i=i.substring(o.raw.length);let a=e.at(-1);o.raw.length===1&&a!==void 0?a.raw+=`
|
||
`:e.push(o);continue}if(o=this.tokenizer.code(i)){i=i.substring(o.raw.length);let a=e.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
||
`)?"":`
|
||
`)+o.raw,a.text+=`
|
||
`+o.text,this.inlineQueue.at(-1).src=a.text):e.push(o);continue}if(o=this.tokenizer.fences(i)){i=i.substring(o.raw.length),e.push(o);continue}if(o=this.tokenizer.heading(i)){i=i.substring(o.raw.length),e.push(o);continue}if(o=this.tokenizer.hr(i)){i=i.substring(o.raw.length),e.push(o);continue}if(o=this.tokenizer.blockquote(i)){i=i.substring(o.raw.length),e.push(o);continue}if(o=this.tokenizer.list(i)){i=i.substring(o.raw.length),e.push(o);continue}if(o=this.tokenizer.html(i)){i=i.substring(o.raw.length),e.push(o);continue}if(o=this.tokenizer.def(i)){i=i.substring(o.raw.length);let a=e.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
||
`)?"":`
|
||
`)+o.raw,a.text+=`
|
||
`+o.raw,this.inlineQueue.at(-1).src=a.text):this.tokens.links[o.tag]||(this.tokens.links[o.tag]={href:o.href,title:o.title},e.push(o));continue}if(o=this.tokenizer.table(i)){i=i.substring(o.raw.length),e.push(o);continue}if(o=this.tokenizer.lheading(i)){i=i.substring(o.raw.length),e.push(o);continue}let r=i;if(this.options.extensions?.startBlock){let a=1/0,c=i.slice(1),m;this.options.extensions.startBlock.forEach(p=>{m=p.call({lexer:this},c),typeof m=="number"&&m>=0&&(a=Math.min(a,m))}),a<1/0&&a>=0&&(r=i.substring(0,a+1))}if(this.state.top&&(o=this.tokenizer.paragraph(r))){let a=e.at(-1);n&&a?.type==="paragraph"?(a.raw+=(a.raw.endsWith(`
|
||
`)?"":`
|
||
`)+o.raw,a.text+=`
|
||
`+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):e.push(o),n=r.length!==i.length,i=i.substring(o.raw.length);continue}if(o=this.tokenizer.text(i)){i=i.substring(o.raw.length);let a=e.at(-1);a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
||
`)?"":`
|
||
`)+o.raw,a.text+=`
|
||
`+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):e.push(o);continue}if(i){let a="Infinite loop on byte: "+i.charCodeAt(0);if(this.options.silent){console.error(a);break}else throw new Error(a)}}return this.state.top=!0,e}inline(i,e=[]){return this.inlineQueue.push({src:i,tokens:e}),e}inlineTokens(i,e=[]){this.tokenizer.lexer=this;let n=i,o=null;if(this.tokens.links){let m=Object.keys(this.tokens.links);if(m.length>0)for(;(o=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)m.includes(o[0].slice(o[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,o.index)+"["+"a".repeat(o[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(o=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,o.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let r;for(;(o=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)r=o[2]?o[2].length:0,n=n.slice(0,o.index+r)+"["+"a".repeat(o[0].length-r-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,c="";for(;i;){a||(c=""),a=!1;let m;if(this.options.extensions?.inline?.some(h=>(m=h.call({lexer:this},i,e))?(i=i.substring(m.raw.length),e.push(m),!0):!1))continue;if(m=this.tokenizer.escape(i)){i=i.substring(m.raw.length),e.push(m);continue}if(m=this.tokenizer.tag(i)){i=i.substring(m.raw.length),e.push(m);continue}if(m=this.tokenizer.link(i)){i=i.substring(m.raw.length),e.push(m);continue}if(m=this.tokenizer.reflink(i,this.tokens.links)){i=i.substring(m.raw.length);let h=e.at(-1);m.type==="text"&&h?.type==="text"?(h.raw+=m.raw,h.text+=m.text):e.push(m);continue}if(m=this.tokenizer.emStrong(i,n,c)){i=i.substring(m.raw.length),e.push(m);continue}if(m=this.tokenizer.codespan(i)){i=i.substring(m.raw.length),e.push(m);continue}if(m=this.tokenizer.br(i)){i=i.substring(m.raw.length),e.push(m);continue}if(m=this.tokenizer.del(i,n,c)){i=i.substring(m.raw.length),e.push(m);continue}if(m=this.tokenizer.autolink(i)){i=i.substring(m.raw.length),e.push(m);continue}if(!this.state.inLink&&(m=this.tokenizer.url(i))){i=i.substring(m.raw.length),e.push(m);continue}let p=i;if(this.options.extensions?.startInline){let h=1/0,g=i.slice(1),M;this.options.extensions.startInline.forEach(C=>{M=C.call({lexer:this},g),typeof M=="number"&&M>=0&&(h=Math.min(h,M))}),h<1/0&&h>=0&&(p=i.substring(0,h+1))}if(m=this.tokenizer.inlineText(p)){i=i.substring(m.raw.length),m.raw.slice(-1)!=="_"&&(c=m.raw.slice(-1)),a=!0;let h=e.at(-1);h?.type==="text"?(h.raw+=m.raw,h.text+=m.text):e.push(m);continue}if(i){let h="Infinite loop on byte: "+i.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return e}},Hp=class{options;parser;constructor(t){this.options=t||vh}space(t){return""}code({text:t,lang:i,escaped:e}){let n=(i||"").match(is.notSpaceStart)?.[0],o=t.replace(is.endingNewline,"")+`
|
||
`;return n?'<pre><code class="language-'+gd(n)+'">'+(e?o:gd(o,!0))+`</code></pre>
|
||
`:"<pre><code>"+(e?o:gd(o,!0))+`</code></pre>
|
||
`}blockquote({tokens:t}){return`<blockquote>
|
||
${this.parser.parse(t)}</blockquote>
|
||
`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:i}){return`<h${i}>${this.parser.parseInline(t)}</h${i}>
|
||
`}hr(t){return`<hr>
|
||
`}list(t){let i=t.ordered,e=t.start,n="";for(let a=0;a<t.items.length;a++){let c=t.items[a];n+=this.listitem(c)}let o=i?"ol":"ul",r=i&&e!==1?' start="'+e+'"':"";return"<"+o+r+`>
|
||
`+n+"</"+o+`>
|
||
`}listitem(t){return`<li>${this.parser.parse(t.tokens)}</li>
|
||
`}checkbox({checked:t}){return"<input "+(t?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:t}){return`<p>${this.parser.parseInline(t)}</p>
|
||
`}table(t){let i="",e="";for(let o=0;o<t.header.length;o++)e+=this.tablecell(t.header[o]);i+=this.tablerow({text:e});let n="";for(let o=0;o<t.rows.length;o++){let r=t.rows[o];e="";for(let a=0;a<r.length;a++)e+=this.tablecell(r[a]);n+=this.tablerow({text:e})}return n&&(n=`<tbody>${n}</tbody>`),`<table>
|
||
<thead>
|
||
`+i+`</thead>
|
||
`+n+`</table>
|
||
`}tablerow({text:t}){return`<tr>
|
||
${t}</tr>
|
||
`}tablecell(t){let i=this.parser.parseInline(t.tokens),e=t.header?"th":"td";return(t.align?`<${e} align="${t.align}">`:`<${e}>`)+i+`</${e}>
|
||
`}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${gd(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:i,tokens:e}){let n=this.parser.parseInline(e),o=IH(t);if(o===null)return n;t=o;let r='<a href="'+t+'"';return i&&(r+=' title="'+gd(i)+'"'),r+=">"+n+"</a>",r}image({href:t,title:i,text:e,tokens:n}){n&&(e=this.parser.parseInline(n,this.parser.textRenderer));let o=IH(t);if(o===null)return gd(e);t=o;let r=`<img src="${t}" alt="${gd(e)}"`;return i&&(r+=` title="${gd(i)}"`),r+=">",r}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:gd(t.text)}},ON=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}checkbox({raw:t}){return t}},bc=class wN{options;renderer;textRenderer;constructor(i){this.options=i||vh,this.options.renderer=this.options.renderer||new Hp,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new ON}static parse(i,e){return new wN(e).parse(i)}static parseInline(i,e){return new wN(e).parseInline(i)}parse(i){this.renderer.parser=this;let e="";for(let n=0;n<i.length;n++){let o=i[n];if(this.options.extensions?.renderers?.[o.type]){let a=o,c=this.options.extensions.renderers[a.type].call({parser:this},a);if(c!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(a.type)){e+=c||"";continue}}let r=o;switch(r.type){case"space":{e+=this.renderer.space(r);break}case"hr":{e+=this.renderer.hr(r);break}case"heading":{e+=this.renderer.heading(r);break}case"code":{e+=this.renderer.code(r);break}case"table":{e+=this.renderer.table(r);break}case"blockquote":{e+=this.renderer.blockquote(r);break}case"list":{e+=this.renderer.list(r);break}case"checkbox":{e+=this.renderer.checkbox(r);break}case"html":{e+=this.renderer.html(r);break}case"def":{e+=this.renderer.def(r);break}case"paragraph":{e+=this.renderer.paragraph(r);break}case"text":{e+=this.renderer.text(r);break}default:{let a='Token with "'+r.type+'" type was not found.';if(this.options.silent)return console.error(a),"";throw new Error(a)}}}return e}parseInline(i,e=this.renderer){this.renderer.parser=this;let n="";for(let o=0;o<i.length;o++){let r=i[o];if(this.options.extensions?.renderers?.[r.type]){let c=this.options.extensions.renderers[r.type].call({parser:this},r);if(c!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(r.type)){n+=c||"";continue}}let a=r;switch(a.type){case"escape":{n+=e.text(a);break}case"html":{n+=e.html(a);break}case"link":{n+=e.link(a);break}case"image":{n+=e.image(a);break}case"checkbox":{n+=e.checkbox(a);break}case"strong":{n+=e.strong(a);break}case"em":{n+=e.em(a);break}case"codespan":{n+=e.codespan(a);break}case"br":{n+=e.br(a);break}case"del":{n+=e.del(a);break}case"text":{n+=e.text(a);break}default:{let c='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return n}},iC=class{options;block;constructor(t){this.options=t||vh}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}emStrongMask(t){return t}provideLexer(){return this.block?vc.lex:vc.lexInline}provideParser(){return this.block?bc.parse:bc.parseInline}},xye=class{defaults=MN();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=bc;Renderer=Hp;TextRenderer=ON;Lexer=vc;Tokenizer=Z2;Hooks=iC;constructor(...t){this.use(...t)}walkTokens(t,i){let e=[];for(let n of t)switch(e=e.concat(i.call(this,n)),n.type){case"table":{let o=n;for(let r of o.header)e=e.concat(this.walkTokens(r.tokens,i));for(let r of o.rows)for(let a of r)e=e.concat(this.walkTokens(a.tokens,i));break}case"list":{let o=n;e=e.concat(this.walkTokens(o.items,i));break}default:{let o=n;this.defaults.extensions?.childTokens?.[o.type]?this.defaults.extensions.childTokens[o.type].forEach(r=>{let a=o[r].flat(1/0);e=e.concat(this.walkTokens(a,i))}):o.tokens&&(e=e.concat(this.walkTokens(o.tokens,i)))}}return e}use(...t){let i=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(e=>{let n=H({},e);if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(o=>{if(!o.name)throw new Error("extension name required");if("renderer"in o){let r=i.renderers[o.name];r?i.renderers[o.name]=function(...a){let c=o.renderer.apply(this,a);return c===!1&&(c=r.apply(this,a)),c}:i.renderers[o.name]=o.renderer}if("tokenizer"in o){if(!o.level||o.level!=="block"&&o.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=i[o.level];r?r.unshift(o.tokenizer):i[o.level]=[o.tokenizer],o.start&&(o.level==="block"?i.startBlock?i.startBlock.push(o.start):i.startBlock=[o.start]:o.level==="inline"&&(i.startInline?i.startInline.push(o.start):i.startInline=[o.start]))}"childTokens"in o&&o.childTokens&&(i.childTokens[o.name]=o.childTokens)}),n.extensions=i),e.renderer){let o=this.defaults.renderer||new Hp(this.defaults);for(let r in e.renderer){if(!(r in o))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let a=r,c=e.renderer[a],m=o[a];o[a]=(...p)=>{let h=c.apply(o,p);return h===!1&&(h=m.apply(o,p)),h||""}}n.renderer=o}if(e.tokenizer){let o=this.defaults.tokenizer||new Z2(this.defaults);for(let r in e.tokenizer){if(!(r in o))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let a=r,c=e.tokenizer[a],m=o[a];o[a]=(...p)=>{let h=c.apply(o,p);return h===!1&&(h=m.apply(o,p)),h}}n.tokenizer=o}if(e.hooks){let o=this.defaults.hooks||new iC;for(let r in e.hooks){if(!(r in o))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let a=r,c=e.hooks[a],m=o[a];iC.passThroughHooks.has(r)?o[a]=p=>{if(this.defaults.async&&iC.passThroughHooksRespectAsync.has(r))return(async()=>{let g=await c.call(o,p);return m.call(o,g)})();let h=c.call(o,p);return m.call(o,h)}:o[a]=(...p)=>{if(this.defaults.async)return(async()=>{let g=await c.apply(o,p);return g===!1&&(g=await m.apply(o,p)),g})();let h=c.apply(o,p);return h===!1&&(h=m.apply(o,p)),h}}n.hooks=o}if(e.walkTokens){let o=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(a){let c=[];return c.push(r.call(this,a)),o&&(c=c.concat(o.call(this,a))),c}}this.defaults=H(H({},this.defaults),n)}),this}setOptions(t){return this.defaults=H(H({},this.defaults),t),this}lexer(t,i){return vc.lex(t,i??this.defaults)}parser(t,i){return bc.parse(t,i??this.defaults)}parseMarkdown(t){return(i,e)=>{let n=H({},e),o=H(H({},this.defaults),n),r=this.onError(!!o.silent,!!o.async);if(this.defaults.async===!0&&n.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof i>"u"||i===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof i!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(i)+", string expected"));if(o.hooks&&(o.hooks.options=o,o.hooks.block=t),o.async)return(async()=>{let a=o.hooks?await o.hooks.preprocess(i):i,c=await(o.hooks?await o.hooks.provideLexer():t?vc.lex:vc.lexInline)(a,o),m=o.hooks?await o.hooks.processAllTokens(c):c;o.walkTokens&&await Promise.all(this.walkTokens(m,o.walkTokens));let p=await(o.hooks?await o.hooks.provideParser():t?bc.parse:bc.parseInline)(m,o);return o.hooks?await o.hooks.postprocess(p):p})().catch(r);try{o.hooks&&(i=o.hooks.preprocess(i));let a=(o.hooks?o.hooks.provideLexer():t?vc.lex:vc.lexInline)(i,o);o.hooks&&(a=o.hooks.processAllTokens(a)),o.walkTokens&&this.walkTokens(a,o.walkTokens);let c=(o.hooks?o.hooks.provideParser():t?bc.parse:bc.parseInline)(a,o);return o.hooks&&(c=o.hooks.postprocess(c)),c}catch(a){return r(a)}}}onError(t,i){return e=>{if(e.message+=`
|
||
Please report this to https://github.com/markedjs/marked.`,t){let n="<p>An error occurred:</p><pre>"+gd(e.message+"",!0)+"</pre>";return i?Promise.resolve(n):n}if(i)return Promise.reject(e);throw e}}},_h=new xye;function ji(t,i){return _h.parse(t,i)}ji.options=ji.setOptions=function(t){return _h.setOptions(t),ji.defaults=_h.defaults,NH(ji.defaults),ji};ji.getDefaults=MN;ji.defaults=vh;ji.use=function(...t){return _h.use(...t),ji.defaults=_h.defaults,NH(ji.defaults),ji};ji.walkTokens=function(t,i){return _h.walkTokens(t,i)};ji.parseInline=_h.parseInline;ji.Parser=bc;ji.parser=bc.parse;ji.Renderer=Hp;ji.TextRenderer=ON;ji.Lexer=vc;ji.lexer=vc.lex;ji.Tokenizer=Z2;ji.Hooks=iC;ji.parse=ji;var X1t=ji.options,Q1t=ji.setOptions,Y1t=ji.use,K1t=ji.walkTokens,Z1t=ji.parseInline;var J1t=bc.parse,eyt=vc.lex;var yye=["*"],Sye="Copy",wye="Copied",Mye=(()=>{class t{constructor(){this._buttonClick$=new Le,this.copied=TH(this._buttonClick$.pipe(fn(()=>Dn(xt(!0),Ma(3e3).pipe(f5(!1)))),V_(),Kp(1))),this.copiedText=ri(()=>this.copied()?wye:Sye)}onCopyToClipboardClick(){this._buttonClick$.next()}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275cmp=L({type:t,selectors:[["markdown-clipboard"]],decls:2,vars:3,consts:[[1,"markdown-clipboard-button",3,"click"]],template:function(n,o){n&1&&(_o(0,"button",0),MC("click",function(){return o.onCopyToClipboardClick()}),d(1),wo()),n&2&&(je("copied",o.copied()),u(),U(o.copiedText()))},encapsulation:2,changeDetection:0})}}return t})(),kye=new kt("CLIPBOARD_OPTIONS");var Tye=new kt("MARKED_EXTENSIONS"),Eye=new kt("MARKED_OPTIONS"),Dye=new kt("MERMAID_OPTIONS"),Pye=new kt("SANITIZE");function Iye(t){return typeof t=="function"}var Aye="[ngx-markdown] When using the `emoji` attribute you *have to* include Emoji-Toolkit files to `angular.json` or use imports. See README for more information",Oye="[ngx-markdown] When using the `katex` attribute you *have to* include KaTeX files to `angular.json` or use imports. See README for more information",Nye="[ngx-markdown] When using the `mermaid` attribute you *have to* include Mermaid files to `angular.json` or use imports. See README for more information",Rye="[ngx-markdown] When using the `clipboard` attribute you *have to* include Clipboard files to `angular.json` or use imports. See README for more information",Fye="[ngx-markdown] When using the `clipboard` attribute you *have to* provide the `viewContainerRef` parameter to `MarkdownService.render()` function",Lye="[ngx-markdown] When using the `src` attribute you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information";var UH=(()=>{class t{get options(){return this._options}set options(e){this._options=H(H({},this.DEFAULT_MARKED_OPTIONS),e)}get renderer(){return this.options.renderer}set renderer(e){this.options.renderer=e}constructor(){this.clipboardOptions=f(kye,{optional:!0}),this.extensions=f(Tye,{optional:!0}),this.http=f(os,{optional:!0}),this.mermaidOptions=f(Dye,{optional:!0}),this.platform=f(wh),this.sanitize=f(Pye,{optional:!0}),this.sanitizer=f(lr),this.DEFAULT_MARKED_OPTIONS={renderer:new Hp},this.DEFAULT_KATEX_OPTIONS={delimiters:[{left:"$$",right:"$$",display:!0},{left:"$",right:"$",display:!1},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}]},this.DEFAULT_MERMAID_OPTIONS={startOnLoad:!1},this.DEFAULT_CLIPBOARD_OPTIONS={buttonComponent:void 0},this.DEFAULT_PARSE_OPTIONS={decodeHtml:!1,inline:!1,emoji:!1,mermaid:!1,markedOptions:void 0,disableSanitizer:!1},this.DEFAULT_RENDER_OPTIONS={clipboard:!1,clipboardOptions:void 0,katex:!1,katexOptions:void 0,mermaid:!1,mermaidOptions:void 0},this.DEFAULT_SECURITY_CONTEXT=xd.HTML,this._options=null,this._reload$=new Le,this.reload$=this._reload$.asObservable(),this.options=f(Eye,{optional:!0})}parse(e,n=this.DEFAULT_PARSE_OPTIONS){let{decodeHtml:o,inline:r,emoji:a,mermaid:c,disableSanitizer:m}=n,p=H(H({},this.options),n.markedOptions),h=p.renderer||this.renderer||new Hp;this.extensions&&(this.renderer=this.extendsRendererForExtensions(h)),c&&(this.renderer=this.extendsRendererForMermaid(h));let g=this.trimIndentation(e),M=o?this.decodeHtml(g):g,C=a?this.parseEmoji(M):M,_=this.parseMarked(C,p,r);return m?_:this.sanitizeHtml(_)}render(e,n=this.DEFAULT_RENDER_OPTIONS,o){let{clipboard:r,clipboardOptions:a,katex:c,katexOptions:m,mermaid:p,mermaidOptions:h}=n;c&&this.renderKatex(e,H(H({},this.DEFAULT_KATEX_OPTIONS),m)),p&&this.renderMermaid(e,H(H(H({},this.DEFAULT_MERMAID_OPTIONS),this.mermaidOptions),h)),r&&this.renderClipboard(e,o,H(H(H({},this.DEFAULT_CLIPBOARD_OPTIONS),this.clipboardOptions),a)),this.highlight(e)}reload(){this._reload$.next()}getSource(e){if(!this.http)throw new Error(Lye);return this.http.get(e,{responseType:"text"}).pipe(yt(n=>this.handleExtension(e,n)))}highlight(e){if(!Rs(this.platform)||typeof Prism>"u"||typeof Prism.highlightAllUnder>"u")return;e||(e=document);let n=e.querySelectorAll('pre code:not([class*="language-"])');Array.prototype.forEach.call(n,o=>o.classList.add("language-none")),Prism.highlightAllUnder(e)}decodeHtml(e){if(!Rs(this.platform))return e;let n=document.createElement("textarea");return n.innerHTML=e,n.value}extendsRendererForExtensions(e){let n=e;return n.\u0275NgxMarkdownRendererExtendedForExtensions===!0||(this.extensions&&this.extensions.length>0&&ji.use(...this.extensions),n.\u0275NgxMarkdownRendererExtendedForExtensions=!0),e}extendsRendererForMermaid(e){let n=e;if(n.\u0275NgxMarkdownRendererExtendedForMermaid===!0)return e;let o=e.code;return e.code=r=>r.lang==="mermaid"?`<div class="mermaid">${r.text}</div>`:o(r),n.\u0275NgxMarkdownRendererExtendedForMermaid=!0,e}handleExtension(e,n){let o=e.lastIndexOf("://"),r=o>-1?e.substring(o+4):e,a=r.lastIndexOf("/"),c=a>-1?r.substring(a+1).split("?")[0]:"",m=c.lastIndexOf("."),p=m>-1?c.substring(m+1):"";return p&&p!=="md"?"```"+p+`
|
||
`+n+"\n```":n}parseMarked(e,n,o=!1){if(n.renderer){let r=H({},n.renderer);delete r.\u0275NgxMarkdownRendererExtendedForExtensions,delete r.\u0275NgxMarkdownRendererExtendedForMermaid,delete n.renderer,ji.use({renderer:r})}return o?ji.parseInline(e,n):ji.parse(e,n)}parseEmoji(e){if(!Rs(this.platform))return e;if(typeof joypixels>"u"||typeof joypixels.shortnameToUnicode>"u")throw new Error(Aye);return joypixels.shortnameToUnicode(e)}renderKatex(e,n){if(Rs(this.platform)){if(typeof katex>"u"||typeof renderMathInElement>"u")throw new Error(Oye);renderMathInElement(e,n)}}renderClipboard(e,n,o){if(!Rs(this.platform))return;if(typeof ClipboardJS>"u")throw new Error(Rye);if(!n)throw new Error(Fye);let{buttonComponent:r,buttonTemplate:a}=o,c=e.querySelectorAll("pre");for(let m=0;m<c.length;m++){let p=c.item(m),h=document.createElement("div");h.style.position="relative",p.parentNode.insertBefore(h,p),h.appendChild(p);let g=document.createElement("div");g.classList.add("markdown-clipboard-toolbar"),g.style.position="absolute",g.style.top=".5em",g.style.right=".5em",g.style.zIndex="1",h.insertAdjacentElement("beforeend",g),h.onmouseenter=()=>g.classList.add("hover"),h.onmouseleave=()=>g.classList.remove("hover");let M;if(r){let _=n.createComponent(r);M=_.hostView,_.changeDetectorRef.markForCheck()}else if(a)M=n.createEmbeddedView(a);else{let _=n.createComponent(Mye);M=_.hostView,_.changeDetectorRef.markForCheck()}let C;M.rootNodes.forEach(_=>{g.appendChild(_),C=new ClipboardJS(_,{text:()=>p.innerText})}),M.onDestroy(()=>C.destroy())}}renderMermaid(e,n=this.DEFAULT_MERMAID_OPTIONS){if(!Rs(this.platform))return;if(typeof mermaid>"u"||typeof mermaid.initialize>"u")throw new Error(Nye);let o=e.querySelectorAll(".mermaid");o.length!==0&&(mermaid.initialize(n),mermaid.run({nodes:o}))}trimIndentation(e){if(!e)return"";let n;return e.split(`
|
||
`).map(o=>{let r=n;return o.length>0&&(r=isNaN(r)?o.search(/\S|$/):Math.min(o.search(/\S|$/),r)),isNaN(n)&&(n=r),r?o.substring(r):o}).join(`
|
||
`)}async sanitizeHtml(e){return Iye(this.sanitize)?this.sanitize(await e):this.sanitize!==xd.NONE?this.sanitizer.sanitize(this.sanitize??this.DEFAULT_SECURITY_CONTEXT,e)??"":e}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275prov=Q({token:t,factory:t.\u0275fac})}}return t})(),NN=(function(t){return t.CommandLine="command-line",t.LineHighlight="line-highlight",t.LineNumbers="line-numbers",t})(NN||{}),tM=(()=>{class t{constructor(){this.element=f(Lt),this.markdownService=f(UH),this.viewContainerRef=f(co),this.error=new ve,this.load=new ve,this.ready=new ve,this._clipboard=!1,this._commandLine=!1,this._disableSanitizer=!1,this._emoji=!1,this._inline=!1,this._katex=!1,this._lineHighlight=!1,this._lineNumbers=!1,this._mermaid=!1,this.destroyed$=new Le}get disableSanitizer(){return this._disableSanitizer}set disableSanitizer(e){this._disableSanitizer=this.coerceBooleanProperty(e)}get inline(){return this._inline}set inline(e){this._inline=this.coerceBooleanProperty(e)}get clipboard(){return this._clipboard}set clipboard(e){this._clipboard=this.coerceBooleanProperty(e)}get emoji(){return this._emoji}set emoji(e){this._emoji=this.coerceBooleanProperty(e)}get katex(){return this._katex}set katex(e){this._katex=this.coerceBooleanProperty(e)}get mermaid(){return this._mermaid}set mermaid(e){this._mermaid=this.coerceBooleanProperty(e)}get lineHighlight(){return this._lineHighlight}set lineHighlight(e){this._lineHighlight=this.coerceBooleanProperty(e)}get lineNumbers(){return this._lineNumbers}set lineNumbers(e){this._lineNumbers=this.coerceBooleanProperty(e)}get commandLine(){return this._commandLine}set commandLine(e){this._commandLine=this.coerceBooleanProperty(e)}ngOnChanges(){this.loadContent()}loadContent(){if(this.data!=null){this.handleData();return}if(this.src!=null){this.handleSrc();return}}ngAfterViewInit(){!this.data&&!this.src&&this.handleTransclusion(),this.markdownService.reload$.pipe(rt(this.destroyed$)).subscribe(()=>this.loadContent())}ngOnDestroy(){this.destroyed$.next(),this.destroyed$.complete()}async render(e,n=!1){let o={decodeHtml:n,inline:this.inline,emoji:this.emoji,mermaid:this.mermaid,disableSanitizer:this.disableSanitizer},r={clipboard:this.clipboard,clipboardOptions:this.getClipboardOptions(),katex:this.katex,katexOptions:this.katexOptions,mermaid:this.mermaid,mermaidOptions:this.mermaidOptions},a=await this.markdownService.parse(e,o);this.element.nativeElement.innerHTML=a,this.handlePlugins(),this.markdownService.render(this.element.nativeElement,r,this.viewContainerRef),this.ready.emit()}coerceBooleanProperty(e){return e!=null&&`${String(e)}`!="false"}getClipboardOptions(){if(this.clipboardButtonComponent||this.clipboardButtonTemplate)return{buttonComponent:this.clipboardButtonComponent,buttonTemplate:this.clipboardButtonTemplate}}handleData(){this.render(this.data)}handleSrc(){this.markdownService.getSource(this.src).subscribe({next:e=>{this.render(e).then(()=>{this.load.emit(e)})},error:e=>this.error.emit(e)})}handleTransclusion(){this.render(this.element.nativeElement.innerHTML,!0)}handlePlugins(){this.commandLine&&(this.setPluginClass(this.element.nativeElement,NN.CommandLine),this.setPluginOptions(this.element.nativeElement,{dataFilterOutput:this.filterOutput,dataHost:this.host,dataPrompt:this.prompt,dataOutput:this.output,dataUser:this.user})),this.lineHighlight&&this.setPluginOptions(this.element.nativeElement,{dataLine:this.line,dataLineOffset:this.lineOffset}),this.lineNumbers&&(this.setPluginClass(this.element.nativeElement,NN.LineNumbers),this.setPluginOptions(this.element.nativeElement,{dataStart:this.start}))}setPluginClass(e,n){let o=e.querySelectorAll("pre");for(let r=0;r<o.length;r++){let a=n instanceof Array?n:[n];o.item(r).classList.add(...a)}}setPluginOptions(e,n){let o=e.querySelectorAll("pre");for(let r=0;r<o.length;r++)Object.keys(n).forEach(a=>{let c=n[a];if(c){let m=this.toLispCase(a);o.item(r).setAttribute(m,c.toString())}})}toLispCase(e){let n=e.match(/([A-Z])/g);if(!n)return e;let o=e.toString();for(let r=0,a=n.length;r<a;r++)o=o.replace(new RegExp(n[r]),"-"+n[r].toLowerCase());return o.slice(0,1)==="-"&&(o=o.slice(1)),o}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275cmp=L({type:t,selectors:[["markdown"],["","markdown",""]],inputs:{data:"data",src:"src",disableSanitizer:"disableSanitizer",inline:"inline",clipboard:"clipboard",clipboardButtonComponent:"clipboardButtonComponent",clipboardButtonTemplate:"clipboardButtonTemplate",emoji:"emoji",katex:"katex",katexOptions:"katexOptions",mermaid:"mermaid",mermaidOptions:"mermaidOptions",lineHighlight:"lineHighlight",line:"line",lineOffset:"lineOffset",lineNumbers:"lineNumbers",start:"start",commandLine:"commandLine",filterOutput:"filterOutput",host:"host",prompt:"prompt",output:"output",user:"user"},outputs:{error:"error",load:"load",ready:"ready"},features:[un],ngContentSelectors:yye,decls:1,vars:0,template:function(n,o){n&1&&(En(),Yt(0))},encapsulation:2})}}return t})();function Bye(t){return[UH,t?.loader??[],t?.clipboardOptions??[],t?.markedOptions??[],t?.mermaidOptions??[],t?.markedExtensions??[],t?.sanitize??[]]}var Kg=(()=>{class t{static forRoot(e){return{ngModule:t,providers:[Bye(e)]}}static forChild(){return{ngModule:t}}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275mod=Bt({type:t})}static{this.\u0275inj=Ft({})}}return t})();function Vye(t,i){if(t&1&&(s(0,"div",4),F(1,"markdown",5),l()),t&2){let e=b();u(),x("data",e.markdown())}}var nM=(()=>{class t{controller=oe(void 0);project=oe(void 0);projectService=f(Fi);cd=f(K);markdown=me("");ngOnInit(){this.projectService.getReadmeFile(this.controller(),this.project().project_id).subscribe({next:e=>{e&&this.markdown.set(e),this.cd.markForCheck()},error:e=>{e.status===404&&this.markdown.set(""),this.cd.markForCheck()}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-readme-editor"]],inputs:{controller:[1,"controller"],project:[1,"project"]},decls:5,vars:2,consts:[["selectedIndex","1"],["label","Edit"],["matInput","","type","text",1,"editorWrapper",3,"input","value"],["label","Preview"],[1,"textWrapper","markdown-body"],[3,"data"]],template:function(n,o){n&1&&(s(0,"mat-tab-group",0)(1,"mat-tab",1)(2,"textarea",2),v("input",function(a){return o.markdown.set(a.target.value)}),l()(),s(3,"mat-tab",3),A(4,Vye,2,1,"div",4),l()()),n&2&&(u(2),x("value",o.markdown()),u(2),O(o.markdown()?4:-1))},dependencies:[Z,nt,mo,Bo,Vo,Kg,tM],styles:[".textWrapper[_ngcontent-%COMP%]{height:500px;overflow-y:scroll}.editorWrapper[_ngcontent-%COMP%]{width:100%;height:500px;overflow-y:scroll}"],changeDetection:0})}return t})();var zye=["editor"];function jye(t,i){if(t&1&&(s(0,"mat-tab",13),F(1,"app-readme-editor",29,0),l()),t&2){let e=b();u(),x("controller",e.controller)("project",e.project)}}function $ye(t,i){t&1&&(s(0,"th",30),d(1,"Name"),l())}function Hye(t,i){if(t&1&&(s(0,"td",31),d(1),l()),t&2){let e=i.$implicit;u(),U(e.name)}}function Uye(t,i){t&1&&(s(0,"th",30),d(1,"Value"),l())}function Gye(t,i){if(t&1&&(s(0,"td",31),d(1),l()),t&2){let e=i.$implicit;u(),U(e.value)}}function Wye(t,i){t&1&&(s(0,"th",30),d(1,"Actions"),l())}function qye(t,i){if(t&1){let e=j();s(0,"td",31)(1,"button",32),v("click",function(){let o=D(e).$implicit,r=b();return P(r.deleteVariable(o))}),s(2,"mat-icon",33),d(3,"delete"),l()()()}}function Xye(t,i){t&1&&F(0,"tr",34)}function Qye(t,i){t&1&&F(0,"tr",35)}var Zg=(()=>{class t{editor=Ut("editor");dialogRef=f(Pe);dialog=f(Je);formBuilder=f(jt);projectService=f(Fi);toasterService=f(fe);nonNegativeValidator=f(Hl);cd=f(K);controller;project;formGroup;variableFormGroup;projectVariables;displayedColumns=["name","value","actions"];variables=[];auto_open=ae(!1);auto_start=ae(!1);auto_close=ae(!1);show_interface_labels=ae(!1);constructor(){this.formGroup=this.formBuilder.group({projectName:new re("",[be.required]),width:new re("",[be.required,this.nonNegativeValidator.get]),height:new re("",[be.required,this.nonNegativeValidator.get]),nodeGridSize:new re("",[be.required,this.nonNegativeValidator.get]),drawingGridSize:new re("",[be.required,this.nonNegativeValidator.get])}),this.variableFormGroup=this.formBuilder.group({name:new re("",[be.required]),value:new re("",[be.required])})}ngOnInit(){this.formGroup.controls.projectName.setValue(this.project.name),this.formGroup.controls.width.setValue(this.project.scene_width),this.formGroup.controls.height.setValue(this.project.scene_height),this.formGroup.controls.nodeGridSize.setValue(this.project.grid_size),this.formGroup.controls.drawingGridSize.setValue(this.project.drawing_grid_size),this.project.variables&&this.project.variables.forEach(e=>this.variables.push(e)),this.auto_open.set(this.project.auto_open),this.auto_start.set(this.project.auto_start),this.auto_close.set(!this.project.auto_close),this.show_interface_labels.set(this.project.show_interface_labels),this.cd.markForCheck()}addVariable(){if(this.variableFormGroup.valid){let e={name:this.variableFormGroup.get("name").value,value:this.variableFormGroup.get("value").value};this.variables=this.variables.concat([e]),this.cd.markForCheck()}else this.toasterService.error("Fill all required fields with correct values.")}deleteVariable(e){this.dialog.open(tp,{data:{templateName:e.name},panelClass:"base-dialog-panel"}).afterClosed().subscribe(o=>{o&&(this.variables=this.variables.filter(r=>r!==e),this.cd.markForCheck())})}onNoClick(){this.dialogRef.close()}onYesClick(){this.formGroup.valid?(this.project.name=this.formGroup.get("projectName").value,this.project.scene_width=this.formGroup.get("width").value,this.project.scene_height=this.formGroup.get("height").value,this.project.drawing_grid_size=this.formGroup.get("drawingGridSize").value,this.project.grid_size=this.formGroup.get("nodeGridSize").value,this.project.variables=this.variables,this.project.auto_open=this.auto_open(),this.project.auto_start=this.auto_start(),this.project.auto_close=!this.auto_close(),this.project.show_interface_labels=this.show_interface_labels(),this.projectService.update(this.controller,this.project).subscribe(e=>{this.projectService.postReadmeFile(this.controller,this.project.project_id,this.editor().markdown()).subscribe(n=>{this.toasterService.success(`Project ${e.name} updated.`),this.dialogRef.close(e)})})):this.toasterService.error("Fill all required fields with correct values.")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-edit-project-dialog"]],viewQuery:function(n,o){n&1&&tn(o.editor,zye,5),n&2&&nn()},inputs:{auto_open:[1,"auto_open"],auto_start:[1,"auto_start"],auto_close:[1,"auto_close"],show_interface_labels:[1,"show_interface_labels"]},outputs:{auto_open:"auto_openChange",auto_start:"auto_startChange",auto_close:"auto_closeChange",show_interface_labels:"show_interface_labelsChange"},decls:68,vars:10,consts:[["editor",""],["mat-dialog-title",""],[1,"modal-form-container"],["label","General"],[3,"formGroup"],["appearance","fill",1,"form-field"],["matInput","","formControlName","projectName","placeholder","My Project","type","text"],["matInput","","formControlName","width","placeholder","1000","type","number"],["matTextSuffix",""],["matInput","","formControlName","height","placeholder","800","type","number"],["matInput","","formControlName","nodeGridSize","placeholder","25","type","number"],["matInput","","formControlName","drawingGridSize","placeholder","25","type","number"],[3,"change","checked"],["label","Readme"],["label","Global variables"],["matInput","","formControlName","name","placeholder","VARIABLE_NAME","type","text"],["matInput","","formControlName","value","placeholder","variable_value","type","text"],["mat-button","","mat-raised-button","","color","primary",1,"form-field",3,"click"],["mat-table","",3,"dataSource"],["matColumnDef","name"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","value"],["matColumnDef","actions"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],[3,"controller","project"],["mat-header-cell",""],["mat-cell",""],["mat-icon-button","","matTooltip","Delete variable","matTooltipClass","custom-tooltip",3,"click"],["aria-label","Delete adapter"],["mat-header-row",""],["mat-row",""]],template:function(n,o){n&1&&(s(0,"h1",1),d(1,"Edit project"),l(),s(2,"div",2)(3,"mat-tab-group")(4,"mat-tab",3)(5,"form",4)(6,"mat-form-field",5)(7,"mat-label"),d(8,"Project name"),l(),F(9,"input",6),l(),s(10,"mat-form-field",5)(11,"mat-label"),d(12,"Scene width"),l(),F(13,"input",7),s(14,"span",8),d(15,"px"),l()(),s(16,"mat-form-field",5)(17,"mat-label"),d(18,"Scene height"),l(),F(19,"input",9),s(20,"span",8),d(21,"px"),l()(),s(22,"mat-form-field",5)(23,"mat-label"),d(24,"Node grid size"),l(),F(25,"input",10),l(),s(26,"mat-form-field",5)(27,"mat-label"),d(28,"Drawing grid size"),l(),F(29,"input",11),l()(),s(30,"mat-checkbox",12),v("change",function(a){return o.auto_open.set(a.checked)}),d(31," Open this project in the background when GNS3 controller starts "),l(),s(32,"mat-checkbox",12),v("change",function(a){return o.auto_start.set(a.checked)}),d(33," Start all nodes when this project is opened "),l(),s(34,"mat-checkbox",12),v("change",function(a){return o.auto_close.set(a.checked)}),d(35," Leave this project running in the background after closing "),l(),s(36,"mat-checkbox",12),v("change",function(a){return o.show_interface_labels.set(a.checked)}),d(37," Show interface labels at start "),l()(),A(38,jye,3,2,"mat-tab",13),s(39,"mat-tab",14)(40,"form",4)(41,"mat-form-field",5)(42,"mat-label"),d(43,"Name"),l(),F(44,"input",15),l(),s(45,"mat-form-field",5)(46,"mat-label"),d(47,"Value"),l(),F(48,"input",16),l()(),s(49,"button",17),v("click",function(){return o.addVariable()}),d(50," Add variable "),l(),s(51,"table",18),qe(52,19),Ae(53,$ye,2,0,"th",20)(54,Hye,2,1,"td",21),Xe(),qe(55,22),Ae(56,Uye,2,0,"th",20)(57,Gye,2,1,"td",21),Xe(),qe(58,23),Ae(59,Wye,2,0,"th",20)(60,qye,4,0,"td",21),Xe(),Ae(61,Xye,1,0,"tr",24)(62,Qye,1,0,"tr",25),l()()()(),s(63,"div",26)(64,"button",27),v("click",function(){return o.onNoClick()}),d(65,"Cancel"),l(),s(66,"button",28),v("click",function(){return o.onYesClick()}),d(67,"Apply"),l()()),n&2&&(u(5),x("formGroup",o.formGroup),u(25),x("checked",o.auto_open()),u(2),x("checked",o.auto_start()),u(2),x("checked",o.auto_close()),u(2),x("checked",o.show_interface_labels()),u(2),O(o.controller&&o.project?38:-1),u(2),x("formGroup",o.variableFormGroup),u(11),x("dataSource",o.variables),u(10),x("matHeaderRowDef",o.displayedColumns),u(),x("matRowDefColumns",o.displayedColumns))},dependencies:[Z,nt,Ue,vt,xi,mt,He,ct,pt,bt,Ce,Ve,Be,$,le,ze,Me,ke,lt,Fo,we,Te,Ot,Ht,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,te,se,Gt,Kt,mo,Bo,Vo,nM],encapsulation:2,changeDetection:0})}return t})();function Yye(t,i){if(t&1){let e=j();s(0,"div",1)(1,"button",2),v("click",function(){D(e);let o=b();return P(o.onNoClick())}),d(2,"No"),l(),s(3,"button",3),v("click",function(){D(e);let o=b();return P(o.onYesClick())}),d(4," Yes "),l()()}}function Kye(t,i){if(t&1){let e=j();s(0,"div",1)(1,"button",4),v("click",function(){D(e);let o=b();return P(o.onNoClick())}),d(2,"OK"),l()()}}var iM=(()=>{class t{data;dialogRef=f(Pe);existingProject;confirmationMessage=me("");isOpen=me(!1);constructor(e){this.data=e,this.existingProject=e.existingProject}ngOnInit(){this.existingProject.status==="opened"?(this.confirmationMessage.set(`Project ${this.existingProject.name} is open. You can not overwrite it.`),this.isOpen.set(!0)):this.confirmationMessage.set(`Project ${this.existingProject.name} already exists, overwrite it?`)}onNoClick(){this.dialogRef.close(!1)}onYesClick(){this.dialogRef.close(!0)}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-import-project-dialog"]],decls:5,vars:3,consts:[["mat-dialog-content",""],["mat-dialog-actions",""],["mat-button","","color","accent",1,"cancelButton",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",1,"confirmButton",3,"click"],["mat-button","","color","accent",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"span"),d(2),l()(),A(3,Yye,5,0,"div",1),A(4,Kye,3,0,"div",1)),n&2&&(u(2),U(o.confirmationMessage()),u(),O(o.isOpen()?-1:3),u(),O(o.isOpen()?4:-1))},dependencies:[Ce,Be,Wt,$,le],encapsulation:2,changeDetection:0})}return t})();var Zye=t=>({empty:t}),Jye=t=>({"is-invalid":t});function eSe(t,i){t&1&&(s(0,"mat-error"),d(1,"Project name is required"),l())}function tSe(t,i){t&1&&(s(0,"mat-error"),d(1,"Project name is incorrect"),l())}function nSe(t,i){if(t&1){let e=j();s(0,"button",7)(1,"mat-icon",11),v("click",function(){D(e);let o=b(2);return P(o.onDeleteClick())}),d(2,"clear"),l()()}}function iSe(t,i){if(t&1){let e=j();s(0,"div")(1,"form",2)(2,"input",3,0),v("change",function(o){D(e);let r=b();return P(r.uploadProjectFile(o))}),l(),s(4,"button",4),v("click",function(){D(e);let o=Re(3);return P(o.click())}),s(5,"mat-icon"),d(6,"attach_file"),l(),d(7," Choose file "),l(),s(8,"mat-form-field",5),F(9,"input",6),A(10,eSe,2,0,"mat-error"),A(11,tSe,2,0,"mat-error"),l(),A(12,nSe,3,0,"button",7),s(13,"div",8)(14,"button",9),v("click",function(){D(e);let o=b();return P(o.onNoClick())}),d(15,"Cancel"),l(),s(16,"button",10),v("click",function(){D(e);let o=b();return P(o.onImportClick())}),d(17," Import "),l()()()()}if(t&2){let e=b();u(),x("formGroup",e.projectNameForm),u(),x("uploader",e.uploader),u(6),x("ngClass",ln(8,Zye,!e.isDeleteVisible)),u(),x("ngClass",ln(10,Jye,e.form.projectName.errors)),u(),O(e.form.projectName.errors&&e.form.projectName.errors.required?10:-1),u(),O(e.form.projectName.errors&&e.form.projectName.errors.invalidName?11:-1),u(),O(e.isDeleteVisible?12:-1),u(4),x("disabled",!e.isImportEnabled)}}function oSe(t,i){if(t&1){let e=j();s(0,"div")(1,"div",12)(2,"span"),d(3),l()(),s(4,"div",8)(5,"button",10),v("click",function(){D(e);let o=b();return P(o.onNoClick())}),d(6," Finish "),l()()()}if(t&2){let e=b();u(3),U(e.resultMessage),u(2),x("disabled",!e.isFinishEnabled)}}var Jg=(()=>{class t{dialog=f(Je);dialogRef=f(Pe);formBuilder=f(jt);projectService=f(Fi);projectNameValidator=f(ja);toasterService=f(fe);uploadServiceService=f(Dl);snackBar=f(Qr);cd=f(K);data=f(Nt);uploader;uploadProgress=0;controller;isImportEnabled=!1;isFinishEnabled=!1;isDeleteVisible=!1;resultMessage="The project is being imported... Please wait";projectNameForm;submitted=!1;isFirstStepCompleted=!1;uuid;onImportProject=new ve;constructor(){this.projectNameForm=this.formBuilder.group({projectName:new re(null,[be.required,this.projectNameValidator.get])})}ngOnInit(){this.uploader=new Ka({url:""}),this.uploader.onAfterAddingFile=e=>{e.withCredentials=!1},this.uploader.onErrorItem=(e,n,o,r)=>{let a=JSON.parse(n);this.resultMessage="An error has occurred: "+a.message,this.isFinishEnabled=!0,this.cd.markForCheck()},this.uploader.onCompleteItem=(e,n,o,r)=>{this.onImportProject.emit(this.uuid),this.resultMessage="Project was imported succesfully!",this.isFinishEnabled=!0,this.cd.markForCheck()},this.uploader.onProgressItem=e=>{this.uploadProgress=e.progress,this.uploadServiceService.processBarCount(this.uploadProgress),this.cd.markForCheck()},this.uploadServiceService.currentCancelItemDetails.subscribe(e=>{e&&this.cancelUploading()})}get form(){return this.projectNameForm.controls}uploadProjectFile(e){this.projectNameForm.controls.projectName.setValue(e.target.files[0].name.split(".")[0]),this.isImportEnabled=!0,this.isDeleteVisible=!0,this.cd.markForCheck()}onImportClick(){this.projectNameForm.invalid?this.submitted=!0:this.projectService.list(this.controller).subscribe(e=>{let n=this.projectNameForm.controls.projectName.value,o=e.find(r=>r.name===n);o?this.openConfirmationDialog(o):this.importProject(),this.cd.markForCheck()})}importProject(){let e=this.prepareUploadPath();this.uploader.queue.forEach(o=>o.url=e),this.uploader.authToken=`Bearer ${this.controller.authToken}`,this.isFirstStepCompleted=!0;let n=this.uploader.queue[0];this.uploader.uploadItem(n),this.snackBar.openFromComponent(Il,{panelClass:"uplaoding-file-snackabar",data:{upload_file_type:"Project"}})}openConfirmationDialog(e){this.dialog.open(iM,{width:"300px",height:"150px",panelClass:["base-confirmation-dialog-panel","confirmation-warning-panel"],data:{existingProject:e},autoFocus:!1,disableClose:!0}).afterClosed().subscribe(o=>{o&&this.projectService.close(this.controller,e.project_id).subscribe(()=>{this.projectService.delete(this.controller,e.project_id).subscribe(()=>{this.importProject()})}),this.cd.markForCheck()})}onNoClick(){this.uploader.cancelAll(),this.dialogRef.close(!1)}onFinishClick(){this.dialogRef.close(!1)}onDeleteClick(){this.uploader.queue.pop(),this.isImportEnabled=!1,this.isDeleteVisible=!1,this.projectNameForm.controls.projectName.setValue(""),this.cd.markForCheck()}prepareUploadPath(){this.uuid=Ti();let e=this.projectNameForm.controls.projectName.value;return this.projectService.getUploadPath(this.controller,this.uuid,e)}cancelUploading(){this.uploader.clearQueue(),this.uploadServiceService.processBarCount(null),this.toasterService.warning("File upload cancelled"),this.uploadServiceService.cancelFileUploading(!1),this.isFirstStepCompleted=!1,this.uploader.cancelAll(),this.dialogRef.close(!0)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-import-project-dialog"]],features:[hn([ja])],decls:4,vars:2,consts:[["file",""],["mat-dialog-title",""],[1,"file-name-form",3,"formGroup"],["type","file","accept",".gns3project, .gns3p","ng2FileSelect","",1,"non-visible",3,"change","uploader"],["mat-raised-button","","color","primary","matTooltip","Import your .gns3p or .gns3project file","matTooltipClass","custom-tooltip",1,"file-button",3,"click"],[1,"file-name-form-field",3,"ngClass"],["matInput","","type","text","formControlName","projectName","placeholder","Please enter name",3,"ngClass"],[1,"delete-button"],["mat-dialog-actions","","align","end"],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click","disabled"],["color","primary",1,"delete-icon",3,"click"],[1,""]],template:function(n,o){n&1&&(s(0,"h1",1),d(1,"Import project"),l(),A(2,iSe,18,12,"div"),A(3,oSe,7,2,"div")),n&2&&(u(2),O(o.isFirstStepCompleted?-1:2),u(),O(o.isFirstStepCompleted?3:-1))},dependencies:[Z,Zi,ct,Ue,vt,mt,He,pt,bt,Ce,Ve,Be,$,le,Me,ke,Ni,we,Te,te,se,Gt,Kt,Zc,xl,Gc],styles:[".non-visible[_ngcontent-%COMP%]{display:none}.file-button[_ngcontent-%COMP%]{width:calc(100% - 48px);height:48px;margin:16px 24px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;gap:8px}.file-button[_ngcontent-%COMP%]:hover:not([disabled]){transform:translateY(-2px);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.file-button[_ngcontent-%COMP%]:active:not([disabled]){transform:translateY(0)}.file-name-form[_ngcontent-%COMP%]{width:100%;padding:0 24px;box-sizing:border-box}.file-name-form-field[_ngcontent-%COMP%], .empty[_ngcontent-%COMP%]{width:100%}.delete-button[_ngcontent-%COMP%]{background:transparent;border:none;outline:0;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s cubic-bezier(.4,0,.2,1)}.delete-button[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.delete-icon[_ngcontent-%COMP%]{vertical-align:middle;font-size:20px;width:20px;height:20px;color:var(--mat-sys-on-surface-variant)}.delete-icon[_ngcontent-%COMP%]:hover{color:var(--mat-sys-on-surface)}.result-message-box[_ngcontent-%COMP%]{margin-top:16px;text-align:center;color:var(--mat-sys-on-surface)}.progress-bar[_ngcontent-%COMP%]{background-color:var(--mat-sys-primary)}"],changeDetection:0})}return t})();var rSe=t=>({lightTheme:t}),e_=(()=>{class t{bottomSheetRef=f(gp);themeService=f(yi);cd=f(K);projectMessage="";isLightThemeEnabled=!1;ngOnInit(){this.themeService.getActualTheme()==="light"?this.isLightThemeEnabled=!0:this.isLightThemeEnabled=!1,this.cd.markForCheck()}onNoClick(){this.bottomSheetRef.dismiss(!1)}onYesClick(){this.bottomSheetRef.dismiss(!0)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-navigation-dialog"]],decls:8,vars:4,consts:[[1,"dialogWrapper",3,"ngClass"],[1,"title"],["mat-button","",3,"click"],["mat-button","",1,"confirmButton",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1),d(2),l(),s(3,"div")(4,"button",2),v("click",function(){return o.onNoClick()}),d(5,"No"),l(),s(6,"button",3),v("click",function(){return o.onYesClick()}),d(7,"Yes"),l()()()),n&2&&(x("ngClass",ln(2,rSe,o.isLightThemeEnabled)),u(2),X("Do you want to navigate to ",o.projectMessage,"?"))},dependencies:[Z,Zi,id,$,le],styles:[".dialogWrapper[_ngcontent-%COMP%]{background-color:var(--mat-sys-surface);padding:8px 16px;margin-bottom:-8px;display:flex;justify-content:space-between;align-items:center}.dialogWrapper.lightTheme[_ngcontent-%COMP%]{background-color:var(--mat-sys-surface)}.title[_ngcontent-%COMP%]{margin-right:10px;margin-left:10px}"],changeDetection:0})}return t})();var aSe=t=>({"is-invalid":t});function sSe(t,i){t&1&&(s(0,"mat-error"),d(1,"Project name is required"),l())}function lSe(t,i){t&1&&(s(0,"mat-error"),d(1,"Project name is incorrect"),l())}var oM=(()=>{class t{projectNameValidator;dialogRef=f(Pe);projectService=f(Fi);nodesDataSource=f(ci);toasterService=f(fe);formBuilder=f(jt);cd=f(K);controller;project;projectNameForm;onAddProject=new ve;constructor(e){this.projectNameValidator=e,this.projectNameForm=this.formBuilder.group({projectName:new re(null,[be.required,e.get])})}ngOnInit(){this.cd.markForCheck()}get form(){return this.projectNameForm.controls}onAddClick(){this.projectNameForm.invalid||this.projectService.list(this.controller).subscribe(e=>{let n=this.projectNameForm.controls.projectName.value;e.find(r=>r.name===n)?this.toasterService.error("Project with this name already exists."):this.nodesDataSource.getItems().filter(r=>r.status==="started"&&r.node_type==="vpcs"||r.status==="started"&&r.node_type==="virtualbox"||r.status==="started"&&r.node_type==="vmware").length>0?this.toasterService.error("Please stop all nodes in order to save project."):this.addProject(),this.cd.markForCheck()})}onNoClick(){this.dialogRef.close()}addProject(){this.projectService.duplicate(this.controller,this.project.project_id,this.projectNameForm.controls.projectName.value).subscribe(e=>{this.dialogRef.close(),this.toasterService.success(`Project ${e.name} added`)})}onKeyDown(e){e.key==="Enter"&&this.onAddClick()}static \u0275fac=function(n){return new(n||t)(st(ja))};static \u0275cmp=L({type:t,selectors:[["app-save-project-dialog"]],features:[hn([ja])],decls:12,vars:6,consts:[["mat-dialog-title",""],[1,"file-name-form",3,"formGroup"],[1,"file-name-form-field"],["matInput","","type","text","formControlName","projectName","placeholder","Please enter name",3,"keydown","ngClass"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Save project as"),l(),s(2,"form",1)(3,"mat-form-field",2)(4,"input",3),v("keydown",function(a){return o.onKeyDown(a)}),l(),A(5,sSe,2,0,"mat-error"),A(6,lSe,2,0,"mat-error"),l(),s(7,"div",4)(8,"button",5),v("click",function(){return o.onNoClick()}),d(9,"Cancel"),l(),s(10,"button",6),v("click",function(){return o.onAddClick()}),d(11,"Save project"),l()()()),n&2&&(u(2),x("formGroup",o.projectNameForm),u(2),x("ngClass",ln(4,aSe,o.form.projectName==null?null:o.form.projectName.errors)),u(),O(o.form.projectName!=null&&o.form.projectName.touched&&(o.form.projectName!=null&&o.form.projectName.errors)&&(o.form.projectName!=null&&o.form.projectName.errors.required)?5:-1),u(),O(o.form.projectName!=null&&o.form.projectName.touched&&(o.form.projectName!=null&&o.form.projectName.errors)&&(o.form.projectName!=null&&o.form.projectName.errors.invalidName)?6:-1))},dependencies:[Z,Zi,ct,Ue,vt,mt,He,pt,bt,Ce,Ve,Be,$,le,Me,ke,Ni,we,Te],styles:[".file-name-form-field[_ngcontent-%COMP%]{width:100%}.project-snackbar[_ngcontent-%COMP%]{background:var(--mat-app-primary-color)}"],changeDetection:0})}return t})();var rM=(()=>{class t{getInfoAboutNode(e,n){let o=[];return e.node_type==="cloud"?o.push(`Cloud ${e.name} is always on.`):e.node_type==="nat"?o.push(`NAT ${e.name} is always on.`):e.node_type==="ethernet-hub"?o.push(`Ethernet hub ${e.name} is always on.`):e.node_type==="ethernet_switch"?o.push(`Ethernet switch ${e.name} is always on.`):e.node_type==="frame_relay_switch"?o.push(`Frame relay switch ${e.name} is always on.`):e.node_type==="atm_switch"?o.push(`ATM switch ${e.name} is always on.`):e.node_type==="docker"?o.push(`Docker ${e.name} is ${e.status}.`):e.node_type==="dynamips"?o.push(`Dynamips ${e.name} is always on.`):e.node_type==="virtualbox"?o.push(`VirtualBox VM ${e.name} is ${e.status}.`):e.node_type==="vmware"?o.push(`VMware VM ${e.name} is ${e.status}.`):e.node_type==="qemu"?o.push(`QEMU VM ${e.name} is ${e.status}.`):e.node_type==="iou"?o.push(`IOU ${e.name} is always on.`):e.node_type==="vpcs"&&o.push(`Node ${e.name} is ${e.status}.`),o.push(`Running on controller ${n.name} with port ${n.port}.`),o.push(`Controller ID is ${n.id}.`),e.console_type!=="none"&&e.console_type!=="null"&&o.push(`Console is on port ${e.console} and type is ${e.console_type}.`),e.ports.forEach(r=>{o.push(`Port ${r.name} is ${r.link_type}.`)}),o}getInfoAboutPorts(e){let n="Ports: ";return e.forEach(o=>{n+=`link_type: ${o.link_type},
|
||
|
||
name: ${o.name}; `}),n=n.substring(0,n.length-2),n}getCommandLine(e){return e.node_type==="cloud"||e.node_type==="nat"||e.node_type==="ethernet_hub"||e.node_type==="ethernet_switch"||e.node_type==="frame_relay_switch"||e.node_type==="atm_switch"||e.node_type==="dynamips"||e.node_type==="iou"?"Command line information is not supported for this type of node.":e.command_line?e.command_line:"Please start the node in order to get the command line information."}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function cSe(t,i){if(t&1&&(s(0,"div"),d(1),l()),t&2){let e=i.$implicit;u(),U(e)}}var aM=(()=>{class t{dialogRef=f(Pe);infoService=f(rM);cd=f(K);controller;node;infoList=[];usage="";commandLine="";ngOnInit(){this.infoList=this.infoService.getInfoAboutNode(this.node,this.controller),this.commandLine=this.infoService.getCommandLine(this.node),this.usage=this.node.usage?this.node.usage:"No usage information has been provided for this node.",this.cd.markForCheck()}onCloseClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-info-dialog"]],inputs:{controller:"controller",node:"node"},decls:17,vars:3,consts:[["mat-dialog-title",""],["mat-icon-button","",1,"close-btn",3,"click"],[1,"modal-form-container"],["animationDuration","0ms"],["label","General information"],[1,"textBox"],["label","Usage instructions"],["label","Command line"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1),s(2,"button",1),v("click",function(){return o.onCloseClick()}),s(3,"mat-icon"),d(4,"close"),l()()(),s(5,"div",2)(6,"mat-tab-group",3)(7,"mat-tab",4)(8,"div",5),J(9,cSe,2,1,"div",null,Fe),l()(),s(11,"mat-tab",6)(12,"div",5),d(13),l()(),s(14,"mat-tab",7)(15,"div",5),d(16),l()()()()),n&2&&(u(),X(" ",o.node.name," "),u(8),ee(o.infoList),u(4),X(" ",o.usage," "),u(3),X(" ",o.commandLine," "))},dependencies:[Ce,Ve,$,ze,te,se,Si,mo,Bo,Vo],styles:["[mat-dialog-title][_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;color:var(--mat-sys-on-surface)}.close-btn[_ngcontent-%COMP%]{margin-left:auto}.modal-form-container[_ngcontent-%COMP%]{padding:16px;height:300px;display:flex;flex-direction:column;color:var(--mat-sys-on-surface-variant)}.modal-form-container[_ngcontent-%COMP%] mat-tab-group[_ngcontent-%COMP%]{flex:1;overflow:auto}.textBox[_ngcontent-%COMP%]{margin-top:8px;color:var(--mat-sys-on-surface-variant)}"],changeDetection:0})}return t})();var sM=(()=>{class t{dialog=f(Je);node=oe(void 0);controller=oe(void 0);showNode(){let n=this.dialog.open(aM,{panelClass:["base-dialog-panel","show-node-action-dialog-panel"],autoFocus:!1,disableClose:!1}).componentInstance;n.node=this.node(),n.controller=this.controller()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-show-node-action"]],inputs:{node:[1,"node"],controller:[1,"controller"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.showNode()}),s(1,"mat-icon"),d(2,"info"),l(),s(3,"span"),d(4,"Show node information"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function dSe(t,i){t&1&&(s(0,"th",26),d(1,"Port : VPI : VCI"),l())}function mSe(t,i){if(t&1&&(s(0,"td",27),d(1),l()),t&2){let e=i.$implicit;u(),U(e.portIn)}}function pSe(t,i){t&1&&(s(0,"th",26),d(1,"Port : VPI : VCI"),l())}function uSe(t,i){if(t&1&&(s(0,"td",27),d(1),l()),t&2){let e=i.$implicit;u(),U(e.portOut)}}function hSe(t,i){t&1&&(s(0,"th",26),d(1,"Actions"),l())}function fSe(t,i){if(t&1){let e=j();s(0,"td",27)(1,"button",28),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.delete(o))}),s(2,"mat-icon",29),d(3,"delete"),l()()()}}function gSe(t,i){t&1&&F(0,"tr",30)}function _Se(t,i){t&1&&F(0,"tr",31)}function vSe(t,i){if(t&1&&(s(0,"table",4),qe(1,19),Ae(2,dSe,2,0,"th",20)(3,mSe,2,1,"td",21),Xe(),qe(4,22),Ae(5,pSe,2,0,"th",20)(6,uSe,2,1,"td",21),Xe(),qe(7,23),Ae(8,hSe,2,0,"th",20)(9,fSe,4,0,"td",21),Xe(),Ae(10,gSe,1,0,"tr",24)(11,_Se,1,0,"tr",25),l()),t&2){let e=b();x("dataSource",e.nodeMappingsDataSource),u(10),x("matHeaderRowDef",e.displayedColumns),u(),x("matRowDefColumns",e.displayedColumns)}}var lM=(()=>{class t{dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);cd=f(K);controller;node;name;nameForm;inputForm;abstractForm;consoleTypes=[];nodeMappings=new Map;nodeMappingsDataSource=[];dataSource=[];displayedColumns=["portIn","portOut","actions"];sourcePort="";sourceVpi="";sourceVci="";destinationPort="";destinationVpi="";destinationVci="";useVpiOnly=!1;constructor(){this.nameForm=this.formBuilder.group({name:new re("",be.required),useVpiOnly:new re(!1)}),this.inputForm=this.formBuilder.group({sourcePort:new re("",be.required),sourceVci:new re("",be.required),destinationPort:new re("",be.required),destinationVci:new re("",be.required)}),this.abstractForm=this.formBuilder.group({sourceVpi:new re("",be.required),destinationVpi:new re("",be.required)})}ngOnInit(){this.nodeService.getNode(this.controller,this.node).subscribe(e=>{this.node=e,this.name=e.name,this.nameForm.patchValue({name:e.name,useVpiOnly:!1});let n=e.properties.mappings;Object.keys(n).forEach(o=>{this.nodeMappings.set(o,n[o])}),this.nodeMappings.forEach((o,r)=>{this.nodeMappingsDataSource.push({portIn:r,portOut:o})}),this.cd.markForCheck()})}delete(e){this.nodeMappingsDataSource=this.nodeMappingsDataSource.filter(n=>n!==e)}add(){if(this.inputForm.valid){let e;this.nameForm.value.useVpiOnly?(e={portIn:`${this.sourcePort}:${this.sourceVci}`,portOut:`${this.destinationPort}:${this.destinationVci}`},this.nodeMappingsDataSource.filter(o=>o.portIn===e.portIn).length>0?this.toasterService.error("Mapping already defined."):(this.nodeMappingsDataSource=this.nodeMappingsDataSource.concat([e]),this.clearUserInput())):this.abstractForm.valid?(e={portIn:`${this.sourcePort}:${this.sourceVpi}:${this.sourceVci}`,portOut:`${this.destinationPort}:${this.destinationVpi}:${this.destinationVci}`},this.nodeMappingsDataSource.filter(o=>o.portIn===e.portIn).length>0?this.toasterService.error("Mapping already defined."):(this.nodeMappingsDataSource=this.nodeMappingsDataSource.concat([e]),this.clearUserInput())):this.toasterService.error("Fill all required fields.")}else this.toasterService.error("Fill all required fields.")}clearUserInput(){this.sourcePort="0",this.sourceVpi="0",this.sourceVci="0",this.destinationPort="0",this.destinationVpi="0",this.sourceVci="0"}strMapToObj(e){let n=Object.create(null);for(let[o,r]of e)n[o]=r;return n}onSaveClick(){if(this.nameForm.valid){let e=this.nameForm.value;this.node.name=e.name,this.useVpiOnly=e.useVpiOnly,this.nodeMappings.clear(),this.nodeMappingsDataSource.forEach(n=>{this.nodeMappings.set(n.portIn,n.portOut)}),this.node.properties.mappings=Array.from(this.nodeMappings).reduce((n,[o,r])=>Object.assign(n,{[o]:r}),{}),this.nodeService.updateNode(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:n=>{let o=n?.error?.message||n?.message||"Failed to update node";this.toasterService.error(o)}})}else this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configurator-atm-switch"]],decls:52,vars:9,consts:[["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],["mat-table","",3,"dataSource"],[3,"formGroup"],[1,"form-field"],["matInput","","type","text","formControlName","name"],["formControlName","useVpiOnly"],["matInput","","type","number","min","0","formControlName","sourcePort"],["matInput","","type","number","min","1","formControlName","sourceVpi"],["matInput","","type","number","min","1","formControlName","sourceVci"],["matInput","","type","number","min","0","formControlName","destinationPort"],["matInput","","type","number","min","1","formControlName","destinationVpi"],["matInput","","type","number","min","1","formControlName","destinationVci"],["mat-button","",1,"form-field",3,"click"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],["matColumnDef","portIn"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","portOut"],["matColumnDef","actions"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell",""],["mat-icon-button","","matTooltip","Delete port","matTooltipClass","custom-tooltip",3,"click"],["aria-label","Delete port"],["mat-header-row",""],["mat-row",""]],template:function(n,o){n&1&&(s(0,"h1",0),d(1),l(),s(2,"div",1)(3,"div",2)(4,"div",3)(5,"mat-card"),A(6,vSe,12,3,"table",4),F(7,"br"),s(8,"form",5)(9,"mat-form-field",6)(10,"mat-label"),d(11,"Name"),l(),F(12,"input",7),l()(),s(13,"form",5)(14,"mat-checkbox",8),d(15," Use VPI only (VP tunnel) "),l()(),s(16,"form",5)(17,"mat-form-field",6)(18,"mat-label"),d(19,"Source Port"),l(),F(20,"input",9),l()(),s(21,"form",5)(22,"mat-form-field",6)(23,"mat-label"),d(24,"Source VPI"),l(),F(25,"input",10),l()(),s(26,"form",5)(27,"mat-form-field",6)(28,"mat-label"),d(29,"Source VCI"),l(),F(30,"input",11),l(),s(31,"mat-form-field",6)(32,"mat-label"),d(33,"Destination Port"),l(),F(34,"input",12),l()(),s(35,"form",5)(36,"mat-form-field",6)(37,"mat-label"),d(38,"Destination VPI"),l(),F(39,"input",13),l()(),s(40,"form",5)(41,"mat-form-field",6)(42,"mat-label"),d(43,"Destination VCI"),l(),F(44,"input",14),l()(),s(45,"button",15),v("click",function(){return o.add()}),d(46,"Add"),l()()()()(),s(47,"div",16)(48,"button",17),v("click",function(){return o.onCancelClick()}),d(49,"Cancel"),l(),s(50,"button",18),v("click",function(){return o.onSaveClick()}),d(51,"Apply"),l()()),n&2&&(u(),X("Configurator for ATM switch ",o.name),u(5),O(o.nodeMappingsDataSource.length?6:-1),u(2),x("formGroup",o.nameForm),u(5),x("formGroup",o.nameForm),u(3),x("formGroup",o.inputForm),u(5),x("formGroup",o.abstractForm),u(5),x("formGroup",o.inputForm),u(9),x("formGroup",o.abstractForm),u(5),x("formGroup",o.inputForm))},dependencies:[Z,nt,Ue,vt,xi,mt,He,Ro,ct,pt,bt,Ce,Ve,Be,Dt,Tn,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,Me,ke,lt,we,Te,$,le,ze,Ot,Ht,te,se,Gt,Kt],encapsulation:2,changeDetection:0})}return t})();function bSe(t,i){if(t&1){let e=j();s(0,"table",0),qe(1,7),s(2,"th",8),d(3,"Name"),l(),s(4,"td",9),d(5),l(),Xe(),qe(6,10),s(7,"th",8),d(8,"Local port"),l(),s(9,"td",9),d(10),l(),Xe(),qe(11,11),s(12,"th",8),d(13,"Type"),l(),s(14,"td",9),d(15),l(),Xe(),qe(16,12),s(17,"th",8),d(18,"Remote port"),l(),s(19,"td",9),d(20),l(),Xe(),qe(21,13),s(22,"th",8),d(23,"Actions"),l(),s(24,"td",9)(25,"button",14),v("click",function(){D(e);let o=b();return P(o.delete(o.element))}),s(26,"mat-icon",15),d(27,"delete"),l()()(),Xe(),F(28,"tr",16)(29,"tr",17),l()}if(t&2){let e=b();x("dataSource",e.dataSourceUdp),u(5),U(e.element.name),u(5),U(e.element.rport),u(5),U(e.element.rhost),u(5),U(e.element.lport)}}function CSe(t,i){t&1&&F(0,"br")}var cM=(()=>{class t{dataSourceUdp=[];displayedColumns=["name","lport","rhost","rport","action"];newPortName=ae("");newPortLport=ae(0);newPortRhost=ae("");newPortRport=ae(0);portTypes=me([]);etherTypes=me([]);builtInTemplatesConfigurationService=f(Na);ngOnInit(){this.getConfiguration()}getConfiguration(){this.etherTypes.set(this.builtInTemplatesConfigurationService.getEtherTypesForEthernetSwitches()),this.portTypes.set(this.builtInTemplatesConfigurationService.getPortTypesForEthernetSwitches())}onAddUdpInterface(){let e={name:this.newPortName(),lport:this.newPortLport(),rhost:this.newPortRhost(),rport:this.newPortRport(),port_number:0};this.dataSourceUdp=this.dataSourceUdp.concat([e]),this.newPortName.set(""),this.newPortLport.set(0),this.newPortRhost.set(""),this.newPortRport.set(0)}delete(e){this.dataSourceUdp=this.dataSourceUdp.filter(n=>n!==e)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-udp-tunnels"]],inputs:{dataSourceUdp:"dataSourceUdp",newPortName:[1,"newPortName"],newPortLport:[1,"newPortLport"],newPortRhost:[1,"newPortRhost"],newPortRport:[1,"newPortRport"]},outputs:{newPortName:"newPortNameChange",newPortLport:"newPortLportChange",newPortRhost:"newPortRhostChange",newPortRport:"newPortRportChange"},decls:12,vars:6,consts:[["mat-table","",3,"dataSource"],[1,"form-field"],["matInput","","type","text","placeholder","Name",3,"input","value"],["matInput","","type","number","min","0","max","65535","placeholder","Local port",3,"input","value"],["matInput","","type","text","placeholder","Remote host",3,"input","value"],["matInput","","type","number","min","0","max","65535","placeholder","Remote port",3,"input","value"],["mat-button","",1,"form-field",3,"click"],["matColumnDef","name"],["mat-header-cell","","matHeaderCellDef",""],["mat-cell","","matCellDef","let element"],["matColumnDef","rport"],["matColumnDef","rhost"],["matColumnDef","lport"],["matColumnDef","action"],["mat-icon-button","","matTooltip","Delete port","matTooltipClass","custom-tooltip",3,"click"],["aria-label","Delete port"],["mat-header-row","","matHeaderRowDef","displayedColumns"],["mat-row","","matRowDef","let row; columns: displayedColumns"]],template:function(n,o){n&1&&(A(0,bSe,30,5,"table",0),A(1,CSe,1,0,"br"),s(2,"mat-form-field",1)(3,"input",2),v("input",function(a){return o.newPortName.set(a.target.value)}),l()(),s(4,"mat-form-field",1)(5,"input",3),v("input",function(a){return o.newPortLport.set(+a.target.value)}),l()(),s(6,"mat-form-field",1)(7,"input",4),v("input",function(a){return o.newPortRhost.set(a.target.value)}),l()(),s(8,"mat-form-field",1)(9,"input",5),v("input",function(a){return o.newPortRport.set(+a.target.value)}),l()(),s(10,"button",6),v("click",function(){return o.onAddUdpInterface()}),d(11,"Add"),l()),n&2&&(O(o.dataSourceUdp.length?0:-1),u(),O(o.dataSourceUdp.length?1:-1),u(2),x("value",o.newPortName()),u(2),x("value",o.newPortLport()),u(2),x("value",o.newPortRhost()),u(2),x("value",o.newPortRport()))},dependencies:[Z,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,Me,ke,we,Te,$,le,ze,te,se,Gt,Kt],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var xSe=["udpTunnels"],WH=(t,i)=>i.name;function ySe(t,i){if(t&1&&(s(0,"div",11)(1,"div",11),d(2),l(),F(3,"br")(4,"br"),l()),t&2){let e=i.$implicit;u(2),U(e.name)}}function SSe(t,i){if(t&1&&(s(0,"mat-option",14),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function wSe(t,i){if(t&1&&(s(0,"div",11)(1,"div",11),d(2),l(),F(3,"br")(4,"br"),l()),t&2){let e=i.$implicit;u(2),U(e.name)}}function MSe(t,i){if(t&1){let e=j();s(0,"mat-chip",31),v("removed",function(){let o=D(e).$implicit,r=b(2);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",32),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function kSe(t,i){if(t&1&&(s(0,"mat-option",14),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function TSe(t,i){if(t&1){let e=j();s(0,"mat-tab-group")(1,"mat-tab",10),J(2,ySe,5,1,"div",11,WH),s(4,"mat-form-field",12)(5,"mat-select",13),v("selectionChange",function(o){D(e);let r=b();return P(r.ethernetInterface.set(o.value))}),J(6,SSe,2,2,"mat-option",14,Fe),l()(),s(8,"button",15),v("click",function(){D(e);let o=b();return P(o.onAddEthernetInterface())}),d(9,"Add"),l()(),s(10,"mat-tab",16),J(11,wSe,5,1,"div",11,WH),s(13,"mat-form-field",11)(14,"input",17),v("input",function(o){D(e);let r=b();return P(r.tapInterface.set(o.target.value))}),l()(),s(15,"button",15),v("click",function(){D(e);let o=b();return P(o.onAddTapInterface())}),d(16,"Add"),l()(),s(17,"mat-tab",18),F(18,"app-udp-tunnels",19,0),l(),s(20,"mat-tab",20)(21,"form",21)(22,"mat-form-field",11)(23,"mat-label"),d(24,"Name"),l(),F(25,"input",22),l(),s(26,"mat-form-field",23)(27,"mat-label"),d(28,"Tags"),l(),s(29,"mat-chip-grid",null,1),J(31,MSe,4,1,"mat-chip",null,Fe),l(),s(33,"input",24),v("matChipInputTokenEnd",function(o){D(e);let r=b();return P(r.addTag(o))}),l()(),s(34,"mat-form-field",11)(35,"mat-label"),d(36,"Console type"),l(),s(37,"mat-select",25),J(38,kSe,2,2,"mat-option",14,Fe),l()(),s(40,"mat-form-field",11)(41,"mat-label"),d(42,"Console host"),l(),F(43,"input",26),l(),s(44,"mat-form-field",11)(45,"mat-label"),d(46,"Console port"),l(),F(47,"input",27),l(),s(48,"mat-form-field",11)(49,"mat-label"),d(50,"Console HTTP path"),l(),F(51,"input",28),l()()(),s(52,"mat-tab",29)(53,"form",21)(54,"mat-form-field",11)(55,"mat-label"),d(56,"Usage"),l(),F(57,"textarea",30),l()()()()}if(t&2){let e=Re(30),n=b();u(2),ee(n.portsMappingEthernet),u(3),x("value",n.ethernetInterface()),u(),ee(n.ethernetInterfaces),u(5),ee(n.portsMappingTap),u(3),x("value",n.tapInterface()),u(4),x("dataSourceUdp",n.portsMappingUdp),u(3),x("formGroup",n.generalSettingsForm),u(10),ee(n.node==null?null:n.node.tags),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(5),ee(n.consoleTypes),u(15),x("formGroup",n.generalSettingsForm)}}var dM=(()=>{class t{dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);builtInTemplatesConfigurationService=f(Na);cd=f(K);controller;node;name;generalSettingsForm;separatorKeysCodes=[13,188];consoleTypes=[];onCloseOptions=[];bootPriorities=[];diskInterfaces=[];portsMappingEthernet=[];portsMappingTap=[];portsMappingUdp=[];displayedColumns=["adapter_number","port_name","adapter_type","actions"];networkTypes=[];tapInterface=ae("");ethernetInterface=ae("");ethernetInterfaces=["Ethernet 2","Ethernet 3"];udpTunnels=Ut("udpTunnels");constructor(){this.generalSettingsForm=this.formBuilder.group({name:new re("",be.required),console_type:new re(""),remote_console_host:new re(""),remote_console_port:new re(""),remote_console_http_path:new re(""),usage:new re("")})}ngOnInit(){this.nodeService.getNode(this.controller,this.node).subscribe(e=>{this.node=e,this.name=e.name,this.generalSettingsForm.patchValue({name:e.name,console_type:e.console_type||"",remote_console_host:e.properties.remote_console_host||"",remote_console_port:e.properties.remote_console_port||"",remote_console_http_path:e.properties.remote_console_http_path||"",usage:e.properties.usage||""}),this.getConfiguration(),this.node.tags||(this.node.tags=[]),this.portsMappingEthernet=this.node.properties.ports_mapping.filter(n=>n.type==="ethernet"),this.portsMappingTap=this.node.properties.ports_mapping.filter(n=>n.type==="tap"),this.portsMappingUdp=this.node.properties.ports_mapping.filter(n=>n.type==="udp"),this.cd.markForCheck()})}getConfiguration(){this.consoleTypes=this.builtInTemplatesConfigurationService.getConsoleTypesForCloudNodes()}onAddEthernetInterface(){this.ethernetInterface()&&this.portsMappingEthernet.push({interface:this.ethernetInterface(),name:this.ethernetInterface(),port_number:0,type:"ethernet"})}onAddTapInterface(){this.tapInterface()&&this.portsMappingTap.push({interface:this.tapInterface(),name:this.tapInterface(),port_number:0,type:"tap"})}onSaveClick(){if(this.generalSettingsForm.valid){let e=this.generalSettingsForm.value;this.node.name=e.name,this.node.console_type=e.console_type,this.node.properties.remote_console_host=e.remote_console_host,this.node.properties.remote_console_port=e.remote_console_port,this.node.properties.remote_console_http_path=e.remote_console_http_path,this.node.properties.usage=e.usage,this.portsMappingUdp=this.udpTunnels().dataSourceUdp,this.node.properties.ports_mapping=this.portsMappingUdp.concat(this.portsMappingEthernet).concat(this.portsMappingTap),this.nodeService.updateNode(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:n=>{let o=n?.error?.message||n?.message||"Failed to update node";this.toasterService.error(o)}})}else this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogRef.close()}addTag(e){let n=(e.value||"").trim();n&&this.node&&(this.node.tags||(this.node.tags=[]),this.node.tags.push(n)),e.chipInput&&e.chipInput.clear()}removeTag(e){if(!this.node.tags)return;let n=this.node.tags.indexOf(e);n>=0&&this.node.tags.splice(n,1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configurator-cloud"]],viewQuery:function(n,o){n&1&&tn(o.udpTunnels,xSe,5),n&2&&nn()},inputs:{tapInterface:[1,"tapInterface"],ethernetInterface:[1,"ethernetInterface"]},outputs:{tapInterface:"tapInterfaceChange",ethernetInterface:"ethernetInterfaceChange"},decls:13,vars:2,consts:[["udpTunnels",""],["chipList",""],["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],[1,"matCard"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],["label","Ethernet interfaces"],[1,"form-field"],[1,"select"],["placeholder","Ethernet interface",3,"selectionChange","value"],[3,"value"],["mat-button","",1,"form-field",3,"click"],["label","TAP interfaces"],["matInput","","type","text","placeholder","TAP interface",3,"input","value"],["label","UDP tunnels"],[3,"dataSourceUdp"],["label","Miscellaneous"],[3,"formGroup"],["matInput","","type","text","formControlName","name"],[1,"form-field","tags-field"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],["formControlName","console_type"],["matInput","","type","text","formControlName","remote_console_host"],["matInput","","type","text","formControlName","remote_console_port"],["matInput","","type","text","formControlName","remote_console_http_path"],["label","Usage"],["matInput","","formControlName","usage"],[3,"removed"],["matChipRemove",""]],template:function(n,o){n&1&&(s(0,"h1",2),d(1),l(),s(2,"div",3)(3,"div",4)(4,"div",5)(5,"mat-card",6),A(6,TSe,58,7,"mat-tab-group"),l(),F(7,"div"),l()(),s(8,"div",7)(9,"button",8),v("click",function(){return o.onCancelClick()}),d(10,"Cancel"),l(),s(11,"button",9),v("click",function(){return o.onSaveClick()}),d(12,"Apply"),l()()()),n&2&&(u(),X("Configurator for cloud node ",o.name),u(5),O(o.name?6:-1))},dependencies:[Z,nt,Ue,vt,mt,He,ct,pt,bt,Ce,Ve,Be,Dt,Tn,mo,Bo,Vo,Me,ke,lt,we,Te,Mt,At,St,$,le,ti,zn,mi,pi,di,te,se,cM],encapsulation:2,changeDetection:0})}return t})();function ESe(t,i){if(t&1){let e=j();s(0,"mat-list-item")(1,"div",5)(2,"span",6),d(3),l(),s(4,"span",6)(5,"input",7),v("input",function(o){let r=D(e).$implicit,a=b(2);return P(a.onPortNameChange(r.adapter_number,o.target.value))}),l()()()()}if(t&2){let e=i.$implicit;u(3),X(" Adapter ",e.adapter_number," "),u(2),x("value",e.port_name)}}function DSe(t,i){if(t&1&&(s(0,"div",1)(1,"div",5)(2,"span",6),d(3," Adapter number "),l(),s(4,"span",6),d(5," Port name "),l()(),s(6,"div")(7,"mat-list"),J(8,ESe,6,2,"mat-list-item",null,Ii),l()()()),t&2){let e=b();u(8),ee(e.adapters())}}var mM=(()=>{class t{dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);dockerConfigurationService=f(td);cdr=f(K);controller;node;displayedColumns=["adapter_number","port_name"];adapters=ae([]);constructor(){}ngOnInit(){let e=0,n=[];this.node.custom_adapters?n.push(...this.node.custom_adapters):this.node.ports.forEach(o=>{n.push({adapter_number:e,port_name:""}),e++}),this.adapters.set(n)}onPortNameChange(e,n){this.adapters.update(o=>o.map(r=>r.adapter_number===e?tt(H({},r),{port_name:n}):r)),this.cdr.markForCheck()}onSaveClick(){this.node.custom_adapters=this.adapters(),this.nodeService.updateNodeWithCustomAdapters(this.controller,this.node).subscribe(()=>{this.onCancelClick(),this.toasterService.success(`Configuration saved for node ${this.node.name}`)})}onCancelClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configure-custom-adapters"]],inputs:{adapters:[1,"adapters"]},outputs:{adapters:"adaptersChange"},decls:8,vars:2,consts:[["mat-dialog-title",""],[1,"modal-form-container"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],[1,"header"],[1,"column"],["matInput","","type","text","placeholder","Edit port name",3,"input","value"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1),l(),A(2,DSe,10,0,"div",1),s(3,"div",2)(4,"button",3),v("click",function(){return o.onCancelClick()}),d(5,"Cancel"),l(),s(6,"button",4),v("click",function(){return o.onSaveClick()}),d(7,"Apply"),l()()),n&2&&(u(),X("Configure custom adapters for node ",o.node.name),u(),O(o.node?2:-1))},dependencies:[Z,Ce,Ve,Be,Ri,YC,Mc,we,Te,$,le],styles:["th[_ngcontent-%COMP%]{border:0}th.mat-header-cell[_ngcontent-%COMP%]{padding-bottom:16px}td.mat-cell[_ngcontent-%COMP%]{padding-top:16px}.header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;width:100%}.column[_ngcontent-%COMP%]{width:50%}"],changeDetection:0})}return t})();function PSe(t,i){if(t&1){let e=j();s(0,"div",1)(1,"textarea",5),v("input",function(o){D(e);let r=b();return P(r.configuration.set(o.target.value))}),l()()}if(t&2){let e=b();u(),x("value",e.configuration())}}var pM=(()=>{class t{dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);cdr=f(K);controller;node;configuration=ae("");constructor(){}ngOnInit(){this.nodeService.getNetworkConfiguration(this.controller,this.node).subscribe(e=>{this.configuration.set(e),this.cdr.markForCheck()})}onSaveClick(){this.nodeService.saveNetworkConfiguration(this.controller,this.node,this.configuration()).subscribe(e=>{this.onCancelClick(),this.toasterService.success(`Configuration for node ${this.node.name} saved.`)})}onCancelClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-edit-network-configuration"]],inputs:{configuration:[1,"configuration"]},outputs:{configuration:"configurationChange"},decls:8,vars:2,consts:[["mat-dialog-title",""],[1,"modal-form-container"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],["matInput","","type","text",1,"textArea",3,"input","value"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1),l(),A(2,PSe,2,1,"div",1),s(3,"div",2)(4,"button",3),v("click",function(){return o.onCancelClick()}),d(5,"Cancel"),l(),s(6,"button",4),v("click",function(){return o.onSaveClick()}),d(7,"Apply"),l()()),n&2&&(u(),X("Edit network configuration for node ",o.node.name),u(),O(o.node?2:-1))},dependencies:[Z,Ce,Ve,Be,we,Te,$,le],styles:[".textArea[_ngcontent-%COMP%]{width:100%;height:350px}"],changeDetection:0})}return t})();function ISe(t,i){if(t&1){let e=j();s(0,"mat-chip",37),v("removed",function(){let o=D(e).$implicit,r=b(2);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",38),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function ASe(t,i){if(t&1&&(s(0,"mat-option",23),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function OSe(t,i){if(t&1&&(s(0,"mat-option",23),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function NSe(t,i){if(t&1&&(s(0,"mat-option",23),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function RSe(t,i){if(t&1){let e=j();s(0,"mat-tab-group")(1,"mat-tab",9)(2,"form",10)(3,"mat-form-field",11)(4,"mat-label"),d(5,"Name"),l(),F(6,"input",12),l(),s(7,"mat-form-field",13)(8,"mat-label"),d(9,"Tags"),l(),s(10,"mat-chip-grid",null,0),J(12,ISe,4,1,"mat-chip",null,Fe),l(),s(14,"input",14),v("matChipInputTokenEnd",function(o){D(e);let r=b();return P(r.addTag(o))}),l()(),s(15,"mat-form-field",11)(16,"mat-label"),d(17,"Start command"),l(),F(18,"input",15),l(),s(19,"div",16)(20,"mat-form-field",11)(21,"mat-label"),d(22,"Adapters"),l(),F(23,"input",17),l(),s(24,"mat-form-field",11)(25,"mat-label"),d(26,"Base MAC"),l(),F(27,"input",18),l(),s(28,"mat-form-field",11)(29,"mat-label"),d(30,"Maximum memory"),l(),F(31,"input",19),s(32,"span",20),d(33,"MB"),l()(),s(34,"mat-form-field",11)(35,"mat-label"),d(36,"Maximum CPUs"),l(),F(37,"input",21),l(),s(38,"mat-form-field",11)(39,"mat-label"),d(40,"Console type"),l(),s(41,"mat-select",22),J(42,ASe,2,2,"mat-option",23,Fe),l()(),s(44,"mat-form-field",11)(45,"mat-label"),d(46,"Auxiliary console type"),l(),s(47,"mat-select",24),J(48,OSe,2,2,"mat-option",23,Fe),l()(),s(50,"mat-form-field",11)(51,"mat-label"),d(52,"VNC console resolution"),l(),s(53,"mat-select",25),J(54,NSe,2,2,"mat-option",23,Fe),l()(),s(56,"mat-form-field",11)(57,"mat-label"),d(58,"HTTP port in the container"),l(),F(59,"input",26),l(),s(60,"mat-form-field",27)(61,"mat-label"),d(62,"HTTP path"),l(),F(63,"input",28),l(),s(64,"mat-checkbox",29),d(65," Auto start console "),l()(),s(66,"button",30),v("click",function(){D(e);let o=b();return P(o.editNetworkConfiguration())}),d(67," Edit network configuration "),l()()(),s(68,"mat-tab",31)(69,"form",10)(70,"h6"),d(71,"Environment"),l(),s(72,"mat-form-field",11)(73,"mat-label"),d(74,"Environment variables"),l(),F(75,"textarea",32),l(),s(76,"h6"),d(77,"Extra hosts"),l(),s(78,"mat-form-field",11)(79,"mat-label"),d(80,"Extra hosts"),l(),F(81,"textarea",33),l(),s(82,"h6"),d(83,"Additional volumes"),l(),s(84,"mat-form-field",11)(85,"mat-label"),d(86,"Additional volumes"),l(),F(87,"textarea",34),l()()(),s(88,"mat-tab",35)(89,"form",10)(90,"mat-form-field",11)(91,"mat-label"),d(92,"Usage"),l(),F(93,"textarea",36),l()()()()}if(t&2){let e=Re(11),n=b();u(2),x("formGroup",n.generalSettingsForm),u(10),ee(n.node==null?null:n.node.tags),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(28),ee(n.consoleTypes),u(6),ee(n.auxConsoleTypes),u(6),ee(n.consoleResolutions),u(15),x("formGroup",n.generalSettingsForm),u(20),x("formGroup",n.generalSettingsForm)}}var uM=(()=>{class t{dialogReference=f(Pe);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);dockerConfigurationService=f(td);nonNegativeValidator=f(Hl);dialog=f(Je);cd=f(K);controller;node;name;generalSettingsForm;separatorKeysCodes=[13,188];consoleTypes=[];auxConsoleTypes=[];consoleResolutions=["2560x1440","1920x1080","1680x1050","1440x900","1366x768","1280x1024","1280x800","1024x768","800x600","640x480"];conf={autoFocus:!1,panelClass:["base-dialog-panel","docker-configurator-dialog-panel"],disableClose:!0};dialogRef;constructor(){this.generalSettingsForm=this.formBuilder.group({name:new re("",be.required),startCommand:new re(""),adapter:new re("",be.required),mac_address:new re("",be.pattern(this.dockerConfigurationService.getMacAddrRegex())),memory:new re("",this.nonNegativeValidator.get),cpus:new re("",this.nonNegativeValidator.get),console_type:new re(""),aux_type:new re(""),console_auto_start:new re(!1),console_resolution:new re(""),consoleHttpPort:new re("",be.required),consoleHttpPath:new re("",be.required),environment:new re(""),extra_hosts:new re(""),extra_volumes:new re(""),usage:new re("")})}ngOnInit(){this.nodeService.getNode(this.controller,this.node).subscribe(e=>{this.node=e,this.name=e.name,this.generalSettingsForm.patchValue({name:e.name,startCommand:e.properties.start_command||"",adapter:e.properties.adapters||0,mac_address:e.properties.mac_address||"",memory:e.properties.memory||0,cpus:e.properties.cpus||0,console_type:e.console_type||"",aux_type:e.aux_type||"",console_auto_start:e.console_auto_start||!1,console_resolution:e.properties.console_resolution||"",consoleHttpPort:e.properties.console_http_port||"",consoleHttpPath:e.properties.console_http_path||"",environment:e.properties.environment||"",extra_hosts:e.properties.extra_hosts||"",extra_volumes:e.properties.extra_volumes||"",usage:e.properties.usage||""}),this.getConfiguration(),this.node.properties.cpus||(this.node.properties.cpus=0),this.node.tags||(this.node.tags=[]),this.cd.markForCheck()})}getConfiguration(){this.consoleTypes=this.dockerConfigurationService.getConsoleTypes(),this.auxConsoleTypes=this.dockerConfigurationService.getAuxConsoleTypes()}configureCustomAdapters(){this.dialogRef=this.dialog.open(mM,this.conf);let e=this.dialogRef.componentInstance;e.controller=this.controller,e.node=this.node}editNetworkConfiguration(){this.dialogRef=this.dialog.open(pM,this.conf);let e=this.dialogRef.componentInstance;e.controller=this.controller,e.node=this.node}onSaveClick(){if(this.generalSettingsForm.valid){let e=this.generalSettingsForm.value;this.node.name=e.name,this.node.properties.start_command=e.startCommand,this.node.properties.adapters=e.adapter,this.node.properties.mac_address=e.mac_address,this.node.properties.memory=e.memory,this.node.properties.cpus=e.cpus,this.node.console_type=e.console_type,this.node.aux_type=e.aux_type,this.node.console_auto_start=e.console_auto_start,this.node.properties.console_resolution=e.console_resolution,this.node.properties.console_http_port=e.consoleHttpPort,this.node.properties.console_http_path=e.consoleHttpPath,this.node.properties.environment=e.environment,this.node.properties.extra_hosts=e.extra_hosts,this.node.properties.extra_volumes=e.extra_volumes,this.node.properties.usage=e.usage,this.nodeService.updateNode(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:n=>{let o=n?.error?.message||n?.message||"Failed to update node";this.toasterService.error(o)}})}else this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogReference.close()}addTag(e){let n=(e.value||"").trim();n&&this.node&&(this.node.tags||(this.node.tags=[]),this.node.tags.push(n)),e.chipInput&&e.chipInput.clear()}removeTag(e){if(!this.node.tags)return;let n=this.node.tags.indexOf(e);n>=0&&this.node.tags.splice(n,1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configurator-docker"]],decls:12,vars:2,consts:[["chipList",""],["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],[1,"matCard"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],["label","General settings"],[3,"formGroup"],[1,"form-field"],["matInput","","formControlName","name","type","text"],[1,"form-field","tags-field"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],["matInput","","formControlName","startCommand","type","text"],[1,"two-column-grid"],["formControlName","adapter","matInput","","type","number"],["matInput","","formControlName","mac_address","type","text"],["formControlName","memory","matInput","","type","number","min","0"],["matSuffix",""],["formControlName","cpus","matInput","","type","number","min","0"],["formControlName","console_type"],[3,"value"],["formControlName","aux_type"],["formControlName","console_resolution"],["formControlName","consoleHttpPort","matInput","","type","number"],[1,"form-field","grid-span-2"],["matInput","","formControlName","consoleHttpPath","type","text"],["formControlName","console_auto_start",1,"grid-span-2"],["mat-button","",1,"form-field",3,"click"],["label","Advanced"],["matInput","","formControlName","environment","placeholder",`KEY1=value1
|
||
KEY2=value2`],["matInput","","formControlName","extra_hosts"],["matInput","","formControlName","extra_volumes"],["label","Usage"],["matInput","","formControlName","usage"],[3,"removed"],["matChipRemove",""]],template:function(n,o){n&1&&(s(0,"h1",1),d(1),l(),s(2,"div",2)(3,"div",3)(4,"div",4)(5,"mat-card",5),A(6,RSe,94,5,"mat-tab-group"),l()()()(),s(7,"div",6)(8,"button",7),v("click",function(){return o.onCancelClick()}),d(9,"Cancel"),l(),s(10,"button",8),v("click",function(){return o.onSaveClick()}),d(11,"Apply"),l()()),n&2&&(u(),X("Configurator for node ",o.name),u(5),O(o.name?6:-1))},dependencies:[Z,nt,Ue,vt,xi,mt,He,Ro,ct,pt,bt,Ce,Ve,Be,Dt,Tn,mo,Bo,Vo,Me,ke,lt,Fo,we,Te,Mt,At,St,$,le,ti,zn,mi,pi,di,te,se,Ot,Ht],encapsulation:2,changeDetection:0})}return t})();function FSe(t,i){if(t&1){let e=j();s(0,"mat-chip",18),v("removed",function(){let o=D(e).$implicit,r=b(2);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",19),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function LSe(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function BSe(t,i){if(t&1&&F(0,"app-ports",17,1),t&2){let e=b(2);x("ethernetPorts",e.node.properties.ports_mapping)}}function VSe(t,i){if(t&1){let e=j();s(0,"div",5)(1,"mat-card",9)(2,"form",10)(3,"mat-form-field",11)(4,"mat-label"),d(5,"Name"),l(),F(6,"input",12),l(),s(7,"mat-form-field",13)(8,"mat-label"),d(9,"Tags"),l(),s(10,"mat-chip-grid",null,0),J(12,FSe,4,1,"mat-chip",null,Fe),l(),s(14,"input",14),v("matChipInputTokenEnd",function(o){D(e);let r=b();return P(r.addTag(o))}),l()(),s(15,"mat-form-field",11)(16,"mat-label"),d(17,"Console type"),l(),s(18,"mat-select",15),J(19,LSe,2,2,"mat-option",16,Fe),l()()(),A(21,BSe,2,1,"app-ports",17),l()()}if(t&2){let e=Re(11),n=b();u(2),x("formGroup",n.inputForm),u(10),ee(n.node==null?null:n.node.tags),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(5),ee(n.consoleTypes),u(2),O(n.node.properties?21:-1)}}var hM=(()=>{class t{portsComponent=Ut(Wd);dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);ethernetSwitchesConfigurationService=f(Na);cd=f(K);controller;node;name;inputForm;consoleTypes=[];separatorKeysCodes=[13,188];constructor(){this.inputForm=this.formBuilder.group({name:new re("",be.required),console_type:new re("")})}ngOnInit(){this.nodeService.getNode(this.controller,this.node).subscribe(e=>{this.node=e,this.name=this.node.name,this.inputForm.patchValue({name:e.name,console_type:e.console_type||""}),this.getConfiguration(),this.node.tags||(this.node.tags=[]),this.cd.markForCheck()})}getConfiguration(){this.consoleTypes=this.ethernetSwitchesConfigurationService.getConsoleTypesForEthernetSwitches()}onSaveClick(){if(this.inputForm.valid){let e=this.inputForm.value;this.node.name=e.name,this.node.console_type=e.console_type,this.node.properties.ports_mapping=this.portsComponent().ethernetPorts,this.nodeService.updateNode(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:n=>{let o=n?.error?.message||n?.message||"Failed to update node";this.toasterService.error(o)}})}else this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogRef.close()}addTag(e){let n=(e.value||"").trim();n&&this.node&&(this.node.tags||(this.node.tags=[]),this.node.tags.push(n)),e.chipInput&&e.chipInput.clear()}removeTag(e){if(!this.node.tags)return;let n=this.node.tags.indexOf(e);n>=0&&this.node.tags.splice(n,1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configurator-ethernet-switch"]],viewQuery:function(n,o){n&1&&tn(o.portsComponent,Wd,5),n&2&&nn()},decls:10,vars:2,consts:[["chipList",""],["ports",""],["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],[1,"matCard"],[3,"formGroup"],[1,"form-field"],["matInput","","type","text","formControlName","name"],[1,"form-field","tags-field"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],["formControlName","console_type"],[3,"value"],[3,"ethernetPorts"],[3,"removed"],["matChipRemove",""]],template:function(n,o){n&1&&(s(0,"h1",2),d(1),l(),s(2,"div",3)(3,"div",4),A(4,VSe,22,4,"div",5),l()(),s(5,"div",6)(6,"button",7),v("click",function(){return o.onCancelClick()}),d(7,"Cancel"),l(),s(8,"button",8),v("click",function(){return o.onSaveClick()}),d(9,"Apply"),l()()),n&2&&(u(),X("Configurator for Ethernet switch ",o.name),u(3),O(o.node?4:-1))},dependencies:[Z,nt,Ue,vt,mt,He,ct,pt,bt,Ce,Ve,Be,Dt,Tn,Me,ke,lt,we,Te,Mt,At,St,$,le,ti,zn,mi,pi,di,te,se,Wd],encapsulation:2,changeDetection:0})}return t})();function zSe(t,i){if(t&1){let e=j();s(0,"mat-chip",15),v("removed",function(){let o=D(e).$implicit,r=b();return P(r.removeTag(o))}),d(1),s(2,"mat-icon",16),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}var fM=(()=>{class t{dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);vpcsConfigurationService=f(fp);cd=f(K);controller;node;numberOfPorts;inputForm;consoleTypes=[];categories=[];name;separatorKeysCodes=[13,188];constructor(){this.inputForm=this.formBuilder.group({name:new re("",be.required),numberOfPorts:new re("")})}ngOnInit(){this.nodeService.getNode(this.controller,this.node).subscribe(e=>{this.node=e,this.name=this.node.name,this.numberOfPorts=this.node.ports.length,this.inputForm.patchValue({name:e.name,numberOfPorts:this.node.ports.length}),this.getConfiguration(),this.node.tags||(this.node.tags=[]),this.cd.markForCheck()})}getConfiguration(){this.consoleTypes=this.vpcsConfigurationService.getConsoleTypes(),this.categories=this.vpcsConfigurationService.getCategories()}onSaveClick(){if(this.inputForm.valid){let e=this.inputForm.value;this.node.name=e.name,this.numberOfPorts=e.numberOfPorts,this.node.properties.ports_mapping=[];for(let n=0;n<this.numberOfPorts;n++)this.node.properties.ports_mapping.push({name:`Ethernet${n}`,port_number:n});this.nodeService.updateNode(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:n=>{let o=n?.error?.message||n?.message||"Failed to update node";this.toasterService.error(o)}})}else this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogRef.close()}addTag(e){let n=(e.value||"").trim();n&&this.node&&(this.node.tags||(this.node.tags=[]),this.node.tags.push(n)),e.chipInput&&e.chipInput.clear()}removeTag(e){if(!this.node.tags)return;let n=this.node.tags.indexOf(e);n>=0&&this.node.tags.splice(n,1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configurator-ethernet-hub"]],decls:28,vars:4,consts:[["chipList",""],["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],[1,"matCard"],[3,"formGroup"],[1,"form-field"],["matInput","","type","text","formControlName","name"],[1,"form-field","tags-field"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],["matInput","","type","number","formControlName","numberOfPorts"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],[3,"removed"],["matChipRemove",""]],template:function(n,o){if(n&1&&(s(0,"h1",1),d(1),l(),s(2,"div",2)(3,"div",3)(4,"div",4)(5,"mat-card",5)(6,"form",6)(7,"mat-form-field",7)(8,"mat-label"),d(9,"Name"),l(),F(10,"input",8),l(),s(11,"mat-form-field",9)(12,"mat-label"),d(13,"Tags"),l(),s(14,"mat-chip-grid",null,0),J(16,zSe,4,1,"mat-chip",null,Fe),l(),s(18,"input",10),v("matChipInputTokenEnd",function(a){return o.addTag(a)}),l()(),s(19,"mat-form-field",7)(20,"mat-label"),d(21,"Number of ports"),l(),F(22,"input",11),l()()()()()(),s(23,"div",12)(24,"button",13),v("click",function(){return o.onCancelClick()}),d(25,"Cancel"),l(),s(26,"button",14),v("click",function(){return o.onSaveClick()}),d(27,"Apply"),l()()),n&2){let r=Re(15);u(),X("Configurator for Ethernet hub ",o.name),u(5),x("formGroup",o.inputForm),u(10),ee(o.node==null?null:o.node.tags),u(2),x("matChipInputFor",r)("matChipInputSeparatorKeyCodes",o.separatorKeysCodes)}},dependencies:[Z,nt,Ue,vt,xi,mt,He,ct,pt,bt,Ce,Ve,Be,Dt,Tn,Me,ke,lt,we,Te,$,le,ti,zn,mi,pi,di,te,se],encapsulation:2,changeDetection:0})}return t})();var jSe=()=>["c1700","c2600","c2691","c3600","c3725","c3745"],$Se=()=>[0,1,2,3,4,5,6],HSe=()=>[0,1,2];function USe(t,i){if(t&1&&(s(0,"mat-label"),d(1),l()),t&2){let e=b(2);u(),X(" (chassis: ",e.node.properties.chassis,")")}}function GSe(t,i){if(t&1){let e=j();s(0,"mat-chip",49),v("removed",function(){let o=D(e).$implicit,r=b(2);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",50),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function WSe(t,i){if(t&1&&(s(0,"mat-option",18),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function qSe(t,i){if(t&1&&(s(0,"mat-form-field",11)(1,"mat-label"),d(2,"Midplane"),l(),s(3,"mat-select",51),J(4,WSe,2,2,"mat-option",18,Fe),l()()),t&2){let e=b(2);u(4),ee(e.MidplaneTypes)}}function XSe(t,i){if(t&1&&(s(0,"mat-option",18),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function QSe(t,i){if(t&1&&(s(0,"mat-form-field",11)(1,"mat-label"),d(2,"NPE"),l(),s(3,"mat-select",52),J(4,XSe,2,2,"mat-option",18,Fe),l()()),t&2){let e=b(2);u(4),ee(e.NPETypes)}}function YSe(t,i){if(t&1&&(s(0,"mat-option",18),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function KSe(t,i){if(t&1&&(s(0,"mat-option",18),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function ZSe(t,i){t&1&&(s(0,"mat-form-field",11)(1,"mat-label"),d(2,"I/O memory"),l(),F(3,"input",53),s(4,"span",28),d(5,"%"),l()())}function JSe(t,i){t&1&&(s(0,"mat-option",18),d(1),l()),t&2&&(u(),X(" ",""," "))}function ewe(t,i){if(t&1&&(s(0,"mat-option",18),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function twe(t,i){if(t&1&&(s(0,"mat-form-field",11)(1,"mat-label"),d(2),l(),s(3,"mat-select",54),A(4,JSe,2,1,"mat-option",18),J(5,ewe,2,2,"mat-option",18,Fe),l()()),t&2){let e=b().$implicit,n=b(2);u(2),X("Slot ",e),u(),x("formControlName","slot"+e),u(),O(n.adapterMatrix[n.node.properties.platform][n.node.properties.chassis||""][e].length>1&&!n.adapterMatrix[n.node.properties.platform][n.node.properties.chassis||""][e][0].startsWith("C7200")?4:-1),u(),ee(n.adapterMatrix[n.node.properties.platform][n.node.properties.chassis||""][e])}}function nwe(t,i){if(t&1&&A(0,twe,7,3,"mat-form-field",11),t&2){let e=i.$implicit,n=b(2);O(n.adapterMatrix[n.node.properties.platform][n.node.properties.chassis||""][e]?0:-1)}}function iwe(t,i){if(t&1&&(s(0,"mat-option",18),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function owe(t,i){if(t&1&&(s(0,"mat-form-field",11)(1,"mat-label"),d(2),l(),s(3,"mat-select",54)(4,"mat-option",18),d(5),l(),J(6,iwe,2,2,"mat-option",18,Fe),l()()),t&2){let e=b().$implicit,n=b(3);u(2),X("WIC ",e),u(),x("formControlName","wic"+e),u(2),X(" ",""," "),u(),ee(n.wicMatrix[n.node.properties.platform][e])}}function rwe(t,i){if(t&1&&A(0,owe,8,3,"mat-form-field",11),t&2){let e=i.$implicit,n=b(3);O(n.wicMatrix[n.node.properties.platform][e]?0:-1)}}function awe(t,i){t&1&&(s(0,"div",35)(1,"h6",36),d(2,"WICs"),l(),s(3,"div",37),J(4,rwe,1,1,null,null,Fe),l()()),t&2&&(u(4),ee(Jt(0,HSe)))}function swe(t,i){if(t&1){let e=j();s(0,"mat-tab-group")(1,"mat-tab",9),F(2,"br"),s(3,"mat-label"),d(4),l(),A(5,USe,2,1,"mat-label"),F(6,"br")(7,"br"),s(8,"form",10)(9,"mat-form-field",11)(10,"mat-label"),d(11,"Name"),l(),F(12,"input",12),l(),s(13,"mat-form-field",13)(14,"mat-label"),d(15,"Tags"),l(),s(16,"mat-chip-grid",null,0),J(18,GSe,4,1,"mat-chip",null,Fe),l(),s(20,"input",14),v("matChipInputTokenEnd",function(o){D(e);let r=b();return P(r.addTag(o))}),l()(),s(21,"mat-form-field",11)(22,"mat-label"),d(23,"IOS image path"),l(),F(24,"input",15),l(),s(25,"div",16),A(26,qSe,6,0,"mat-form-field",11),A(27,QSe,6,0,"mat-form-field",11),s(28,"mat-form-field",11)(29,"mat-label"),d(30,"Console type"),l(),s(31,"mat-select",17),J(32,YSe,2,2,"mat-option",18,Fe),l()(),s(34,"mat-form-field",11)(35,"mat-label"),d(36,"Auxiliary console type"),l(),s(37,"mat-select",19),J(38,KSe,2,2,"mat-option",18,Fe),l()(),s(40,"mat-checkbox",20),d(41," Auto start console "),l()()()(),s(42,"mat-tab",21)(43,"div",22)(44,"div",23)(45,"div",24)(46,"h3",25),d(47,"Memory"),l()(),s(48,"div",26)(49,"form",10)(50,"mat-form-field",11)(51,"mat-label"),d(52,"RAM"),l(),F(53,"input",27),s(54,"span",28),d(55,"MiB"),l()(),s(56,"mat-form-field",11)(57,"mat-label"),d(58,"NVRAM"),l(),F(59,"input",29),s(60,"span",28),d(61,"MiB"),l()(),A(62,ZSe,6,0,"mat-form-field",11),l()()(),s(63,"div",23)(64,"div",24)(65,"h3",25),d(66,"Disks"),l()(),s(67,"div",26)(68,"form",10)(69,"mat-form-field",11)(70,"mat-label"),d(71,"PCMCIA disk0"),l(),F(72,"input",30),s(73,"span",28),d(74,"MiB"),l()(),s(75,"mat-form-field",11)(76,"mat-label"),d(77,"PCMCIA disk1"),l(),F(78,"input",31),s(79,"span",28),d(80,"MiB"),l()(),s(81,"mat-checkbox",32),d(82," Automatically delete NVRAM and disk files "),l()()()()()(),s(83,"mat-tab",33)(84,"form",10)(85,"div",34)(86,"div",35)(87,"h6",36),d(88,"Network Adapters"),l(),s(89,"div",37),J(90,nwe,1,1,null,null,Fe),l()(),A(92,awe,6,1,"div",35),l()()(),s(93,"mat-tab",38)(94,"form",10)(95,"div",22)(96,"div",23)(97,"div",24)(98,"h3",25),d(99,"System"),l()(),s(100,"div",26)(101,"mat-form-field",11)(102,"mat-label"),d(103,"System ID"),l(),F(104,"input",39),l(),s(105,"mat-form-field",11)(106,"mat-label"),d(107,"Base MAC"),l(),F(108,"input",40),l()()(),s(109,"div",23)(110,"div",24)(111,"h3",25),d(112,"Optimizations"),l()(),s(113,"div",26)(114,"mat-form-field",11)(115,"mat-label"),d(116,"Idle-PC"),l(),F(117,"input",41),l(),s(118,"mat-form-field",11)(119,"mat-label"),d(120,"Idlemax"),l(),F(121,"input",42),l(),s(122,"mat-form-field",11)(123,"mat-label"),d(124,"Idlesleep"),l(),F(125,"input",43),s(126,"span",28),d(127,"ms"),l()(),s(128,"mat-form-field",11)(129,"mat-label"),d(130,"Exec area"),l(),F(131,"input",44),s(132,"span",28),d(133,"MiB"),l()(),s(134,"mat-checkbox",45),d(135," Enable mmap support "),l(),s(136,"mat-checkbox",46),d(137," Enable sparse memory support "),l()()()()()(),s(138,"mat-tab",47)(139,"form",10)(140,"mat-form-field",11)(141,"mat-label"),d(142,"Usage"),l(),F(143,"textarea",48),l()()()()}if(t&2){let e=Re(17),n=b();u(4),X("Platform: ",n.node.properties.platform),u(),O(n.node.properties.chassis?5:-1),u(3),x("formGroup",n.generalSettingsForm),u(10),ee(n.node==null?null:n.node.tags),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(6),O(n.node.properties.midplane?26:-1),u(),O(n.node.properties.npe?27:-1),u(5),ee(n.consoleTypes),u(6),ee(n.consoleTypes),u(11),x("formGroup",n.memoryForm),u(13),O(Jt(14,jSe).includes(n.node.properties.platform)?62:-1),u(6),x("formGroup",n.memoryForm),u(16),x("formGroup",n.generalSettingsForm),u(6),ee(Jt(15,$Se)),u(2),O(n.wicMatrix[n.node.properties.platform]?92:-1),u(2),x("formGroup",n.advancedSettingsForm),u(45),x("formGroup",n.advancedSettingsForm)}}var gM=(()=>{class t{dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);configurationService=f(lp);cd=f(K);controller;node;name;generalSettingsForm;memoryForm;advancedSettingsForm;consoleTypes=[];NPETypes=[];MidplaneTypes=[];adapterMatrix={};wicMatrix={};separatorKeysCodes=[13,188];constructor(){this.generalSettingsForm=this.formBuilder.group({name:new re("",be.required),path:new re("",be.required),midplane:new re(""),npe:new re(""),console_type:new re(""),aux_type:new re(""),console_auto_start:new re(!1),slot0:new re(""),slot1:new re(""),slot2:new re(""),slot3:new re(""),slot4:new re(""),slot5:new re(""),slot6:new re(""),wic0:new re(""),wic1:new re(""),wic2:new re("")}),this.memoryForm=this.formBuilder.group({ram:new re("",be.required),nvram:new re("",be.required),iomem:new re(""),disk0:new re(""),disk1:new re(""),auto_delete_disks:new re(!1)}),this.advancedSettingsForm=this.formBuilder.group({system_id:new re(""),mac_addr:new re("",be.pattern(this.configurationService.getMacAddrRegex())),idlepc:new re("",be.pattern(this.configurationService.getIdlepcRegex())),idlemax:new re(""),idlesleep:new re(""),exec_area:new re(""),mmap:new re(!1),sparsemem:new re(!1),usage:new re("")})}ngOnInit(){this.nodeService.getNode(this.controller,this.node).subscribe(e=>{this.node=e,this.name=e.name,this.generalSettingsForm.patchValue({name:e.name,path:e.properties.image||"",midplane:e.properties.midplane||"",npe:e.properties.npe||"",console_type:e.console_type||"",aux_type:e.properties.aux_type||"",console_auto_start:e.console_auto_start||!1,slot0:e.properties.slot0||"",slot1:e.properties.slot1||"",slot2:e.properties.slot2||"",slot3:e.properties.slot3||"",slot4:e.properties.slot4||"",slot5:e.properties.slot5||"",slot6:e.properties.slot6||"",wic0:e.properties.wic0||"",wic1:e.properties.wic1||"",wic2:e.properties.wic2||""}),this.memoryForm.patchValue({ram:e.properties.ram||"",nvram:e.properties.nvram||"",iomem:e.properties.iomem||"",disk0:e.properties.disk0||0,disk1:e.properties.disk1||0,auto_delete_disks:e.properties.auto_delete_disks||!1}),this.advancedSettingsForm.patchValue({system_id:e.properties.system_id||"",mac_addr:e.properties.mac_addr||"",idlepc:e.properties.idlepc||"",idlemax:e.properties.idlemax||"",idlesleep:e.properties.idlesleep||"",exec_area:e.properties.exec_area||"",mmap:e.properties.mmap||!1,sparsemem:e.properties.sparsemem||!1,usage:e.properties.usage||""}),this.node.tags||(this.node.tags=[]),this.getConfiguration(),this.fillSlotsData(),this.cd.markForCheck()})}getConfiguration(){this.consoleTypes=this.configurationService.getConsoleTypes(),this.NPETypes=this.configurationService.getNPETypes(),this.MidplaneTypes=this.configurationService.getMidplaneTypes(),this.adapterMatrix=this.configurationService.getAdapterMatrix(),this.wicMatrix=this.configurationService.getWicMatrix()}fillSlotsData(){}saveSlotsData(){let e=this.generalSettingsForm.value;for(let n=0;n<=6;n++){let o=this.node.properties.platform,r=this.node.properties.chassis||"";if(this.adapterMatrix?.[o]?.[r]?.[n]){let c=e[`slot${n}`];c==null?this.node.properties[`slot${n}`]="":this.node.properties[`slot${n}`]=c}else delete this.node.properties[`slot${n}`]}for(let n=0;n<=2;n++){let o=this.node.properties.platform;if(this.wicMatrix?.[o]?.[n]){let a=e[`wic${n}`];a==null?this.node.properties[`wic${n}`]="":this.node.properties[`wic${n}`]=a}else delete this.node.properties[`wic${n}`]}}onSaveClick(){if(this.generalSettingsForm.valid&&this.memoryForm.valid&&this.advancedSettingsForm.valid){let e=this.generalSettingsForm.value,n=this.memoryForm.value,o=this.advancedSettingsForm.value;this.node.name=e.name,this.node.properties.image=e.path,this.node.properties.midplane=e.midplane,this.node.properties.npe=e.npe,this.node.console_type=e.console_type,this.node.properties.aux_type=e.aux_type,this.node.console_auto_start=e.console_auto_start,this.node.properties.ram=n.ram,this.node.properties.nvram=n.nvram,["c1700","c2600","c2691","c3600","c3725","c3745"].includes(this.node.properties.platform)?this.node.properties.iomem=n.iomem!==""?n.iomem:null:delete this.node.properties.iomem,this.node.properties.disk0=n.disk0,this.node.properties.disk1=n.disk1,this.node.properties.auto_delete_disks=n.auto_delete_disks,this.node.properties.system_id=o.system_id,this.node.properties.mac_addr=o.mac_addr,this.node.properties.idlepc=o.idlepc,this.node.properties.idlemax=o.idlemax,this.node.properties.idlesleep=o.idlesleep,this.node.properties.exec_area=o.exec_area,this.node.properties.mmap=o.mmap,this.node.properties.sparsemem=o.sparsemem,this.node.properties.usage=o.usage,this.saveSlotsData(),this.nodeService.updateNode(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:a=>{let c=a?.error?.message||a?.message||"Failed to update node";this.toasterService.error(c)}})}else this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogRef.close()}addTag(e){let n=(e.value||"").trim();n&&this.node&&(this.node.tags||(this.node.tags=[]),this.node.tags.push(n)),e.chipInput&&e.chipInput.clear()}removeTag(e){if(!this.node.tags)return;let n=this.node.tags.indexOf(e);n>=0&&this.node.tags.splice(n,1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configurator-ios"]],decls:12,vars:2,consts:[["chipList",""],["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],[1,"matCard"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],["label","General settings"],[3,"formGroup"],[1,"form-field"],["matInput","","type","text","formControlName","name"],[1,"form-field","tags-field"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],["matInput","","type","text","formControlName","path"],[1,"form-grid"],["formControlName","console_type"],[3,"value"],["formControlName","aux_type"],["formControlName","console_auto_start",1,"form-grid__full"],["label","Memories and disks"],[1,"disk-cards-grid"],[1,"disk-card"],[1,"disk-card__header"],[1,"disk-card__title"],[1,"disk-card__content"],["matInput","","type","number","min","0","formControlName","ram"],["matSuffix",""],["matInput","","type","number","min","0","formControlName","nvram"],["matInput","","type","number","min","0","formControlName","disk0"],["matInput","","type","number","min","0","formControlName","disk1"],["formControlName","auto_delete_disks"],["label","Slots"],[1,"ios-configurator__slots-section"],[1,"ios-configurator__slots-group"],[1,"ios-configurator__slots-title"],[1,"ios-configurator__slots-grid"],["label","Advanced"],["matInput","","type","text","formControlName","system_id"],["matInput","","formControlName","mac_addr","type","text"],["matInput","","formControlName","idlepc"],["matInput","","type","number","min","0","formControlName","idlemax"],["matInput","","type","number","min","0","formControlName","idlesleep"],["matInput","","type","number","min","0","formControlName","exec_area"],["formControlName","mmap"],["formControlName","sparsemem"],["label","Usage"],["matInput","","formControlName","usage"],[3,"removed"],["matChipRemove",""],["formControlName","midplane"],["formControlName","npe"],["matInput","","type","number","min","0","max","100","formControlName","iomem"],[3,"formControlName"]],template:function(n,o){n&1&&(s(0,"h1",1),d(1),l(),s(2,"div",2)(3,"div",3)(4,"div",4)(5,"mat-card",5),A(6,swe,144,16,"mat-tab-group"),l()()()(),s(7,"div",6)(8,"button",7),v("click",function(){return o.onCancelClick()}),d(9,"Cancel"),l(),s(10,"button",8),v("click",function(){return o.onSaveClick()}),d(11,"Apply"),l()()),n&2&&(u(),X("Configurator for IOS router ",o.name),u(5),O(o.name?6:-1))},dependencies:[Z,nt,Ue,vt,xi,mt,He,Ro,Sc,ct,pt,bt,Ce,Ve,Be,Dt,Tn,mo,Bo,Vo,Me,ke,lt,Fo,we,Te,Mt,At,St,$,le,ti,zn,mi,pi,di,te,se,Ot,Ht],styles:["table[_ngcontent-%COMP%], .form-field[_ngcontent-%COMP%], .configButton[_ngcontent-%COMP%]{width:100%}.modal-form-container[_ngcontent-%COMP%]{padding:16px}.file-button[_ngcontent-%COMP%]{width:18%}.create-button[_ngcontent-%COMP%]{width:100%}.file-name-form-field[_ngcontent-%COMP%]{padding-left:2%;width:80%}.nonvisible[_ngcontent-%COMP%]{display:none}mat-radio-button[_ngcontent-%COMP%]{margin-right:8px}.tags-field[_ngcontent-%COMP%]{width:100%}",".ios-configurator__slots-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:32px}.ios-configurator__slots-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.ios-configurator__slots-title[_ngcontent-%COMP%]{font-size:16px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.ios-configurator__slots-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}"],changeDetection:0})}return t})();function lwe(t,i){if(t&1){let e=j();s(0,"mat-chip",24),v("removed",function(){let o=D(e).$implicit,r=b(2);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",25),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function cwe(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function dwe(t,i){t&1&&(s(0,"mat-form-field",11)(1,"mat-label"),d(2,"RAM size"),l(),F(3,"input",26),s(4,"span",27),d(5,"MB"),l()())}function mwe(t,i){t&1&&(s(0,"mat-form-field",11)(1,"mat-label"),d(2,"NVRAM size"),l(),F(3,"input",28),s(4,"span",27),d(5,"KB"),l()())}function pwe(t,i){if(t&1){let e=j();s(0,"mat-tab-group")(1,"mat-tab",9)(2,"form",10)(3,"mat-form-field",11)(4,"mat-label"),d(5,"Name"),l(),F(6,"input",12),l(),s(7,"mat-form-field",13)(8,"mat-label"),d(9,"Tags"),l(),s(10,"mat-chip-grid",null,0),J(12,lwe,4,1,"mat-chip",null,Fe),l(),s(14,"input",14),v("matChipInputTokenEnd",function(o){D(e);let r=b();return P(r.addTag(o))}),l()(),s(15,"mat-form-field",11)(16,"mat-label"),d(17,"Console type"),l(),s(18,"mat-select",15),J(19,cwe,2,2,"mat-option",16,Fe),l()(),s(21,"mat-checkbox",17),d(22," Auto start console "),l(),s(23,"mat-checkbox",18),d(24," Use default IOU values for memories "),l(),A(25,dwe,6,0,"mat-form-field",11),A(26,mwe,6,0,"mat-form-field",11),l()(),s(27,"mat-tab",19)(28,"form",10)(29,"mat-form-field",11)(30,"mat-label"),d(31,"Ethernet adapters"),l(),F(32,"input",20),l(),s(33,"mat-form-field",11)(34,"mat-label"),d(35,"Serial adapters"),l(),F(36,"input",21),l()()(),s(37,"mat-tab",22)(38,"form",10)(39,"mat-form-field",11)(40,"mat-label"),d(41,"Usage"),l(),F(42,"textarea",23),l()()()()}if(t&2){let e=Re(11),n=b();u(2),x("formGroup",n.generalSettingsForm),u(10),ee(n.node==null?null:n.node.tags),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(5),ee(n.consoleTypes),u(6),O(n.generalSettingsForm.value.use_default_iou_values?-1:25),u(),O(n.generalSettingsForm.value.use_default_iou_values?-1:26),u(2),x("formGroup",n.networkForm),u(10),x("formGroup",n.generalSettingsForm)}}var _M=(()=>{class t{dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);configurationService=f(eg);cd=f(K);controller;node;name;generalSettingsForm;networkForm;separatorKeysCodes=[13,188];consoleTypes=[];constructor(){this.generalSettingsForm=this.formBuilder.group({name:new re("",be.required),console_type:new re(""),console_auto_start:new re(!1),use_default_iou_values:new re(!0),ram:new re(""),nvram:new re(""),usage:new re("")}),this.networkForm=this.formBuilder.group({ethernetAdapters:new re("",be.required),serialAdapters:new re("",be.required)})}ngOnInit(){this.nodeService.getNode(this.controller,this.node).subscribe(e=>{this.node=e,this.name=e.name,this.generalSettingsForm.patchValue({name:e.name,console_type:e.console_type||"",console_auto_start:e.console_auto_start||!1,use_default_iou_values:e.properties.use_default_iou_values!==void 0?e.properties.use_default_iou_values:!0,ram:e.properties.ram||"",nvram:e.properties.nvram||"",usage:e.properties.usage||""}),this.networkForm.patchValue({ethernetAdapters:e.properties.ethernet_adapters,serialAdapters:e.properties.serial_adapters}),this.getConfiguration(),this.node.tags||(this.node.tags=[]),this.cd.markForCheck()})}getConfiguration(){this.consoleTypes=this.configurationService.getConsoleTypes()}onSaveClick(){if(this.generalSettingsForm.valid&&this.networkForm.valid){let e=this.generalSettingsForm.value;this.node.name=e.name,this.node.console_type=e.console_type,this.node.console_auto_start=e.console_auto_start,this.node.properties.use_default_iou_values=e.use_default_iou_values,this.node.properties.ram=e.ram,this.node.properties.nvram=e.nvram,this.node.properties.usage=e.usage,this.node.properties.ethernet_adapters=this.networkForm.value.ethernetAdapters,this.node.properties.serial_adapters=this.networkForm.value.serialAdapters,this.nodeService.updateNode(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:n=>{let o=n?.error?.message||n?.message||"Failed to update node";this.toasterService.error(o)}})}else this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogRef.close()}addTag(e){let n=(e.value||"").trim();n&&this.node&&(this.node.tags||(this.node.tags=[]),this.node.tags.push(n)),e.chipInput&&e.chipInput.clear()}removeTag(e){if(!this.node.tags)return;let n=this.node.tags.indexOf(e);n>=0&&this.node.tags.splice(n,1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configurator-iou"]],decls:12,vars:2,consts:[["chipList",""],["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],[1,"matCard"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],["label","General settings"],[3,"formGroup"],[1,"form-field"],["matInput","","type","text","formControlName","name"],[1,"form-field","tags-field"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],["formControlName","console_type"],[3,"value"],["formControlName","console_auto_start"],["formControlName","use_default_iou_values"],["label","Network"],["matInput","","formControlName","ethernetAdapters","type","number"],["matInput","","formControlName","serialAdapters","type","number"],["label","Usage"],["matInput","","formControlName","usage"],[3,"removed"],["matChipRemove",""],["matInput","","type","number","min","1","formControlName","ram"],["matSuffix",""],["matInput","","type","number","min","1","formControlName","nvram"]],template:function(n,o){n&1&&(s(0,"h1",1),d(1),l(),s(2,"div",2)(3,"div",3)(4,"div",4)(5,"mat-card",5),A(6,pwe,43,7,"mat-tab-group"),l()()()(),s(7,"div",6)(8,"button",7),v("click",function(){return o.onCancelClick()}),d(9,"Cancel"),l(),s(10,"button",8),v("click",function(){return o.onSaveClick()}),d(11,"Apply"),l()()),n&2&&(u(),X("Configurator for IOU device ",o.name),u(5),O(o.name?6:-1))},dependencies:[Z,nt,Ue,vt,xi,mt,He,Ro,ct,pt,bt,Ce,Ve,Be,Dt,Tn,mo,Bo,Vo,Me,ke,lt,Fo,we,Te,Mt,At,St,$,le,ti,zn,mi,pi,di,te,se,Ot,Ht],encapsulation:2,changeDetection:0})}return t})();function uwe(t,i){if(t&1){let e=j();s(0,"mat-chip",14),v("removed",function(){let o=D(e).$implicit,r=b();return P(r.removeTag(o))}),d(1),s(2,"mat-icon",15),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}var vM=(()=>{class t{dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);cd=f(K);controller;node;name;generalSettingsForm;separatorKeysCodes=[13,188];constructor(){this.generalSettingsForm=this.formBuilder.group({name:new re("",be.required)})}ngOnInit(){this.nodeService.getNode(this.controller,this.node).subscribe(e=>{this.node=e,this.name=e.name,this.generalSettingsForm.patchValue({name:e.name}),this.node.tags||(this.node.tags=[]),this.cd.markForCheck()})}onSaveClick(){if(this.generalSettingsForm.valid){let e=this.generalSettingsForm.value;this.node.name=e.name,this.nodeService.updateNode(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:n=>{let o=n?.error?.message||n?.message||"Failed to update node";this.toasterService.error(o)}})}else this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogRef.close()}addTag(e){let n=(e.value||"").trim();n&&this.node&&(this.node.tags||(this.node.tags=[]),this.node.tags.push(n)),e.chipInput&&e.chipInput.clear()}removeTag(e){if(!this.node.tags)return;let n=this.node.tags.indexOf(e);n>=0&&this.node.tags.splice(n,1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configurator-nat"]],decls:24,vars:4,consts:[["chipList",""],["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],[1,"matCard"],[3,"formGroup"],[1,"form-field"],["matInput","","type","text","formControlName","name"],[1,"form-field","tags-field"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],[3,"removed"],["matChipRemove",""]],template:function(n,o){if(n&1&&(s(0,"h1",1),d(1),l(),s(2,"div",2)(3,"div",3)(4,"div",4)(5,"mat-card",5)(6,"form",6)(7,"mat-form-field",7)(8,"mat-label"),d(9,"Name"),l(),F(10,"input",8),l(),s(11,"mat-form-field",9)(12,"mat-label"),d(13,"Tags"),l(),s(14,"mat-chip-grid",null,0),J(16,uwe,4,1,"mat-chip",null,Fe),l(),s(18,"input",10),v("matChipInputTokenEnd",function(a){return o.addTag(a)}),l()()()()()()(),s(19,"div",11)(20,"button",12),v("click",function(){return o.onCancelClick()}),d(21,"Cancel"),l(),s(22,"button",13),v("click",function(){return o.onSaveClick()}),d(23,"Apply"),l()()),n&2){let r=Re(15);u(),X("Configurator for NAT node ",o.name),u(5),x("formGroup",o.generalSettingsForm),u(10),ee(o.node==null?null:o.node.tags),u(2),x("matChipInputFor",r)("matChipInputSeparatorKeyCodes",o.separatorKeysCodes)}},dependencies:[Z,nt,Ue,vt,mt,He,ct,pt,bt,Ce,Ve,Be,Dt,Tn,Me,ke,lt,we,Te,$,le,ti,zn,mi,pi,di,te,se],encapsulation:2,changeDetection:0})}return t})();var hwe=["panel"],fwe=["*"];function gwe(t,i){if(t&1&&(_o(0,"div",1,0),Yt(2),wo()),t&2){let e=i.id,n=b();Mo(n._classList),je("mat-mdc-autocomplete-visible",n.showPanel)("mat-mdc-autocomplete-hidden",!n.showPanel)("mat-autocomplete-panel-animations-enabled",!n._animationsDisabled)("mat-primary",n._color==="primary")("mat-accent",n._color==="accent")("mat-warn",n._color==="warn"),No("id",n.id),It("aria-label",n.ariaLabel||null)("aria-labelledby",n._getPanelAriaLabelledby(e))}}var RN=class{source;option;constructor(i,e){this.source=i,this.option=e}},qH=new kt("mat-autocomplete-default-options",{providedIn:"root",factory:()=>({autoActiveFirstOption:!1,autoSelectActiveOption:!1,hideSingleSelectionIndicator:!1,requireSelection:!1,hasBackdrop:!1})}),Ul=(()=>{class t{_changeDetectorRef=f(K);_elementRef=f(Lt);_defaults=f(qH);_animationsDisabled=Qi();_activeOptionChanges=so.EMPTY;_keyManager;showPanel=!1;get isOpen(){return this._isOpen&&this.showPanel}_isOpen=!1;_latestOpeningTrigger;_setColor(e){this._color=e,this._changeDetectorRef.markForCheck()}_color;template;panel;options;optionGroups;ariaLabel;ariaLabelledby;displayWith=null;autoActiveFirstOption;autoSelectActiveOption;requireSelection;panelWidth;disableRipple=!1;optionSelected=new ve;opened=new ve;closed=new ve;optionActivated=new ve;set classList(e){this._classList=e,this._elementRef.nativeElement.className=""}_classList;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._syncParentProperties()}_hideSingleSelectionIndicator;_syncParentProperties(){if(this.options)for(let e of this.options)e._changeDetectorRef.markForCheck()}id=f(Oi).getId("mat-autocomplete-");inertGroups;constructor(){let e=f(Ta);this.inertGroups=e?.SAFARI||!1,this.autoActiveFirstOption=!!this._defaults.autoActiveFirstOption,this.autoSelectActiveOption=!!this._defaults.autoSelectActiveOption,this.requireSelection=!!this._defaults.requireSelection,this._hideSingleSelectionIndicator=this._defaults.hideSingleSelectionIndicator??!1}ngAfterContentInit(){this._keyManager=new _R(this.options).withWrap().skipPredicate(this._skipPredicate),this._activeOptionChanges=this._keyManager.change.subscribe(e=>{this.isOpen&&this.optionActivated.emit({source:this,option:this.options.toArray()[e]||null})}),this._setVisibility()}ngOnDestroy(){this._keyManager?.destroy(),this._activeOptionChanges.unsubscribe()}_setScrollTop(e){this.panel&&(this.panel.nativeElement.scrollTop=e)}_getScrollTop(){return this.panel?this.panel.nativeElement.scrollTop:0}_setVisibility(){this.showPanel=!!this.options?.length,this._changeDetectorRef.markForCheck()}_emitSelectEvent(e){let n=new RN(this,e);this.optionSelected.emit(n)}_getPanelAriaLabelledby(e){if(this.ariaLabel)return null;let n=e?e+" ":"";return this.ariaLabelledby?n+this.ariaLabelledby:e}_skipPredicate(){return!1}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-autocomplete"]],contentQueries:function(n,o,r){if(n&1&&$i(r,St,5)(r,wR,5),n&2){let a;gt(a=_t())&&(o.options=a),gt(a=_t())&&(o.optionGroups=a)}},viewQuery:function(n,o){if(n&1&&gn(So,7)(hwe,5),n&2){let r;gt(r=_t())&&(o.template=r.first),gt(r=_t())&&(o.panel=r.first)}},hostAttrs:[1,"mat-mdc-autocomplete"],inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],displayWith:"displayWith",autoActiveFirstOption:[2,"autoActiveFirstOption","autoActiveFirstOption",dt],autoSelectActiveOption:[2,"autoSelectActiveOption","autoSelectActiveOption",dt],requireSelection:[2,"requireSelection","requireSelection",dt],panelWidth:"panelWidth",disableRipple:[2,"disableRipple","disableRipple",dt],classList:[0,"class","classList"],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",dt]},outputs:{optionSelected:"optionSelected",opened:"opened",closed:"closed",optionActivated:"optionActivated"},exportAs:["matAutocomplete"],features:[hn([{provide:SR,useExisting:t}])],ngContentSelectors:fwe,decls:1,vars:0,consts:[["panel",""],["role","listbox",1,"mat-mdc-autocomplete-panel","mdc-menu-surface","mdc-menu-surface--open",3,"id"]],template:function(n,o){n&1&&(En(),kh(0,gwe,3,17,"ng-template"))},styles:[`div.mat-mdc-autocomplete-panel{width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;box-sizing:border-box;position:relative;border-radius:var(--mat-autocomplete-container-shape, var(--mat-sys-corner-extra-small));box-shadow:var(--mat-autocomplete-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));background-color:var(--mat-autocomplete-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-autocomplete-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden,.cdk-overlay-pane:has(>.mat-mdc-autocomplete-hidden){visibility:hidden;pointer-events:none}@keyframes _mat-autocomplete-enter{from{opacity:0;transform:scaleY(0.8)}to{opacity:1;transform:none}}.mat-autocomplete-panel-animations-enabled{animation:_mat-autocomplete-enter 120ms cubic-bezier(0, 0, 0.2, 1)}mat-autocomplete{display:none}
|
||
`],encapsulation:2,changeDetection:0})}return t})();var _we={provide:Zl,useExisting:ql(()=>el),multi:!0};var vwe=new kt("mat-autocomplete-scroll-strategy",{providedIn:"root",factory:()=>{let t=f(Di);return()=>RC(t)}}),el=(()=>{class t{_environmentInjector=f(Xl);_element=f(Lt);_injector=f(Di);_viewContainerRef=f(co);_zone=f(bi);_changeDetectorRef=f(K);_dir=f(Hr,{optional:!0});_formField=f(Bh,{optional:!0,host:!0});_viewportRuler=f(wd);_scrollStrategy=f(vwe);_renderer=f(ii);_animationsDisabled=Qi();_defaults=f(qH,{optional:!0});_overlayRef=null;_portal;_componentDestroyed=!1;_initialized=new Le;_keydownSubscription;_outsideClickSubscription;_cleanupWindowBlur;_previousValue=null;_valueOnAttach=null;_valueOnLastKeydown=null;_positionStrategy;_manuallyFloatingLabel=!1;_closingActionsSubscription;_viewportSubscription=so.EMPTY;_breakpointObserver=f(Fh);_handsetLandscapeSubscription=so.EMPTY;_canOpenOnNextFocus=!0;_valueBeforeAutoSelection;_pendingAutoselectedOption=null;_closeKeyEventStream=new Le;_overlayPanelClass=rR(this._defaults?.overlayPanelClass||[]);_windowBlurHandler=()=>{this._canOpenOnNextFocus=this.panelOpen||!this._hasFocus()};_onChange=()=>{};_onTouched=()=>{};autocomplete;position="auto";connectedTo;autocompleteAttribute="off";autocompleteDisabled=!1;constructor(){}_aboveClass="mat-mdc-autocomplete-panel-above";ngAfterViewInit(){this._initialized.next(),this._initialized.complete(),this._cleanupWindowBlur=this._renderer.listen("window","blur",this._windowBlurHandler)}ngOnChanges(e){e.position&&this._positionStrategy&&(this._setStrategyPositions(this._positionStrategy),this.panelOpen&&this._overlayRef.updatePosition())}ngOnDestroy(){this._cleanupWindowBlur?.(),this._handsetLandscapeSubscription.unsubscribe(),this._viewportSubscription.unsubscribe(),this._componentDestroyed=!0,this._destroyPanel(),this._closeKeyEventStream.complete(),this._clearFromModal()}get panelOpen(){return this._overlayAttached&&this.autocomplete.showPanel}_overlayAttached=!1;openPanel(){this._openPanelInternal()}closePanel(){this._resetLabel(),this._overlayAttached&&(this.panelOpen&&this._zone.run(()=>{this.autocomplete.closed.emit()}),this.autocomplete._latestOpeningTrigger===this&&(this.autocomplete._isOpen=!1,this.autocomplete._latestOpeningTrigger=null),this._overlayAttached=!1,this._pendingAutoselectedOption=null,this._overlayRef&&this._overlayRef.hasAttached()&&(this._overlayRef.detach(),this._closingActionsSubscription.unsubscribe()),this._updatePanelState(),this._componentDestroyed||this._changeDetectorRef.detectChanges(),this._trackedModal&&HC(this._trackedModal,"aria-owns",this.autocomplete.id))}updatePosition(){this._overlayAttached&&this._overlayRef.updatePosition()}get panelClosingActions(){return Dn(this.optionSelections,this.autocomplete._keyManager.tabOut.pipe(Pn(()=>this._overlayAttached)),this._closeKeyEventStream,this._getOutsideClickStream(),this._overlayRef?this._overlayRef.detachments().pipe(Pn(()=>this._overlayAttached)):xt()).pipe(yt(e=>e instanceof MR?e:null))}optionSelections=xc(()=>{let e=this.autocomplete?this.autocomplete.options:null;return e?e.changes.pipe(li(e),fn(()=>Dn(...e.map(n=>n.onSelectionChange)))):this._initialized.pipe(fn(()=>this.optionSelections))});get activeOption(){return this.autocomplete&&this.autocomplete._keyManager?this.autocomplete._keyManager.activeItem:null}_getOutsideClickStream(){return new _r(e=>{let n=r=>{let a=eu(r),c=this._formField?this._formField.getConnectedOverlayOrigin().nativeElement:null,m=this.connectedTo?this.connectedTo.elementRef.nativeElement:null;this._overlayAttached&&a!==this._element.nativeElement&&!this._hasFocus()&&(!c||!c.contains(a))&&(!m||!m.contains(a))&&this._overlayRef&&!this._overlayRef.overlayElement.contains(a)&&e.next(r)},o=[this._renderer.listen("document","click",n),this._renderer.listen("document","auxclick",n),this._renderer.listen("document","touchend",n)];return()=>{o.forEach(r=>r())}})}writeValue(e){Promise.resolve(null).then(()=>this._assignOptionValue(e))}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this._element.nativeElement.disabled=e}_handleKeydown(e){let n=e,o=n.keyCode,r=cr(n);if(o===27&&!r&&n.preventDefault(),this._valueOnLastKeydown=this._element.nativeElement.value,this.activeOption&&o===13&&this.panelOpen&&!r)this.activeOption._selectViaInteraction(),this._resetActiveItem(),n.preventDefault();else if(this.autocomplete){let a=this.autocomplete._keyManager.activeItem,c=o===38||o===40;o===9||c&&!r&&this.panelOpen?this.autocomplete._keyManager.onKeydown(n):c&&this._canOpen()&&this._openPanelInternal(this._valueOnLastKeydown),(c||this.autocomplete._keyManager.activeItem!==a)&&(this._scrollToOption(this.autocomplete._keyManager.activeItemIndex||0),this.autocomplete.autoSelectActiveOption&&this.activeOption&&(this._pendingAutoselectedOption||(this._valueBeforeAutoSelection=this._valueOnLastKeydown),this._pendingAutoselectedOption=this.activeOption,this._assignOptionValue(this.activeOption.value)))}}_handleInput(e){let n=e.target,o=n.value;if(n.type==="number"&&(o=o==""?null:parseFloat(o)),this._previousValue!==o){if(this._previousValue=o,this._pendingAutoselectedOption=null,(!this.autocomplete||!this.autocomplete.requireSelection)&&this._onChange(o),!o)this._clearPreviousSelectedOption(null,!1);else if(this.panelOpen&&!this.autocomplete.requireSelection){let r=this.autocomplete.options?.find(a=>a.selected);if(r){let a=this._getDisplayValue(r.value);o!==a&&r.deselect(!1)}}if(this._canOpen()&&this._hasFocus()){let r=this._valueOnLastKeydown??this._element.nativeElement.value;this._valueOnLastKeydown=null,this._openPanelInternal(r)}}}_handleFocus(){this._canOpenOnNextFocus?this._canOpen()&&(this._previousValue=this._element.nativeElement.value,this._attachOverlay(this._previousValue),this._floatLabel(!0)):this._canOpenOnNextFocus=!0}_handleClick(){this._canOpen()&&!this.panelOpen&&this._openPanelInternal()}_hasFocus(){return hm()===this._element.nativeElement}_floatLabel(e=!1){this._formField&&this._formField.floatLabel==="auto"&&(e?this._formField._animateAndLockLabel():this._formField.floatLabel="always",this._manuallyFloatingLabel=!0)}_resetLabel(){this._manuallyFloatingLabel&&(this._formField&&(this._formField.floatLabel="auto"),this._manuallyFloatingLabel=!1)}_subscribeToClosingActions(){let e=new _r(o=>{ar(()=>{o.next()},{injector:this._environmentInjector})}),n=this.autocomplete.options?.changes.pipe(vi(()=>this._positionStrategy.reapplyLastPosition()),g5(0))??xt();return Dn(e,n).pipe(fn(()=>this._zone.run(()=>{let o=this.panelOpen;return this._resetActiveItem(),this._updatePanelState(),this._changeDetectorRef.detectChanges(),this.panelOpen&&this._overlayRef.updatePosition(),o!==this.panelOpen&&(this.panelOpen?this._emitOpened():this.autocomplete.closed.emit()),this.panelClosingActions})),wi(1)).subscribe(o=>this._setValueAndClose(o))}_emitOpened(){this.autocomplete.opened.emit()}_destroyPanel(){this._overlayRef&&(this.closePanel(),this._overlayRef.dispose(),this._overlayRef=null)}_getDisplayValue(e){let n=this.autocomplete;return n&&n.displayWith?n.displayWith(e):e}_assignOptionValue(e){let n=this._getDisplayValue(e);e==null&&this._clearPreviousSelectedOption(null,!1),this._updateNativeInputValue(n??"")}_updateNativeInputValue(e){this._formField?this._formField._control.value=e:this._element.nativeElement.value=e,this._previousValue=e}_setValueAndClose(e){let n=this.autocomplete,o=e?e.source:this._pendingAutoselectedOption;o?(this._clearPreviousSelectedOption(o),this._assignOptionValue(o.value),this._onChange(o.value),n._emitSelectEvent(o),this._element.nativeElement.focus()):n.requireSelection&&this._element.nativeElement.value!==this._valueOnAttach&&(this._clearPreviousSelectedOption(null),this._assignOptionValue(null),this._onChange(null)),this.closePanel()}_clearPreviousSelectedOption(e,n){this.autocomplete?.options?.forEach(o=>{o!==e&&o.selected&&o.deselect(n)})}_openPanelInternal(e=this._element.nativeElement.value){if(this._attachOverlay(e),this._floatLabel(),this._trackedModal){let n=this.autocomplete.id;ME(this._trackedModal,"aria-owns",n)}}_attachOverlay(e){if(!this.autocomplete)return;let n=this._overlayRef;n?(this._positionStrategy.setOrigin(this._getConnectedElement()),n.updateSize({width:this._getPanelWidth()})):(this._portal=new ol(this.autocomplete.template,this._viewContainerRef,{id:this._formField?.getLabelId()}),n=vm(this._injector,this._getOverlayConfig()),this._overlayRef=n,this._viewportSubscription=this._viewportRuler.change().subscribe(()=>{this.panelOpen&&n&&n.updateSize({width:this._getPanelWidth()})}),this._handsetLandscapeSubscription=this._breakpointObserver.observe(Jl.HandsetLandscape).subscribe(r=>{r.matches?this._positionStrategy.withFlexibleDimensions(!0).withGrowAfterOpen(!0).withViewportMargin(8):this._positionStrategy.withFlexibleDimensions(!1).withGrowAfterOpen(!1).withViewportMargin(0)})),n&&!n.hasAttached()&&(n.attach(this._portal),this._valueOnAttach=e,this._valueOnLastKeydown=null,this._closingActionsSubscription=this._subscribeToClosingActions());let o=this.panelOpen;this.autocomplete._isOpen=this._overlayAttached=!0,this.autocomplete._latestOpeningTrigger=this,this.autocomplete._setColor(this._formField?.color),this._updatePanelState(),this._applyModalPanelOwnership(),this.panelOpen&&o!==this.panelOpen&&this._emitOpened()}_handlePanelKeydown=e=>{(e.keyCode===27&&!cr(e)||e.keyCode===38&&cr(e,"altKey"))&&(this._pendingAutoselectedOption&&(this._updateNativeInputValue(this._valueBeforeAutoSelection??""),this._pendingAutoselectedOption=null),this._closeKeyEventStream.next(),this._resetActiveItem(),e.stopPropagation(),e.preventDefault())};_updatePanelState(){if(this.autocomplete._setVisibility(),this.panelOpen){let e=this._overlayRef;this._keydownSubscription||(this._keydownSubscription=e.keydownEvents().subscribe(this._handlePanelKeydown)),this._outsideClickSubscription||(this._outsideClickSubscription=e.outsidePointerEvents().subscribe())}else this._keydownSubscription?.unsubscribe(),this._outsideClickSubscription?.unsubscribe(),this._keydownSubscription=this._outsideClickSubscription=void 0}_getOverlayConfig(){return new fm({positionStrategy:this._getOverlayPosition(),scrollStrategy:this._scrollStrategy(),width:this._getPanelWidth(),direction:this._dir??void 0,hasBackdrop:this._defaults?.hasBackdrop,backdropClass:this._defaults?.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:this._overlayPanelClass,disableAnimations:this._animationsDisabled})}_getOverlayPosition(){let e=FC(this._injector,this._getConnectedElement()).withFlexibleDimensions(!1).withPush(!1).withPopoverLocation("inline");return this._setStrategyPositions(e),this._positionStrategy=e,e}_setStrategyPositions(e){let n=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],o=this._aboveClass,r=[{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:o},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:o}],a;this.position==="above"?a=r:this.position==="below"?a=n:a=[...n,...r],e.withPositions(a)}_getConnectedElement(){return this.connectedTo?this.connectedTo.elementRef:this._formField?this._formField.getConnectedOverlayOrigin():this._element}_getPanelWidth(){return this.autocomplete.panelWidth||this._getHostWidth()}_getHostWidth(){return this._getConnectedElement().nativeElement.getBoundingClientRect().width}_resetActiveItem(){let e=this.autocomplete;if(e.autoActiveFirstOption){let n=-1;for(let o=0;o<e.options.length;o++)if(!e.options.get(o).disabled){n=o;break}e._keyManager.setActiveItem(n)}else e._keyManager.setActiveItem(-1)}_canOpen(){let e=this._element.nativeElement;return!e.readOnly&&!e.disabled&&!this.autocompleteDisabled}_scrollToOption(e){let n=this.autocomplete,o=kR(e,n.options,n.optionGroups);if(e===0&&o===1)n._setScrollTop(0);else if(n.panel){let r=n.options.toArray()[e];if(r){let a=r._getHostElement(),c=TR(a.offsetTop,a.offsetHeight,n._getScrollTop(),n.panel.nativeElement.offsetHeight);n._setScrollTop(c)}}}_trackedModal=null;_applyModalPanelOwnership(){let e=this._element.nativeElement.closest('body > .cdk-overlay-container [aria-modal="true"]');if(!e)return;let n=this.autocomplete.id;this._trackedModal&&HC(this._trackedModal,"aria-owns",n),ME(e,"aria-owns",n),this._trackedModal=e}_clearFromModal(){if(this._trackedModal){let e=this.autocomplete.id;HC(this._trackedModal,"aria-owns",e),this._trackedModal=null}}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["input","matAutocomplete",""],["textarea","matAutocomplete",""]],hostAttrs:[1,"mat-mdc-autocomplete-trigger"],hostVars:7,hostBindings:function(n,o){n&1&&v("focusin",function(){return o._handleFocus()})("blur",function(){return o._onTouched()})("input",function(a){return o._handleInput(a)})("keydown",function(a){return o._handleKeydown(a)})("click",function(){return o._handleClick()}),n&2&&It("autocomplete",o.autocompleteAttribute)("role",o.autocompleteDisabled?null:"combobox")("aria-autocomplete",o.autocompleteDisabled?null:"list")("aria-activedescendant",o.panelOpen&&o.activeOption?o.activeOption.id:null)("aria-expanded",o.autocompleteDisabled?null:o.panelOpen.toString())("aria-controls",o.autocompleteDisabled||!o.panelOpen||o.autocomplete==null?null:o.autocomplete.id)("aria-haspopup",o.autocompleteDisabled?null:"listbox")},inputs:{autocomplete:[0,"matAutocomplete","autocomplete"],position:[0,"matAutocompletePosition","position"],connectedTo:[0,"matAutocompleteConnectedTo","connectedTo"],autocompleteAttribute:[0,"autocomplete","autocompleteAttribute"],autocompleteDisabled:[2,"matAutocompleteDisabled","autocompleteDisabled",dt]},exportAs:["matAutocompleteTrigger"],features:[hn([_we]),un]})}return t})(),Ds=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[rl,Jo,Md,Jo,wn]})}return t})();function bwe(t,i){if(t&1&&(s(0,"mat-option",10),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function Cwe(t,i){if(t&1&&(s(0,"mat-option",10),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function xwe(t,i){if(t&1&&(s(0,"mat-option",10),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}var bM=(()=>{class t{controller;nodeId;projectId;diskOptions=["hda","hdb","hdc","hdd","ide0","ide1","scsi0","scsi1","scsi2"];formatOptions=["qcow2","qcow","vhd","vdi","vmdk","raw"];preallocationsOptions=["off","metadata","falloc","full"];inputForm;filteredDisks$;dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);qemuService=f(ra);constructor(){this.inputForm=this.formBuilder.group({disk_name:new re("",[be.required]),format:new re("",be.required),size:new re("",[be.required,be.min(1)]),preallocation:new re(""),lazy_refcounts:new re("")}),this.filteredDisks$=this.inputForm.get("disk_name").valueChanges.pipe(li(""),yt(e=>this._filterDisks(e||"")))}_filterDisks(e){let n=e.toLowerCase();return this.diskOptions.filter(o=>o.toLowerCase().includes(n))}onSaveClick(){if(this.inputForm.valid){let e=this.inputForm.value,n={format:e.format,size:e.size};e.preallocation&&(n.preallocation=e.preallocation),e.lazy_refcounts&&(n.lazy_refcounts=e.lazy_refcounts),this.qemuService.createDiskImage(this.controller,this.projectId,this.nodeId,e.disk_name,n).subscribe({next:()=>{this.dialogRef.close()},error:o=>{let r=o.error?.detail||o.message||"Failed to create image";this.toasterService.error(r)}})}else{let e=[];this.inputForm.get("disk_name")?.value||e.push("Disk name"),this.inputForm.get("format")?.value||e.push("Format"),this.inputForm.get("size")?.value||e.push("Size (MB)"),this.toasterService.error(`Missing required fields: ${e.join(", ")}`)}}onCancelClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-qemu-image-creator"]],decls:47,vars:4,consts:[["auto","matAutocomplete"],["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],[1,"info-note"],[1,"matCard"],[3,"formGroup"],[1,"form-field"],["matInput","","formControlName","disk_name","placeholder","Type to search or enter",3,"matAutocomplete"],[3,"value"],["formControlName","format"],["matInput","","type","number","min","1","formControlName","size"],["formControlName","preallocation"],["formControlName","lazy_refcounts"],["value","on"],["value","off"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"]],template:function(n,o){if(n&1&&(s(0,"h1",1),d(1,"Create QEMU Disk Image"),l(),s(2,"div",2)(3,"div",3)(4,"div",4)(5,"p",5),d(6," Note: The created image will be saved in the project's files directory and cannot be mounted via Web UI at this time. "),l(),s(7,"mat-card",6)(8,"form",7)(9,"mat-form-field",8)(10,"mat-label"),d(11,"Disk name *"),l(),F(12,"input",9),s(13,"mat-autocomplete",null,0),J(15,bwe,2,2,"mat-option",10,Fe),on(17,"async"),l()(),s(18,"mat-form-field",8)(19,"mat-label"),d(20,"Format *"),l(),s(21,"mat-select",11),J(22,Cwe,2,2,"mat-option",10,Fe),l()(),s(24,"mat-form-field",8)(25,"mat-label"),d(26,"Size (MB) *"),l(),F(27,"input",12),l(),s(28,"mat-form-field",8)(29,"mat-label"),d(30,"Preallocation"),l(),s(31,"mat-select",13),J(32,xwe,2,2,"mat-option",10,Fe),l()(),s(34,"mat-form-field",8)(35,"mat-label"),d(36,"Lazy refcounts"),l(),s(37,"mat-select",14)(38,"mat-option",15),d(39,"on"),l(),s(40,"mat-option",16),d(41,"off"),l()()()()()()()(),s(42,"div",17)(43,"button",18),v("click",function(){return o.onCancelClick()}),d(44,"Cancel"),l(),s(45,"button",19),v("click",function(){return o.onSaveClick()}),d(46,"Apply"),l()()),n&2){let r=Re(14);u(8),x("formGroup",o.inputForm),u(4),x("matAutocomplete",r),u(3),ee(oi(17,2,o.filteredDisks$)),u(7),ee(o.formatOptions),u(10),ee(o.preallocationsOptions)}},dependencies:[Z,ct,Ue,vt,xi,mt,He,Ro,pt,bt,Ce,Ve,Be,$,le,Me,ke,lt,we,Te,Mt,At,St,Jo,Dt,Tn,Ds,Ul,el,Jr],styles:["table[_ngcontent-%COMP%], .form-field[_ngcontent-%COMP%], .configButton[_ngcontent-%COMP%]{width:100%}.modal-form-container[_ngcontent-%COMP%]{padding:16px}.file-button[_ngcontent-%COMP%]{width:18%}.create-button[_ngcontent-%COMP%]{width:100%}.file-name-form-field[_ngcontent-%COMP%]{padding-left:2%;width:80%}.nonvisible[_ngcontent-%COMP%]{display:none}mat-radio-button[_ngcontent-%COMP%]{margin-right:8px}.tags-field[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();var XH=(t,i)=>i[1],CM=(t,i)=>i.filename,ywe=(t,i)=>i.value;function Swe(t,i){if(t&1){let e=j();s(0,"mat-chip",79),v("removed",function(){let o=D(e).$implicit,r=b(2);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",80),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function wwe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Mwe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function kwe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function Twe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Ewe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Dwe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e.filename),u(),X(" ",e.filename," ")}}function Pwe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Iwe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e.filename),u(),X(" ",e.filename," ")}}function Awe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Owe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e.filename),u(),X(" ",e.filename," ")}}function Nwe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Rwe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e.filename),u(),X(" ",e.filename," ")}}function Fwe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Lwe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e.value),u(),Hi(" ",e.name," (",e.value,") ")}}function Bwe(t,i){t&1&&(s(0,"mat-form-field",19)(1,"mat-label"),d(2,"Percentage of CPU allowed"),l(),F(3,"input",81),l())}function Vwe(t,i){if(t&1&&(s(0,"mat-option",25),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function zwe(t,i){if(t&1){let e=j();s(0,"form",14)(1,"mat-tab-group")(2,"mat-tab",18)(3,"mat-form-field",19)(4,"mat-label"),d(5,"Name"),l(),F(6,"input",20),l(),s(7,"mat-form-field",21)(8,"mat-label"),d(9,"Tags"),l(),s(10,"mat-chip-grid",null,0),J(12,Swe,4,1,"mat-chip",null,Fe),l(),s(14,"input",22),v("matChipInputTokenEnd",function(o){D(e);let r=b();return P(r.addTag(o))}),l()(),s(15,"div",23)(16,"mat-form-field",19)(17,"mat-label"),d(18,"Platform"),l(),s(19,"mat-select",24),J(20,wwe,2,2,"mat-option",25,Fe),l()(),s(22,"mat-form-field",19)(23,"mat-label"),d(24,"RAM"),l(),F(25,"input",26),s(26,"span",27),d(27,"MB"),l()(),s(28,"mat-form-field",19)(29,"mat-label"),d(30,"vCPUs"),l(),F(31,"input",28),l(),s(32,"mat-form-field",19)(33,"mat-label"),d(34,"Boot priority"),l(),s(35,"mat-select",29),J(36,Mwe,2,2,"mat-option",25,XH),l()(),s(38,"mat-form-field",19)(39,"mat-label"),d(40,"On close"),l(),s(41,"mat-select",30),J(42,kwe,2,2,"mat-option",25,XH),l()(),s(44,"mat-form-field",19)(45,"mat-label"),d(46,"Console type"),l(),s(47,"mat-select",31),J(48,Twe,2,2,"mat-option",25,Fe),l()(),s(50,"mat-form-field",19)(51,"mat-label"),d(52,"Auxiliary console type"),l(),s(53,"mat-select",32),J(54,Ewe,2,2,"mat-option",25,Fe),l()(),s(56,"mat-checkbox",33),d(57," Auto start console "),l()()(),s(58,"mat-tab",34)(59,"div",35)(60,"button",36),v("click",function(){D(e);let o=b();return P(o.openQemuImageCreator())}),d(61," Create Qemu image "),l()(),s(62,"div",37)(63,"div",38)(64,"div",39)(65,"h3",40),d(66,"HDA"),l(),s(67,"span",41),d(68,"Primary Master"),l()(),s(69,"div",42)(70,"mat-form-field",19)(71,"mat-label"),d(72,"Disk image"),l(),s(73,"input",43),v("input",function(o){D(e);let r=b();return P(r.onHdaImageInput(o))})("focus",function(){D(e);let o=b();return P(o.filteredImages=o.qemuImages)}),l(),s(74,"mat-autocomplete",null,1),J(76,Dwe,2,2,"mat-option",25,CM),l()(),s(78,"mat-form-field",19)(79,"mat-label"),d(80,"Disk interface"),l(),s(81,"mat-select",44),J(82,Pwe,2,2,"mat-option",25,Fe),l()()()(),s(84,"div",38)(85,"div",39)(86,"h3",40),d(87,"HDB"),l(),s(88,"span",41),d(89,"Primary Slave"),l()(),s(90,"div",42)(91,"mat-form-field",19)(92,"mat-label"),d(93,"Disk image"),l(),s(94,"input",45),v("input",function(o){D(e);let r=b();return P(r.onHdbImageInput(o))})("focus",function(){D(e);let o=b();return P(o.filteredImages=o.qemuImages)}),l(),s(95,"mat-autocomplete",null,2),J(97,Iwe,2,2,"mat-option",25,CM),l()(),s(99,"mat-form-field",19)(100,"mat-label"),d(101,"Disk interface"),l(),s(102,"mat-select",46),J(103,Awe,2,2,"mat-option",25,Fe),l()()()(),s(105,"div",38)(106,"div",39)(107,"h3",40),d(108,"HDC"),l(),s(109,"span",41),d(110,"Secondary Master"),l()(),s(111,"div",42)(112,"mat-form-field",19)(113,"mat-label"),d(114,"Disk image"),l(),s(115,"input",47),v("input",function(o){D(e);let r=b();return P(r.onHdcImageInput(o))})("focus",function(){D(e);let o=b();return P(o.filteredImages=o.qemuImages)}),l(),s(116,"mat-autocomplete",null,3),J(118,Owe,2,2,"mat-option",25,CM),l()(),s(120,"mat-form-field",19)(121,"mat-label"),d(122,"Disk interface"),l(),s(123,"mat-select",48),J(124,Nwe,2,2,"mat-option",25,Fe),l()()()(),s(126,"div",38)(127,"div",39)(128,"h3",40),d(129,"HDD"),l(),s(130,"span",41),d(131,"Secondary Slave"),l()(),s(132,"div",42)(133,"mat-form-field",19)(134,"mat-label"),d(135,"Disk image"),l(),s(136,"input",49),v("input",function(o){D(e);let r=b();return P(r.onHddImageInput(o))})("focus",function(){D(e);let o=b();return P(o.filteredImages=o.qemuImages)}),l(),s(137,"mat-autocomplete",null,4),J(139,Rwe,2,2,"mat-option",25,CM),l()(),s(141,"mat-form-field",19)(142,"mat-label"),d(143,"Disk interface"),l(),s(144,"mat-select",50),J(145,Fwe,2,2,"mat-option",25,Fe),l()()()()()(),s(147,"mat-tab",51)(148,"div",52)(149,"button",53),v("click",function(){D(e);let o=Re(152);return P(o.click())}),d(150," Browse "),l(),s(151,"input",54,5),v("change",function(o){D(e);let r=b();return P(r.uploadCdromImageFile(o))}),l(),s(153,"mat-form-field",55)(154,"mat-label"),d(155,"Image"),l(),F(156,"input",56),l(),s(157,"p",57),d(158," Note: File upload is not implemented in Web UI. Please ensure the ISO file exists on the GNS3 server. "),l()()(),s(159,"mat-tab",58)(160,"form",14)(161,"mat-form-field",19)(162,"mat-label"),d(163,"Number of adapters"),l(),F(164,"input",59),l(),s(165,"mat-form-field",19)(166,"mat-label"),d(167,"Base MAC"),l(),F(168,"input",60),l(),s(169,"mat-form-field",19)(170,"mat-label"),d(171,"Type"),l(),s(172,"mat-select",61),J(173,Lwe,2,3,"mat-option",25,ywe),l()(),s(175,"div",62)(176,"button",63),v("click",function(){D(e);let o=b();return P(o.openCustomAdaptersDialog())}),d(177," Configurator Custom Adapters "),l()(),s(178,"mat-checkbox",64),d(179," Replicate network connection state "),l()()(),s(180,"mat-tab",65)(181,"div",66)(182,"div",38)(183,"div",39)(184,"h3",40),d(185,"Linux boot specific settings"),l()(),s(186,"div",42)(187,"div",52)(188,"button",53),v("click",function(){D(e);let o=Re(191);return P(o.click())}),d(189," Browse "),l(),s(190,"input",54,6),v("change",function(o){D(e);let r=b();return P(r.uploadInitrdFile(o))}),l(),s(192,"mat-form-field",55)(193,"mat-label"),d(194,"Initial RAM disk (initrd)"),l(),F(195,"input",67),l(),s(196,"p",57),d(197," Note: File upload is not implemented in Web UI. Please ensure the file exists on the GNS3 server. "),l()(),s(198,"div",52)(199,"button",53),v("click",function(){D(e);let o=Re(202);return P(o.click())}),d(200," Browse "),l(),s(201,"input",54,7),v("change",function(o){D(e);let r=b();return P(r.uploadKernelImageFile(o))}),l(),s(203,"mat-form-field",55)(204,"mat-label"),d(205,"Kernel image"),l(),F(206,"input",68),l(),s(207,"p",57),d(208," Note: File upload is not implemented in Web UI. Please ensure the file exists on the GNS3 server. "),l()(),s(209,"mat-form-field",19)(210,"mat-label"),d(211,"Kernel command line"),l(),F(212,"input",69),l()()(),s(213,"div",38)(214,"div",39)(215,"h3",40),d(216,"Bios"),l()(),s(217,"div",42)(218,"div",52)(219,"button",53),v("click",function(){D(e);let o=Re(222);return P(o.click())}),d(220," Browse "),l(),s(221,"input",54,8),v("change",function(o){D(e);let r=b();return P(r.uploadBiosFile(o))}),l(),s(223,"mat-form-field",55)(224,"mat-label"),d(225,"Bios image"),l(),F(226,"input",70),l(),s(227,"p",57),d(228," Note: File upload is not implemented in Web UI. Please ensure the file exists on the GNS3 server. "),l()()()(),s(229,"div",38)(230,"div",39)(231,"h3",40),d(232,"Optimization"),l()(),s(233,"div",42)(234,"mat-checkbox",71),d(235," Activate CPU throttling "),l(),A(236,Bwe,4,0,"mat-form-field",19),s(237,"mat-form-field",19)(238,"mat-label"),d(239,"Process priority"),l(),s(240,"mat-select",72),J(241,Vwe,2,2,"mat-option",25,Fe),l()()()(),s(243,"div",38)(244,"div",39)(245,"h3",40),d(246,"Additional settings"),l()(),s(247,"div",42)(248,"mat-form-field",19)(249,"mat-label"),d(250,"Qemu binary path"),l(),F(251,"input",73),l(),s(252,"mat-form-field",19)(253,"mat-label"),d(254,"Options"),l(),F(255,"input",74),l(),s(256,"mat-checkbox",75),d(257," Enable the Trusted Platform Module (TPM) "),l(),s(258,"mat-checkbox",76),d(259," Enable the UEFI boot mode "),l()()()()(),s(260,"mat-tab",77)(261,"mat-form-field",19)(262,"mat-label"),d(263,"Usage"),l(),F(264,"textarea",78),l()()()()}if(t&2){let e=Re(11),n=Re(75),o=Re(96),r=Re(117),a=Re(138),c=b();x("formGroup",c.generalSettingsForm),u(12),ee(c.node==null?null:c.node.tags),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",c.separatorKeysCodes),u(6),ee(c.selectPlatform),u(16),ee(c.bootPriorities),u(6),ee(c.onCloseOptions),u(6),ee(c.consoleTypes),u(6),ee(c.auxConsoleTypes),u(19),x("matAutocomplete",n),u(3),ee(c.filteredImages),u(6),ee(c.diskInterfaces),u(12),x("matAutocomplete",o),u(3),ee(c.filteredImages),u(6),ee(c.diskInterfaces),u(12),x("matAutocomplete",r),u(3),ee(c.filteredImages),u(6),ee(c.diskInterfaces),u(12),x("matAutocomplete",a),u(3),ee(c.filteredImages),u(6),ee(c.diskInterfaces),u(15),x("formGroup",c.networkSettingsForm),u(13),ee(c.networkTypes),u(63),O(c.generalSettingsForm.controls.activateCpuThrottling.value?236:-1),u(5),ee(c.priorities)}}var xM=(()=>{class t{dialog=f(Je);dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);qemuService=f(ra);qemuConfigurationService=f(mp);cd=f(K);controller;node;name;generalSettingsForm;networkSettingsForm;consoleTypes=[];onCloseOptions=[];bootPriorities=[];diskInterfaces=[];displayedColumns=["adapter_number","port_name","adapter_type","actions"];networkTypes=[];qemuImages=[];filteredImages=[];selectPlatform=[];separatorKeysCodes=[13,188];conf={autoFocus:!1,panelClass:["base-dialog-panel","qemu-configurator-dialog-panel"],disableClose:!0};dialogRefQemuImageCreator;constructor(){this.generalSettingsForm=this.formBuilder.group({name:new re("",be.required),ram:new re("",be.required),platform:new re(""),cpus:new re(""),boot_priority:new re(""),on_close:new re(""),console_type:new re(""),aux_type:new re(""),console_auto_start:new re(!1),hda_disk_image:new re(""),hda_disk_interface:new re(""),hdb_disk_image:new re(""),hdb_disk_interface:new re(""),hdc_disk_image:new re(""),hdc_disk_interface:new re(""),hdd_disk_image:new re(""),hdd_disk_interface:new re(""),cdrom_image:new re(""),initrd:new re(""),kernel_image:new re(""),kernel_command_line:new re(""),bios_image:new re(""),activateCpuThrottling:new re(!1),cpu_throttling:new re(""),process_priority:new re(""),qemu_path:new re(""),options:new re(""),tpm:new re(!1),uefi:new re(!1),usage:new re("")}),this.networkSettingsForm=this.formBuilder.group({adapters:new re(""),mac_address:new re("",be.pattern(this.qemuConfigurationService.getMacAddrRegex())),adapter_type:new re(""),replicate_network_connection_state:new re(!1)})}ngOnInit(){this.nodeService.getNode(this.controller,this.node).subscribe(e=>{this.node=e,this.name=e.name,this.generalSettingsForm.patchValue({name:e.name,ram:e.properties.ram||"",platform:e.properties.platform||"",cpus:e.properties.cpus||"",boot_priority:e.properties.boot_priority||"",on_close:e.properties.on_close||"",console_type:e.console_type||"",aux_type:e.properties.aux_type||"",console_auto_start:e.console_auto_start||!1,hda_disk_image:e.properties.hda_disk_image||"",hda_disk_interface:e.properties.hda_disk_interface||"",hdb_disk_image:e.properties.hdb_disk_image||"",hdb_disk_interface:e.properties.hdb_disk_interface||"",hdc_disk_image:e.properties.hdc_disk_image||"",hdc_disk_interface:e.properties.hdc_disk_interface||"",hdd_disk_image:e.properties.hdd_disk_image||"",hdd_disk_interface:e.properties.hdd_disk_interface||"",cdrom_image:e.properties.cdrom_image||"",initrd:e.properties.initrd||"",kernel_image:e.properties.kernel_image||"",kernel_command_line:e.properties.kernel_command_line||"",bios_image:e.properties.bios_image||"",activateCpuThrottling:!1,cpu_throttling:e.properties.cpu_throttling||"",process_priority:e.properties.process_priority||"",qemu_path:e.properties.qemu_path||"",options:e.properties.options||"",tpm:e.properties.tpm||!1,uefi:e.properties.uefi||!1,usage:e.properties.usage||""}),this.networkSettingsForm.patchValue({adapters:e.properties.adapters||"",mac_address:e.properties.mac_address||"",adapter_type:e.properties.adapter_type||"",replicate_network_connection_state:e.properties.replicate_network_connection_state||!1}),this.node.tags||(this.node.tags=[]),this.getConfiguration(),this.cd.markForCheck()}),this.qemuService.getImages(this.controller).subscribe(e=>{this.qemuImages=e,this.filteredImages=e,this.cd.markForCheck()}),this.selectPlatform=this.qemuConfigurationService.getPlatform()}openQemuImageCreator(){this.dialogRefQemuImageCreator=this.dialog.open(bM,this.conf);let e=this.dialogRefQemuImageCreator.componentInstance;e.controller=this.controller,e.nodeId=this.node.node_id,e.projectId=this.node.project_id}uploadCdromImageFile(e){let n=e.target.files[0].name;this.node.properties.cdrom_image=n,this.generalSettingsForm.patchValue({cdrom_image:n})}uploadInitrdFile(e){let n=e.target.files[0].name;this.node.properties.initrd=n,this.generalSettingsForm.patchValue({initrd:n})}uploadKernelImageFile(e){let n=e.target.files[0].name;this.node.properties.kernel_image=n,this.generalSettingsForm.patchValue({kernel_image:n})}uploadBiosFile(e){let n=e.target.files[0].name;this.node.properties.bios_image=n,this.generalSettingsForm.patchValue({bios_image:n})}getConfiguration(){this.consoleTypes=this.qemuConfigurationService.getConsoleTypes(),this.onCloseOptions=this.qemuConfigurationService.getOnCloseOptions(),this.qemuConfigurationService.getNetworkTypes().forEach(e=>{this.networkTypes.push(e)}),this.bootPriorities=this.qemuConfigurationService.getBootPriorities(),this.diskInterfaces=this.qemuConfigurationService.getDiskInterfaces()}filterImages(e){let n=e.target.value.toLowerCase();return this.qemuImages.filter(o=>o.filename.toLowerCase().includes(n))}onHdaImageInput(e){this.filteredImages=this.filterImages(e)}onHdbImageInput(e){this.filteredImages=this.filterImages(e)}onHdcImageInput(e){this.filteredImages=this.filterImages(e)}onHddImageInput(e){this.filteredImages=this.filterImages(e)}openCustomAdaptersDialog(){let e=this.node.port_name_format||"Ethernet{0}",n=this.node.port_segment_size||0,o=this.node.properties.adapter_type||"e1000",r=this.node.properties.adapters||0,a=this.node.custom_adapters||[],c=[];for(let p=0;p<r;p++){let h=a.find(g=>g.adapter_number===p);if(h)c.push({adapter_number:h.adapter_number,adapter_type:h.adapter_type,port_name:h.port_name,mac_address:h.mac_address||""});else{let g;if(n>0){let M=Math.floor(p/n),C=p%n;g=e.replace("{0}",String(M*n+C))}else g=e.replace("{0}",String(p));c.push({adapter_number:p,adapter_type:o,port_name:g,mac_address:""})}}this.dialog.open(Ms,{panelClass:"custom-adapters-dialog-panel",data:{adapters:c,networkTypes:this.networkTypes,portNameFormat:e,portSegmentSize:n,defaultAdapterType:o,currentAdapters:r}}).afterClosed().subscribe(p=>{p&&(this.node.custom_adapters=p.adapters,p.requiredAdapters!==void 0&&(this.node.properties.adapters=p.requiredAdapters,this.networkSettingsForm.controls.adapters.setValue(p.requiredAdapters)),this.cd.markForCheck())})}onSaveClick(){if(this.generalSettingsForm.valid&&this.networkSettingsForm.valid){let e=H({},this.generalSettingsForm.value),n=H({},this.networkSettingsForm.value);this.node.name=e.name,this.node.properties.ram=e.ram,this.node.properties.platform=e.platform,this.node.properties.cpus=e.cpus,this.node.properties.boot_priority=e.boot_priority,this.node.properties.on_close=e.on_close,this.node.console_type=e.console_type,this.node.properties.aux_type=e.aux_type,this.node.console_auto_start=e.console_auto_start,this.node.properties.hda_disk_image=e.hda_disk_image,this.node.properties.hda_disk_interface=e.hda_disk_interface,this.node.properties.hdb_disk_image=e.hdb_disk_image,this.node.properties.hdb_disk_interface=e.hdb_disk_interface,this.node.properties.hdc_disk_image=e.hdc_disk_image,this.node.properties.hdc_disk_interface=e.hdc_disk_interface,this.node.properties.hdd_disk_image=e.hdd_disk_image,this.node.properties.hdd_disk_interface=e.hdd_disk_interface,this.node.properties.cdrom_image=e.cdrom_image,this.node.properties.initrd=e.initrd,this.node.properties.kernel_image=e.kernel_image,this.node.properties.kernel_command_line=e.kernel_command_line,this.node.properties.bios_image=e.bios_image,this.node.properties.cpu_throttling=e.cpu_throttling||null,this.node.properties.process_priority=e.process_priority,this.node.properties.qemu_path=e.qemu_path,this.node.properties.options=e.options,this.node.properties.tpm=e.tpm,this.node.properties.uefi=e.uefi,this.node.properties.usage=e.usage,this.node.properties.adapters=n.adapters,this.node.properties.mac_address=n.mac_address,this.node.properties.adapter_type=n.adapter_type,this.node.properties.replicate_network_connection_state=n.replicate_network_connection_state,this.nodeService.updateNodeWithCustomAdapters(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:o=>{let r=o.error?.message||o.message||"Failed to update node";this.toasterService.error(r)}})}else this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogRef.close()}addTag(e){let n=(e.value||"").trim();n&&this.node&&(this.node.tags||(this.node.tags=[]),this.node.tags.push(n)),e.chipInput&&e.chipInput.clear()}removeTag(e){if(!this.node.tags)return;let n=this.node.tags.indexOf(e);n>=0&&this.node.tags.splice(n,1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configurator-qemu"]],decls:12,vars:2,consts:[["chipList",""],["hdaAuto","matAutocomplete"],["hdbAuto","matAutocomplete"],["hdcAuto","matAutocomplete"],["hddAuto","matAutocomplete"],["filecdrom",""],["fileinitrd",""],["filekernelimage",""],["filebios",""],["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],[1,"matCard"],[3,"formGroup"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],["label","General settings"],[1,"form-field"],["matInput","","type","text","formControlName","name"],[1,"form-field","tags-field"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],[1,"form-grid"],["formControlName","platform"],[3,"value"],["matInput","","type","number","formControlName","ram"],["matSuffix",""],["matInput","","type","number","min","1","formControlName","cpus"],["formControlName","boot_priority"],["formControlName","on_close"],["formControlName","console_type"],["formControlName","aux_type"],["formControlName","console_auto_start",1,"form-grid__full"],["label","HDD"],[1,"hdd-create-section"],["mat-raised-button","","color","primary",1,"create-button",3,"click"],[1,"disk-cards-grid"],[1,"disk-card"],[1,"disk-card__header"],[1,"disk-card__title"],[1,"disk-card__badge"],[1,"disk-card__content"],["matInput","","type","text","formControlName","hda_disk_image",3,"input","focus","matAutocomplete"],["formControlName","hda_disk_interface"],["matInput","","type","text","formControlName","hdb_disk_image",3,"input","focus","matAutocomplete"],["formControlName","hdb_disk_interface"],["matInput","","type","text","formControlName","hdc_disk_image",3,"input","focus","matAutocomplete"],["formControlName","hdc_disk_interface"],["matInput","","type","text","formControlName","hdd_disk_image",3,"input","focus","matAutocomplete"],["formControlName","hdd_disk_interface"],["label","CD/DVD"],[1,"file-upload-section"],["mat-raised-button","","color","primary",1,"file-button",3,"click"],["type","file",1,"nonvisible",3,"change"],[1,"file-name-form-field"],["matInput","","type","text","formControlName","cdrom_image"],[1,"file-upload-hint"],["label","Network"],["matInput","","min","0","type","number","formControlName","adapters"],["matInput","","formControlName","mac_address","type","text"],["formControlName","adapter_type"],[1,"custom-adapters-section"],["mat-raised-button","","color","primary",3,"click"],["formControlName","replicate_network_connection_state"],["label","Advanced"],[1,"card-stack"],["matInput","","type","text","formControlName","initrd"],["matInput","","type","text","formControlName","kernel_image"],["matInput","","type","text","formControlName","kernel_command_line"],["matInput","","type","text","formControlName","bios_image"],["formControlName","activateCpuThrottling"],["formControlName","process_priority"],["matInput","","type","text","formControlName","qemu_path"],["matInput","","type","text","formControlName","options"],["formControlName","tpm"],["formControlName","uefi"],["label","Usage"],["matInput","","formControlName","usage"],[3,"removed"],["matChipRemove",""],["matInput","","type","number","formControlName","cpu_throttling"]],template:function(n,o){n&1&&(s(0,"h1",9),d(1),l(),s(2,"div",10)(3,"div",11)(4,"div",12)(5,"mat-card",13),A(6,zwe,265,9,"form",14),l()()()(),s(7,"div",15)(8,"button",16),v("click",function(){return o.onCancelClick()}),d(9,"Cancel"),l(),s(10,"button",17),v("click",function(){return o.onSaveClick()}),d(11,"Apply"),l()()),n&2&&(u(),X("Configurator for Qemu VM ",o.name),u(5),O(o.name?6:-1))},dependencies:[Z,nt,Ue,vt,xi,mt,He,Ro,ct,pt,bt,Ce,Ve,Be,Dt,Tn,mo,Bo,Vo,Me,ke,lt,Fo,we,Te,Mt,At,St,$,le,ti,zn,mi,pi,di,te,se,Ot,Ht,Ds,Ul,el],encapsulation:2,changeDetection:0})}return t})();function jwe(t,i){t&1&&(s(0,"th",23),d(1,"Port : DLCI"),l())}function $we(t,i){if(t&1&&(s(0,"td",24),d(1),l()),t&2){let e=i.$implicit;u(),U(e.portIn)}}function Hwe(t,i){t&1&&(s(0,"th",23),d(1,"Port : DLCI"),l())}function Uwe(t,i){if(t&1&&(s(0,"td",24),d(1),l()),t&2){let e=i.$implicit;u(),U(e.portOut)}}function Gwe(t,i){t&1&&(s(0,"th",23),d(1,"Actions"),l())}function Wwe(t,i){if(t&1){let e=j();s(0,"td",24)(1,"button",25),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.delete(o))}),s(2,"mat-icon",26),d(3,"delete"),l()()()}}function qwe(t,i){t&1&&F(0,"tr",27)}function Xwe(t,i){t&1&&F(0,"tr",28)}function Qwe(t,i){if(t&1&&(s(0,"table",4),qe(1,16),Ae(2,jwe,2,0,"th",17)(3,$we,2,1,"td",18),Xe(),qe(4,19),Ae(5,Hwe,2,0,"th",17)(6,Uwe,2,1,"td",18),Xe(),qe(7,20),Ae(8,Gwe,2,0,"th",17)(9,Wwe,4,0,"td",18),Xe(),Ae(10,qwe,1,0,"tr",21)(11,Xwe,1,0,"tr",22),l()),t&2){let e=b();x("dataSource",e.nodeMappingsDataSource),u(10),x("matHeaderRowDef",e.displayedColumns),u(),x("matRowDefColumns",e.displayedColumns)}}var yM=(()=>{class t{dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);cd=f(K);controller;node;name;nameForm;inputForm;consoleTypes=[];nodeMappings=new Map;nodeMappingsDataSource=[];dataSource=[];displayedColumns=["portIn","portOut","actions"];sourcePort="";sourceDlci="";destinationPort="";destinationDlci="";constructor(){this.nameForm=this.formBuilder.group({name:new re("",be.required)}),this.inputForm=this.formBuilder.group({sourcePort:new re("",be.required),sourceDlci:new re("",be.required),destinationPort:new re("",be.required),destinationDlci:new re("",be.required)})}ngOnInit(){this.nodeService.getNode(this.controller,this.node).subscribe(e=>{this.node=e,this.name=e.name;let n=e.properties.mappings;Object.keys(n).forEach(o=>{this.nodeMappings.set(o,n[o])}),this.nodeMappings.forEach((o,r)=>{this.nodeMappingsDataSource.push({portIn:r,portOut:o})}),this.cd.markForCheck()})}delete(e){this.nodeMappingsDataSource=this.nodeMappingsDataSource.filter(n=>n!==e)}add(){if(this.inputForm.valid){let e={portIn:`${this.sourcePort}:${this.sourceDlci}`,portOut:`${this.destinationPort}:${this.destinationDlci}`};this.nodeMappingsDataSource.filter(n=>n.portIn===e.portIn).length>0?this.toasterService.error("Mapping already defined."):(this.nodeMappingsDataSource=this.nodeMappingsDataSource.concat([e]),this.clearUserInput())}else this.toasterService.error("Fill all required fields.")}clearUserInput(){this.sourcePort="0",this.sourceDlci="1",this.destinationPort="0",this.destinationDlci="1"}strMapToObj(e){let n=Object.create(null);for(let[o,r]of e)n[o]=r;return n}onSaveClick(){this.nameForm.valid?(this.nodeMappings.clear(),this.nodeMappingsDataSource.forEach(e=>{this.nodeMappings.set(e.portIn,e.portOut)}),this.node.properties.mappings=Array.from(this.nodeMappings).reduce((e,[n,o])=>Object.assign(e,{[n]:o}),{}),this.nodeService.updateNode(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:e=>{let n=e?.error?.message||e?.message||"Failed to update node";this.toasterService.error(n)}})):this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configurator-switch"]],decls:29,vars:4,consts:[["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],["mat-table","",3,"dataSource"],[3,"formGroup"],[1,"form-field"],["matInput","","type","text","formControlName","name","placeholder","Name"],["matInput","","type","number","min","0","formControlName","sourcePort","placeholder","Port"],["matInput","","type","number","min","1","formControlName","sourceDlci","placeholder","DLCI"],["matInput","","type","number","min","0","formControlName","destinationPort","placeholder","Port"],["matInput","","type","number","min","1","formControlName","destinationDlci","placeholder","DLCI"],["mat-button","",1,"form-field",3,"click"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],["matColumnDef","portIn"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","portOut"],["matColumnDef","actions"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell",""],["mat-icon-button","","matTooltip","Delete port","matTooltipClass","custom-tooltip",3,"click"],["aria-label","Delete port"],["mat-header-row",""],["mat-row",""]],template:function(n,o){n&1&&(s(0,"h1",0),d(1),l(),s(2,"div",1)(3,"div",2)(4,"div",3)(5,"mat-card"),A(6,Qwe,12,3,"table",4),F(7,"br"),s(8,"form",5)(9,"mat-form-field",6),F(10,"input",7),l()(),s(11,"form",5),d(12," Source "),s(13,"mat-form-field",6),F(14,"input",8),l(),s(15,"mat-form-field",6),F(16,"input",9),l(),d(17," Destination "),s(18,"mat-form-field",6),F(19,"input",10),l(),s(20,"mat-form-field",6),F(21,"input",11),l()(),s(22,"button",12),v("click",function(){return o.add()}),d(23,"Add"),l()()()()(),s(24,"div",13)(25,"button",14),v("click",function(){return o.onCancelClick()}),d(26,"Cancel"),l(),s(27,"button",15),v("click",function(){return o.onSaveClick()}),d(28,"Apply"),l()()),n&2&&(u(),X("Configurator for Frame-Relay switch ",o.name),u(5),O(o.nodeMappingsDataSource.length?6:-1),u(2),x("formGroup",o.nameForm),u(3),x("formGroup",o.inputForm))},dependencies:[Z,nt,Ue,vt,xi,mt,He,Ro,ct,pt,bt,Ce,Ve,Be,Dt,Tn,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,Me,ke,we,Te,$,le,ze,te,se,Gt,Kt],styles:["table[_ngcontent-%COMP%], .form-field[_ngcontent-%COMP%], .configButton[_ngcontent-%COMP%]{width:100%}.modal-form-container[_ngcontent-%COMP%]{padding:16px}.file-button[_ngcontent-%COMP%]{width:18%}.create-button[_ngcontent-%COMP%]{width:100%}.file-name-form-field[_ngcontent-%COMP%]{padding-left:2%;width:80%}.nonvisible[_ngcontent-%COMP%]{display:none}mat-radio-button[_ngcontent-%COMP%]{margin-right:8px}.tags-field[_ngcontent-%COMP%]{width:100%}","[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var Ywe=(t,i)=>i[1];function Kwe(t,i){if(t&1){let e=j();s(0,"mat-chip",27),v("removed",function(){let o=D(e).$implicit,r=b(2);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",28),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function Zwe(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function Jwe(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function e2e(t,i){if(t&1){let e=j();s(0,"mat-tab-group")(1,"mat-tab",9)(2,"form",10)(3,"mat-form-field",11)(4,"mat-label"),d(5,"Name"),l(),F(6,"input",12),l(),s(7,"mat-form-field",13)(8,"mat-label"),d(9,"Tags"),l(),s(10,"mat-chip-grid",null,0),J(12,Kwe,4,1,"mat-chip",null,Fe),l(),s(14,"input",14),v("matChipInputTokenEnd",function(o){D(e);let r=b();return P(r.addTag(o))}),l()(),s(15,"mat-form-field",11)(16,"mat-label"),d(17,"Console type"),l(),s(18,"mat-select",15),J(19,Zwe,2,2,"mat-option",16,Fe),l()(),s(21,"mat-checkbox",17),d(22," Auto start console "),l(),s(23,"mat-form-field",11)(24,"mat-label"),d(25,"RAM"),l(),F(26,"input",18),s(27,"span",19),d(28,"MB"),l()(),s(29,"mat-form-field",11)(30,"mat-label"),d(31,"On close"),l(),s(32,"mat-select",20),J(33,Jwe,2,2,"mat-option",16,Ywe),l()(),s(35,"mat-checkbox",21),d(36," Start VM in headless mode "),l()()(),s(37,"mat-tab",22)(38,"form",10)(39,"mat-checkbox",23),d(40," Allow GNS3 to use any configured VirtualBox adapter "),l(),F(41,"br")(42,"br"),s(43,"button",24),v("click",function(){D(e);let o=b();return P(o.openCustomAdaptersDialog())}),d(44,"Custom Adapters"),l()()(),s(45,"mat-tab",25)(46,"form",10)(47,"mat-form-field",11)(48,"mat-label"),d(49,"Usage"),l(),F(50,"textarea",26),l()()()()}if(t&2){let e=Re(11),n=b();u(2),x("formGroup",n.generalSettingsForm),u(10),ee(n.node==null?null:n.node.tags),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(5),ee(n.consoleTypes),u(14),ee(n.onCloseOptions),u(5),x("formGroup",n.generalSettingsForm),u(8),x("formGroup",n.generalSettingsForm)}}var SM=(()=>{class t{dialogRef=f(Pe);dialog=f(Je);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);virtualBoxConfigurationService=f(tg);cd=f(K);controller;node;name;generalSettingsForm;consoleTypes=[];onCloseOptions=[];separatorKeysCodes=[13,188];networkTypes=[];constructor(){this.generalSettingsForm=this.formBuilder.group({name:new re("",be.required),console_type:new re(""),console_auto_start:new re(!1),ram:new re("",be.required),on_close:new re(""),headless:new re(!1),use_any_adapter:new re(!1),usage:new re("")})}ngOnInit(){this.nodeService.getNode(this.controller,this.node).subscribe(e=>{this.node=e,this.name=e.name,this.generalSettingsForm.patchValue({name:e.name,console_type:e.console_type||"",console_auto_start:e.console_auto_start||!1,ram:e.properties.ram||"",on_close:e.properties.on_close||"",headless:e.properties.headless||!1,use_any_adapter:e.properties.use_any_adapter||!1,usage:e.properties.usage||""}),this.node.tags||(this.node.tags=[]),this.getConfiguration(),this.cd.markForCheck()})}getConfiguration(){this.consoleTypes=this.virtualBoxConfigurationService.getConsoleTypes(),this.onCloseOptions=this.virtualBoxConfigurationService.getOnCloseoptions(),this.networkTypes=this.virtualBoxConfigurationService.getNetworkTypes()}openCustomAdaptersDialog(){let e=this.node.port_name_format||"Ethernet{0}",n=this.node.port_segment_size||0,o=this.node.properties.adapter_type||"e1000",r=this.node.properties.adapters||0,a=this.node.custom_adapters||[],c=[];for(let p=0;p<r;p++){let h=a.find(g=>g.adapter_number===p);if(h)c.push({adapter_number:h.adapter_number,adapter_type:h.adapter_type,port_name:h.port_name,mac_address:h.mac_address||""});else{let g;if(n>0){let M=Math.floor(p/n),C=p%n;g=e.replace("{0}",String(M*n+C))}else g=e.replace("{0}",String(p));c.push({adapter_number:p,adapter_type:o,port_name:g,mac_address:""})}}this.dialog.open(Ms,{panelClass:"custom-adapters-dialog-panel",data:{adapters:c,networkTypes:this.networkTypes,portNameFormat:e,portSegmentSize:n,defaultAdapterType:o,currentAdapters:r}}).afterClosed().subscribe(p=>{p&&(this.node.custom_adapters=p.adapters,p.requiredAdapters!==void 0&&(this.node.properties.adapters=p.requiredAdapters),this.cd.markForCheck())})}onSaveClick(){if(this.generalSettingsForm.valid){let e=this.generalSettingsForm.value;this.node.name=e.name,this.node.console_type=e.console_type,this.node.console_auto_start=e.console_auto_start,this.node.properties.ram=e.ram,this.node.properties.on_close=e.on_close,this.node.properties.headless=e.headless,this.node.properties.use_any_adapter=e.use_any_adapter,this.node.properties.usage=e.usage,this.nodeService.updateNodeWithCustomAdapters(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:n=>{let o=n?.error?.message||n?.message||"Failed to update node";this.toasterService.error(o)}})}else this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogRef.close()}addTag(e){let n=(e.value||"").trim();n&&this.node&&(this.node.tags||(this.node.tags=[]),this.node.tags.push(n)),e.chipInput&&e.chipInput.clear()}removeTag(e){if(!this.node.tags)return;let n=this.node.tags.indexOf(e);n>=0&&this.node.tags.splice(n,1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configurator-virtualbox"]],decls:12,vars:2,consts:[["chipList",""],["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],[1,"matCard"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],["label","General settings"],[3,"formGroup"],[1,"form-field"],["matInput","","formControlName","name","type","text"],[1,"form-field","tags-field"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],["formControlName","console_type"],[3,"value"],["formControlName","console_auto_start"],["matInput","","formControlName","ram","type","number"],["matSuffix",""],["formControlName","on_close"],["formControlName","headless"],["label","Network"],["formControlName","use_any_adapter"],["mat-raised-button","","color","primary",3,"click"],["label","Usage"],["matInput","","formControlName","usage"],[3,"removed"],["matChipRemove",""]],template:function(n,o){n&1&&(s(0,"h1",1),d(1),l(),s(2,"div",2)(3,"div",3)(4,"div",4)(5,"mat-card",5),A(6,e2e,51,5,"mat-tab-group"),l()()()(),s(7,"div",6)(8,"button",7),v("click",function(){return o.onCancelClick()}),d(9,"Cancel"),l(),s(10,"button",8),v("click",function(){return o.onSaveClick()}),d(11,"Apply"),l()()),n&2&&(u(),X("Configurator for VirtualBox VM ",o.name),u(5),O(o.name?6:-1))},dependencies:[Z,nt,Ue,vt,xi,mt,He,ct,pt,bt,Ce,Ve,Be,Dt,Tn,mo,Bo,Vo,Me,ke,lt,Fo,we,Te,Mt,At,St,$,le,ti,zn,mi,pi,di,te,se,Ot,Ht],encapsulation:2,changeDetection:0})}return t})();var t2e=(t,i)=>i[1];function n2e(t,i){if(t&1){let e=j();s(0,"mat-chip",26),v("removed",function(){let o=D(e).$implicit,r=b(2);return P(r.removeTag(o))}),d(1),s(2,"mat-icon",27),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function i2e(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function o2e(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function r2e(t,i){if(t&1){let e=j();s(0,"mat-tab-group")(1,"mat-tab",9)(2,"form",10)(3,"mat-form-field",11)(4,"mat-label"),d(5,"Name"),l(),F(6,"input",12),l(),s(7,"mat-form-field",13)(8,"mat-label"),d(9,"Tags"),l(),s(10,"mat-chip-grid",null,0),J(12,n2e,4,1,"mat-chip",null,Fe),l(),s(14,"input",14),v("matChipInputTokenEnd",function(o){D(e);let r=b();return P(r.addTag(o))}),l()(),s(15,"mat-form-field",11)(16,"mat-label"),d(17,"Console type"),l(),s(18,"mat-select",15),J(19,i2e,2,2,"mat-option",16,Fe),l()(),s(21,"mat-checkbox",17),d(22," Auto start console "),l(),s(23,"mat-form-field",11)(24,"mat-label"),d(25,"On close"),l(),s(26,"mat-select",18),J(27,o2e,2,2,"mat-option",16,t2e),l()(),s(29,"mat-checkbox",19),d(30," Start VM in headless mode "),l(),s(31,"mat-checkbox",20),d(32," Use a linked base VM (experimental) "),l()()(),s(33,"mat-tab",21)(34,"form",10)(35,"mat-checkbox",22),d(36," Allow GNS3 to override non custom VMware adapter "),l(),F(37,"br")(38,"br"),s(39,"button",23),v("click",function(){D(e);let o=b();return P(o.openCustomAdaptersDialog())}),d(40,"Custom Adapters"),l()()(),s(41,"mat-tab",24)(42,"form",10)(43,"mat-form-field",11)(44,"mat-label"),d(45,"Usage"),l(),F(46,"textarea",25),l()()()()}if(t&2){let e=Re(11),n=b();u(2),x("formGroup",n.generalSettingsForm),u(10),ee(n.node==null?null:n.node.tags),u(2),x("matChipInputFor",e)("matChipInputSeparatorKeyCodes",n.separatorKeysCodes),u(5),ee(n.consoleTypes),u(8),ee(n.onCloseOptions),u(7),x("formGroup",n.generalSettingsForm),u(8),x("formGroup",n.generalSettingsForm)}}var wM=(()=>{class t{dialogRef=f(Pe);dialog=f(Je);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);vmwareConfigurationService=f(ng);cd=f(K);controller;node;name;generalSettingsForm;separatorKeysCodes=[13,188];consoleTypes=[];onCloseOptions=[];networkTypes=[];constructor(){this.generalSettingsForm=this.formBuilder.group({name:new re("",be.required),console_type:new re(""),console_auto_start:new re(!1),on_close:new re(""),headless:new re(!1),linked_clone:new re(!1),use_any_adapter:new re(!1),usage:new re("")})}ngOnInit(){this.nodeService.getNode(this.controller,this.node).subscribe(e=>{this.node=e,this.name=e.name,this.generalSettingsForm.patchValue({name:e.name,console_type:e.console_type||"",console_auto_start:e.console_auto_start||!1,on_close:e.properties.on_close||"",headless:e.properties.headless||!1,linked_clone:e.properties.linked_clone||!1,use_any_adapter:e.properties.use_any_adapter||!1,usage:e.properties.usage||""}),this.node.tags||(this.node.tags=[]),this.getConfiguration(),this.cd.markForCheck()})}getConfiguration(){this.consoleTypes=this.vmwareConfigurationService.getConsoleTypes(),this.onCloseOptions=this.vmwareConfigurationService.getOnCloseoptions(),this.networkTypes=this.vmwareConfigurationService.getNetworkTypes()}openCustomAdaptersDialog(){let e=this.node.port_name_format||"Ethernet{0}",n=this.node.port_segment_size||0,o=this.node.properties.adapter_type||"e1000",r=this.node.properties.adapters||0,a=this.node.custom_adapters||[],c=[];for(let p=0;p<r;p++){let h=a.find(g=>g.adapter_number===p);if(h)c.push({adapter_number:h.adapter_number,adapter_type:h.adapter_type,port_name:h.port_name,mac_address:h.mac_address||""});else{let g;if(n>0){let M=Math.floor(p/n),C=p%n;g=e.replace("{0}",String(M*n+C))}else g=e.replace("{0}",String(p));c.push({adapter_number:p,adapter_type:o,port_name:g,mac_address:""})}}this.dialog.open(Ms,{panelClass:"custom-adapters-dialog-panel",data:{adapters:c,networkTypes:this.networkTypes,portNameFormat:e,portSegmentSize:n,defaultAdapterType:o,currentAdapters:r}}).afterClosed().subscribe(p=>{p&&(this.node.custom_adapters=p.adapters,p.requiredAdapters!==void 0&&(this.node.properties.adapters=p.requiredAdapters),this.cd.markForCheck())})}onSaveClick(){if(this.generalSettingsForm.valid){let e=this.generalSettingsForm.value;this.node.name=e.name,this.node.console_type=e.console_type,this.node.console_auto_start=e.console_auto_start,this.node.properties.on_close=e.on_close,this.node.properties.headless=e.headless,this.node.properties.linked_clone=e.linked_clone,this.node.properties.use_any_adapter=e.use_any_adapter,this.node.properties.usage=e.usage,this.nodeService.updateNodeWithCustomAdapters(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:n=>{let o=n?.error?.message||n?.message||"Failed to update node";this.toasterService.error(o)}})}else this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogRef.close()}addTag(e){let n=(e.value||"").trim();n&&this.node&&(this.node.tags||(this.node.tags=[]),this.node.tags.push(n)),e.chipInput&&e.chipInput.clear()}removeTag(e){if(!this.node.tags)return;let n=this.node.tags.indexOf(e);n>=0&&this.node.tags.splice(n,1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configurator-vmware"]],decls:12,vars:2,consts:[["chipList",""],["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],[1,"matCard"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],["label","General settings"],[3,"formGroup"],[1,"form-field"],["matInput","","formControlName","name","type","text"],[1,"form-field","tags-field"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],["formControlName","console_type"],[3,"value"],["formControlName","console_auto_start"],["formControlName","on_close"],["formControlName","headless"],["formControlName","linked_clone"],["label","Network"],["formControlName","use_any_adapter"],["mat-raised-button","","color","primary",3,"click"],["label","Usage"],["matInput","","formControlName","usage"],[3,"removed"],["matChipRemove",""]],template:function(n,o){n&1&&(s(0,"h1",1),d(1),l(),s(2,"div",2)(3,"div",3)(4,"div",4)(5,"mat-card",5),A(6,r2e,47,5,"mat-tab-group"),l()()()(),s(7,"div",6)(8,"button",7),v("click",function(){return o.onCancelClick()}),d(9,"Cancel"),l(),s(10,"button",8),v("click",function(){return o.onSaveClick()}),d(11,"Apply"),l()()),n&2&&(u(),X("Configurator for VMware VM ",o.name),u(5),O(o.name?6:-1))},dependencies:[Z,nt,Ue,vt,mt,He,ct,pt,bt,Ce,Ve,Be,Dt,Tn,mo,Bo,Vo,Me,ke,lt,we,Te,Mt,At,St,$,le,ti,zn,mi,pi,di,te,se,Ot,Ht],encapsulation:2,changeDetection:0})}return t})();function a2e(t,i){if(t&1){let e=j();s(0,"mat-chip",17),v("removed",function(){let o=D(e).$implicit,r=b();return P(r.removeTag(o))}),d(1),s(2,"mat-icon",18),d(3,"cancel"),l()()}if(t&2){let e=i.$implicit;u(),X(" ",e," ")}}function s2e(t,i){if(t&1&&(s(0,"mat-option",12),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}var MM=(()=>{class t{dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);vpcsConfigurationService=f(fp);cd=f(K);controller;node;name;inputForm;separatorKeysCodes=[13,188];consoleTypes=[];constructor(){this.inputForm=this.formBuilder.group({name:new re("",be.required),console_type:new re(""),console_auto_start:new re(!1)})}ngOnInit(){this.nodeService.getNode(this.controller,this.node).subscribe(e=>{this.node=e,this.name=e.name,this.inputForm.patchValue({name:e.name,console_type:e.console_type||"",console_auto_start:e.console_auto_start||!1}),this.getConfiguration(),this.node.tags||(this.node.tags=[]),this.cd.markForCheck()})}getConfiguration(){this.consoleTypes=this.vpcsConfigurationService.getConsoleTypes()}onSaveClick(){if(this.inputForm.valid){let e=this.inputForm.value;this.node.name=e.name,this.node.console_type=e.console_type,this.node.console_auto_start=e.console_auto_start,this.nodeService.updateNode(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:n=>{let o=n?.error?.message||n?.message||"Failed to update node";this.toasterService.error(o)}})}else this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogRef.close()}addTag(e){let n=(e.value||"").trim();n&&this.node&&(this.node.tags||(this.node.tags=[]),this.node.tags.push(n)),e.chipInput&&e.chipInput.clear()}removeTag(e){if(!this.node.tags)return;let n=this.node.tags.indexOf(e);n>=0&&this.node.tags.splice(n,1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-configurator-vpcs"]],decls:32,vars:4,consts:[["chipList",""],["mat-dialog-title",""],[1,"modal-form-container"],[1,"content"],[1,"default-content"],[1,"matCard"],[3,"formGroup"],[1,"form-field"],["matInput","","type","text","formControlName","name"],[1,"form-field","tags-field"],["matInput","","placeholder","Add tags",3,"matChipInputTokenEnd","matChipInputFor","matChipInputSeparatorKeyCodes"],["formControlName","console_type"],[3,"value"],["formControlName","console_auto_start"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],[3,"removed"],["matChipRemove",""]],template:function(n,o){if(n&1&&(s(0,"h1",1),d(1),l(),s(2,"div",2)(3,"div",3)(4,"div",4)(5,"mat-card",5)(6,"form",6)(7,"mat-form-field",7)(8,"mat-label"),d(9,"Name"),l(),F(10,"input",8),l(),s(11,"mat-form-field",9)(12,"mat-label"),d(13,"Tags"),l(),s(14,"mat-chip-grid",null,0),J(16,a2e,4,1,"mat-chip",null,Fe),l(),s(18,"input",10),v("matChipInputTokenEnd",function(a){return o.addTag(a)}),l()(),s(19,"mat-form-field",7)(20,"mat-label"),d(21,"Console type"),l(),s(22,"mat-select",11),J(23,s2e,2,2,"mat-option",12,Fe),l()(),s(25,"mat-checkbox",13),d(26," Auto start console "),l()()()()()(),s(27,"div",14)(28,"button",15),v("click",function(){return o.onCancelClick()}),d(29,"Cancel"),l(),s(30,"button",16),v("click",function(){return o.onSaveClick()}),d(31,"Apply"),l()()),n&2){let r=Re(15);u(),X("Configurator for VPCS node ",o.name),u(5),x("formGroup",o.inputForm),u(10),ee(o.node==null?null:o.node.tags),u(2),x("matChipInputFor",r)("matChipInputSeparatorKeyCodes",o.separatorKeysCodes),u(5),ee(o.consoleTypes)}},dependencies:[Z,nt,Ue,vt,mt,He,ct,pt,bt,Ce,Ve,Be,Dt,Tn,Me,ke,lt,we,Te,Mt,At,St,$,le,ti,zn,mi,pi,di,te,se,Ot,Ht],encapsulation:2,changeDetection:0})}return t})();var kM=(()=>{class t{dialog=f(Je);controller=oe(void 0);node=oe(void 0);conf={panelClass:["base-dialog-panel","configurator-dialog-panel"],autoFocus:!1,disableClose:!1};dialogRef;configureNode(){let e=this.node();e.node_type==="vpcs"?this.dialogRef=this.dialog.open(MM,this.conf):e.node_type==="ethernet_hub"?this.dialogRef=this.dialog.open(fM,this.conf):e.node_type==="ethernet_switch"?this.dialogRef=this.dialog.open(hM,this.conf):e.node_type==="cloud"?this.dialogRef=this.dialog.open(dM,this.conf):e.node_type==="dynamips"?this.dialogRef=this.dialog.open(gM,this.conf):e.node_type==="iou"?this.dialogRef=this.dialog.open(_M,this.conf):e.node_type==="qemu"?this.dialogRef=this.dialog.open(xM,tt(H({},this.conf),{panelClass:["base-dialog-panel","configurator-dialog-panel"]})):e.node_type==="virtualbox"?this.dialogRef=this.dialog.open(SM,this.conf):e.node_type==="vmware"?this.dialogRef=this.dialog.open(wM,this.conf):e.node_type==="docker"?this.dialogRef=this.dialog.open(uM,tt(H({},this.conf),{panelClass:["base-dialog-panel","configurator-dialog-panel","docker-configurator-dialog-panel"]})):e.node_type==="nat"?this.dialogRef=this.dialog.open(vM,this.conf):e.node_type==="frame_relay_switch"?this.dialogRef=this.dialog.open(yM,this.conf):e.node_type==="atm_switch"&&(this.dialogRef=this.dialog.open(lM,this.conf));let n=this.dialogRef.componentInstance;n.controller=this.controller(),n.node=e}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-config-node-action"]],inputs:{controller:[1,"controller"],node:[1,"node"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.configureNode()}),s(1,"mat-icon"),d(2,"settings_applications"),l(),s(3,"span"),d(4,"Configure"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function l2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.startNodes())}),s(1,"mat-icon"),d(2,"play_arrow"),l(),s(3,"span"),d(4,"Start"),l()()}}var TM=(()=>{class t{nodeService=f(wt);toasterService=f(fe);controller=oe(void 0);nodes=oe(void 0);isNodeWithStoppedStatus;ngOnChanges(e){e.nodes&&(this.isNodeWithStoppedStatus=!1,this.nodes().forEach(n=>{(n.status==="stopped"||n.status==="suspended")&&(this.isNodeWithStoppedStatus=!0)}))}startNodes(){this.nodes().forEach(e=>{this.nodeService.start(this.controller(),e).subscribe(n=>{},n=>{this.toasterService.error(n.error?.message||n.message||"Failed to start node")})})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-start-node-action"]],inputs:{controller:[1,"controller"],nodes:[1,"nodes"]},features:[un],decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&A(0,l2e,5,0,"button",0),n&2&&O(o.isNodeWithStoppedStatus?0:-1)},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function c2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.suspendNodes())}),s(1,"mat-icon"),d(2,"pause"),l(),s(3,"span"),d(4,"Suspend"),l()()}}var EM=(()=>{class t{nodeService=f(wt);toasterService=f(fe);cdr=f(K);controller=oe(void 0);nodes=oe(void 0);isNodeWithStartedStatus;ngOnChanges(e){e.nodes&&(this.isNodeWithStartedStatus=!1,this.nodes().forEach(n=>{n.status==="started"&&(this.isNodeWithStartedStatus=!0)}))}suspendNodes(){this.nodes().forEach(e=>{this.nodeService.suspend(this.controller(),e).subscribe({next:n=>{},error:n=>{let o=n.error?.message||n.message||"Failed to suspend node";this.toasterService.error(o),this.cdr.markForCheck()}})})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-suspend-node-action"]],inputs:{controller:[1,"controller"],nodes:[1,"nodes"]},features:[un],decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&A(0,c2e,5,0,"button",0),n&2&&O(o.isNodeWithStartedStatus?0:-1)},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function d2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.stopNodes())}),s(1,"mat-icon"),d(2,"stop"),l(),s(3,"span"),d(4,"Stop"),l()()}}var DM=(()=>{class t{nodeService=f(wt);toasterService=f(fe);cdr=f(K);controller=oe(void 0);nodes=oe(void 0);isNodeWithStartedStatus;ngOnChanges(e){e.nodes&&(this.isNodeWithStartedStatus=!1,this.nodes().forEach(n=>{n.status==="started"&&(this.isNodeWithStartedStatus=!0)}))}stopNodes(){this.nodes().forEach(e=>{this.nodeService.stop(this.controller(),e).subscribe({next:n=>{},error:n=>{let o=n.error?.message||n.message||"Failed to stop node";this.toasterService.error(o),this.cdr.markForCheck()}})})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-stop-node-action"]],inputs:{controller:[1,"controller"],nodes:[1,"nodes"]},features:[un],decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&A(0,d2e,5,0,"button",0),n&2&&O(o.isNodeWithStartedStatus?0:-1)},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function m2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.reloadNodes())}),s(1,"mat-icon"),d(2,"refresh"),l(),s(3,"span"),d(4,"Reload"),l()()}}var PM=(()=>{class t{nodeService=f(wt);toasterService=f(fe);cdr=f(K);controller=oe(void 0);nodes=oe(void 0);filteredNodes=[];ngOnInit(){(this.nodes()||[]).forEach(n=>{(n.node_type==="vpcs"||n.node_type==="qemu"||n.node_type==="virtualbox"||n.node_type==="vmware")&&this.filteredNodes.push(n)})}reloadNodes(){this.filteredNodes.forEach(e=>{this.nodeService.reload(this.controller(),e).subscribe({next:n=>{},error:n=>{let o=n.error?.message||n.message||"Failed to reload node";this.toasterService.error(o),this.cdr.markForCheck()}})})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-reload-node-action"]],inputs:{controller:[1,"controller"],nodes:[1,"nodes"]},decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&A(0,m2e,5,0,"button",0),n&2&&O(o.filteredNodes.length>0?0:-1)},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var _d=(()=>{class t{toasterService;constructor(e){this.toasterService=e}buildVncWebSocketUrl(e,n){return`${e.protocol==="https:"?"wss":"ws"}://${e.host}:${e.port}/${Ai.current_version}/projects/${n.project_id}/nodes/${n.node_id}/console/vnc?token=${e.authToken}`}buildVncConsolePageUrl(e,n){let o=this.buildVncWebSocketUrl(e,n);return`assets/vnc-console/index.html?${new URLSearchParams({ws_url:o,node_name:n.name,node_id:n.node_id,project_id:n.project_id,autoconnect:"1"}).toString()}`}openVncConsole(e,n,o=!1){if(n.status!=="started"){this.toasterService.error("Node must be started before opening console");return}if(n.console_type!=="vnc"){this.toasterService.error(`Node console type is ${n.console_type}, not vnc`);return}try{let r=this.buildVncConsolePageUrl(e,n),a=10,c=1024+a,m=768+a;if(n.properties){let h=n.properties;if(h.console_resolution){let M=h.console_resolution.split("x");M.length===2&&(c=parseInt(M[0],10)+a,m=parseInt(M[1],10)+a)}}let p;if(o)p=window.open(r,"_blank");else{let h=`VNC-${n.name}`;p=window.open(r,h,`width=${c},height=${m}`)}(!p||p.closed||typeof p.closed>"u")&&this.toasterService.error("Popup was blocked. Please allow popups for this site.")}catch(r){this.toasterService.error(`Failed to open VNC console: ${r.message}`)}}static \u0275fac=function(n){return new(n||t)(ge(fe))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var IM=(()=>{class t{nodeConsoleService=f(gr);vncConsoleService=f(_d);toasterService=f(fe);router=f(ut);mapSettingsService=f(To);cdr=f(K);controller=oe(void 0);project=oe(void 0);nodes=oe(void 0);openWebConsoleInline=new ve;openConsole(){if(this.nodes().length!==1){this.toasterService.error("Inline web console is only supported for a single node.");return}let e=this.nodes()[0],n=this.controller(),o=this.project();if(!(!n||!o)){if(e.status!=="started"){this.toasterService.error(`Please start the node '${e.name}' before opening the console.`);return}if(e.console_type==="none"){this.toasterService.error(`Node '${e.name}' has no console configured.`);return}e.console_type==="vnc"||e.console_type&&e.console_type.startsWith("http")?this.openWebConsoleInline.emit({node:e,controller:n,project:o}):e.console_type==="telnet"?(this.mapSettingsService.logConsoleSubject.next(!0),setTimeout(()=>{this.nodeConsoleService.openConsoleForNode(e),this.cdr.markForCheck()},500)):this.toasterService.error(`Console type '${e.console_type}' is not supported for inline web console.`)}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-http-console-action"]],inputs:{controller:[1,"controller"],project:[1,"project"],nodes:[1,"nodes"]},outputs:{openWebConsoleInline:"openWebConsoleInline"},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.openConsole()}),s(1,"mat-icon"),d(2,"web_asset"),l(),s(3,"span"),d(4,"Web console (Inline)"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var AM=(()=>{class t{nodeConsoleService=f(gr);vncConsoleService=f(_d);toasterService=f(fe);router=f(ut);controller=oe(void 0);nodes=oe(void 0);openConsole(){let e="",n=0;this.nodes().forEach(o=>{if(o.console_type!=="none")if(o.status==="started")if(o.console_type==="vnc")this.vncConsoleService.openVncConsole(this.controller(),o,!0);else if(o.console_type&&o.console_type.startsWith("http")){(o.console_host==="0.0.0.0"||o.console_host==="0:0:0:0:0:0:0:0"||o.console_host==="::")&&(o.console_host=this.controller().host);let r=`${o.console_type}://${o.console_host}:${o.console}`;window.open(r,"_blank")}else if(o.console_type==="telnet"){let r=this.router.url.split("/"),a=`/static/web-ui/${r[1]}/${r[2]}/${r[3]}/${r[4]}/nodes/${o.node_id}`;window.open(a,"_blank")}else this.toasterService.error(`Console type '${o.console_type}' not supported in new tab for node ${o.name}.`);else n++,e+=o.name+" "}),n>0&&this.toasterService.error("Please start the following nodes if you want to open consoles in new tabs: "+e)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-http-console-new-tab-action"]],inputs:{controller:[1,"controller"],nodes:[1,"nodes"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.openConsole()}),s(1,"mat-icon"),d(2,"http"),l(),s(3,"span"),d(4,"Web console in new tab"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var i_={UKNOWN:"Unknown"},jN={CHROME:"Chrome",FIREFOX:"Firefox",SAFARI:"Safari",OPERA:"Opera",IE:"IE",MS_EDGE:"MS-Edge",MS_EDGE_CHROMIUM:"MS-Edge-Chromium",FB_MESSANGER:"FB-Messanger",SAMSUNG:"Samsung",UCBROWSER:"UC-Browser",UNKNOWN:i_.UKNOWN},OM={HTC:/HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\bEVO\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel/,NEXUS_PHONE:/Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6/,DELL:/Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b/,MOTOROLA:new RegExp(`Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|
|
||
A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|
|
||
MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|
|
||
ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|
|
||
WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|
|
||
XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|
|
||
XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052`),SAMSUNG:new RegExp(`\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|
|
||
GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|
|
||
GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|
|
||
GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|
|
||
GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|
|
||
GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|
|
||
GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|
|
||
GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|
|
||
GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|
|
||
GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|
|
||
GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|
|
||
GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|
|
||
GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|
|
||
GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|
|
||
GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|
|
||
GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|
|
||
GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|
|
||
GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|
|
||
SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|
|
||
SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|
|
||
SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|
|
||
SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|
|
||
SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|
|
||
SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|
|
||
SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|
|
||
SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|
|
||
SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|
|
||
SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|
|
||
SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|
|
||
SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|
|
||
SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|
|
||
SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|
|
||
SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|
|
||
SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|
|
||
SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|
|
||
SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|
|
||
SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|
|
||
SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|
|
||
SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|
|
||
SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|
|
||
SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|
|
||
SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|
|
||
SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|
|
||
SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|
|
||
SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|
|
||
SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|
|
||
SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|
|
||
SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|
|
||
SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|
|
||
GT-N7105|SCH-I535|SM-N900A|SM-N900T|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|
|
||
GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|
|
||
GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|
|
||
SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|
|
||
SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|
|
||
SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F`),LG:new RegExp(`\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|
|
||
LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|
|
||
C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|
|
||
LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|
|
||
VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|
|
||
MS323|M257)`),SONY:/SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533/,ASUS:/Asus.*Galaxy|PadFone.*Mobile/,NOKIA_LUMIA:/Lumia [0-9]{3,4}/,MICROMAX:/Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b/,PALM:/PalmSource|Palm/,VERTU:/Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature/,PANTECH:new RegExp(`PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|
|
||
IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|
|
||
IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|
|
||
CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|
|
||
P2000|P7040|P7000|C790`),FLY:/IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250/,WIKO:new RegExp(`KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|
|
||
SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|
|
||
CINK KING|CINK PEAX|CINK SLIM|SUBLIM`),I_MOBILE:/i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)/,SIMVALLEY:/\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b/,WOLFGANG:/AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q/,ALCATEL:/Alcatel|Mobile; rv:49.0|Mobile; ALCATEL 4052R; rv:48.0/,NINTENDO:/Nintendo (3DS|Switch)/,AMOI:/Amoi/,INQ:/INQ/,VITA:/\bVita\b/,BLACKBERRY:/\bBlackBerry\b|\bBB10\b|rim[0-9]+/,FIREFOX_OS:/\bFirefox-OS\b/,IPHONE:/\biPhone\b/,iPod:/\biPod\b/,ANDROID:/\bAndroid\b/,WINDOWS_PHONE:/\bWindows-Phone\b/,GENERIC_PHONE:new RegExp(`Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|
|
||
up.link|vodafone|\\bwap\\b|nokia|Nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser`)},n_={iPad:/iPad|iPad.*Mobile/,NexusTablet:/Android.*Nexus[\s]+(7|9|10)/,GoogleTablet:/Android.*Pixel C/,SamsungTablet:new RegExp(`SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|
|
||
GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|
|
||
SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|
|
||
GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|
|
||
SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|
|
||
GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|
|
||
SHV-E230S|SHW-M180K|SHW-M180L|SM-T865|SM-T290|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|
|
||
SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|
|
||
GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T385M|SM-P585M|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|
|
||
SM-P601|SM-P605|SM-P615|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|
|
||
GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|
|
||
SM-T510|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|
|
||
SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T500|SM-T330|
|
||
SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|
|
||
SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|
|
||
SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|
|
||
SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|
|
||
SM-T719|SM-T725|SM-T813|SM-T819|SM-T580|SM-T590|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|
|
||
SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-P585Y|SM-X200`),Kindle:new RegExp(`Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|
|
||
KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk/[0-9.]+ like Chrome /[0-9.]+ (?!Mobile)`),SurfaceTablet:/Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)/,HPTablet:/HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10/,AsusTablet:new RegExp(`^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|
|
||
TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|
|
||
Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|
|
||
ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|
|
||
ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b`),BlackBerryTablet:/PlayBook|RIM Tablet/,HTCtablet:/HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410/,MotorolaTablet:/xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617/,NookTablet:/Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2/,AcerTablet:new RegExp(`Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|
|
||
W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|
|
||
\\bA3-A20\\b|\\bA3-A30`),ToshibaTablet:/Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO/,LGTablet:/\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\b/,FujitsuTablet:/Android.*\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\b/,PrestigioTablet:new RegExp(`PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|
|
||
PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|
|
||
PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|
|
||
PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|
|
||
PMT5887|PMT5001|PMT5002`),LenovoTablet:new RegExp(`Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|
|
||
YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|
|
||
B8000|B8080)(-|)(FL|F|HV|H|)|TB-X606F|TB-X103F|TB-X304F|TB-X304L|TB-X704F|TB-8703F|Tab2A7-10F|TB2-X30L|TB-8504F`),DellTablet:/Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7/,YarvikTablet:new RegExp(`Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|
|
||
TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|
|
||
TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|
|
||
TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|
|
||
TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b`),MedionTablet:/Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB/,ArnovaTablet:/97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2/,IntensoTablet:/INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004/,IRUTablet:/M702pro/,MegafonTablet:/MegaFon V9|\bZTE V9\b|Android.*\bMT7A\b/,EbodaTablet:/E-Boda (Supreme|Impresspeed|Izzycomm|Essential)/,AllViewTablet:/Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)/,ArchosTablet:new RegExp(`\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10|
|
||
Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b`),AinolTablet:/NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark/,NokiaLumiaTablet:/Lumia 2520/,SonyTablet:new RegExp(`Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|
|
||
SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|
|
||
EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|
|
||
SGP612|SGP712`),PhilipsTablet:/\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\b/,CubeTablet:/Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT/,CobyTablet:new RegExp(`MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|
|
||
MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010`),MIDTablet:new RegExp(`M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|
|
||
MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|
|
||
MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10`),MSITablet:new RegExp(`MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|
|
||
Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b`),SMiTTablet:/Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)/,RockChipTablet:/Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A/,FlyTablet:/IQ310|Fly Vision/,bqTablet:new RegExp(`Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|
|
||
Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))|Maxwell.*Lite|Maxwell.*Plus`),HuaweiTablet:new RegExp(`MediaPad|MediaPad 7 Youth|MediaPad T3 10|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|
|
||
S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-W09`),NecTablet:/\bN-06D|\bN-08D/,PantechTablet:/Pantech.*P4100/,BronchoTablet:/Broncho.*(N701|N708|N802|a710)/,VersusTablet:/TOUCHPAD.*[78910]|\bTOUCHTAB\b/,ZyncTablet:/z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900/,PositivoTablet:/TB07STA|TB10STA|TB07FTA|TB10FTA/,NabiTablet:/Android.*\bNabi/,KoboTablet:/Kobo Touch|\bK080\b|\bVox\b Build|\bArc\b Build/,DanewTablet:/DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b/,TexetTablet:new RegExp(`NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|
|
||
TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|
|
||
TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|
|
||
TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|
|
||
TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|
|
||
TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|
|
||
TB-436|TB-416|TB-146SE|TB-126SE`),PlaystationTablet:/Playstation.*(Portable|Vita)/,TrekstorTablet:/ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab/,PyleAudioTablet:/\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b/,AdvanTablet:new RegExp(`Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|
|
||
T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b`),DanyTechTablet:`Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|
|
||
Genius TAB GII|Genius TAB GIII|Genius Tab S1`,GalapadTablet:/Android.*\bG1\b(?!\))/,MicromaxTablet:/Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b/,KarbonnTablet:/Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b/,AllFineTablet:/Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide/,PROSCANTablet:new RegExp(`\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|
|
||
PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|
|
||
PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|
|
||
PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b`),YONESTablet:/BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026/,ChangJiaTablet:new RegExp(`TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|
|
||
TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|
|
||
TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|
|
||
TPC10111|TPC10203|TPC10205|TPC10503`),GUTablet:/TX-A1301|TX-M9002|Q702|kf026/,PointOfViewTablet:new RegExp(`TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|
|
||
TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|
|
||
TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|
|
||
TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10`),OvermaxTablet:new RegExp(`OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|
|
||
MagicTab|Stream|TB-08|TB-09)|Qualcore 1027`),HCLTablet:/HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync/,DPSTablet:/DPS Dream 9|DPS Dual 7/,VistureTablet:/V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10/,CrestaTablet:/CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989/,MediatekTablet:/\bMT8125|MT8389|MT8135|MT8377\b/,ConcordeTablet:/Concorde([ ]+)?Tab|ConCorde ReadMan/,GoCleverTablet:new RegExp(`GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|
|
||
TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|
|
||
GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|
|
||
TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|
|
||
TAB R104|TAB R83.3|TAB A1042`),ModecomTablet:new RegExp(`FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|
|
||
FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|
|
||
FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003`),VoninoTablet:new RegExp(`\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|
|
||
Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|
|
||
Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b`),ECSTablet:/V07OT2|TM105A|S10OT1|TR10CS1/,StorexTablet:/eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab/,VodafoneTablet:/SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497/,EssentielBTablet:/Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2/,RossMoorTablet:/RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711/,iMobileTablet:/i-mobile i-note/,TolinoTablet:/tolino tab [0-9.]+|tolino shine/,AudioSonicTablet:/\bC-22Q|T7-QC|T-17B|T-17P\b/,AMPETablet:/Android.* A78 /,SkkTablet:/Android.* (SKYPAD|PHOENIX|CYCLOPS)/,TecnoTablet:/TECNO P9|TECNO DP8D/,JXDTablet:new RegExp(`Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|
|
||
S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|
|
||
P1000|P300|S18|S6600|S9100)\\b`),iJoyTablet:new RegExp(`Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|
|
||
Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|
|
||
Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|
|
||
Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|
|
||
Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)`),FX2Tablet:/FX2 PAD7|FX2 PAD10/,XoroTablet:new RegExp(`KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|
|
||
PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|
|
||
PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|
|
||
TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151`),ViewsonicTablet:/ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a/,VerizonTablet:/QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1/,OdysTablet:/LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\bXELIO\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10/,CaptivaTablet:/CAPTIVA PAD/,IconbitTablet:new RegExp(`NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|
|
||
NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S`),TeclastTablet:new RegExp(`T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|
|
||
\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|
|
||
\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|
|
||
\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|
|
||
\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|
|
||
\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|
|
||
\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|
|
||
\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|
|
||
\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi`),OndaTablet:new RegExp(`\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|
|
||
V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|
|
||
V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|
|
||
Vi40)\\b[s]+|V10 \\b4G\\b`),JaytechTablet:/TPC-PA762/,BlaupunktTablet:/Endeavour 800NG|Endeavour 1010/,DigmaTablet:/\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\b/,EvolioTablet:/ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\bEvotab\b|\bNeura\b/,LavaTablet:/QPAD E704|\bIvoryS\b|E-TAB IVORY|\bE-TAB\b/,AocTablet:/MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712/,MpmanTablet:new RegExp(`MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|
|
||
\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|
|
||
MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010`),CelkonTablet:/CT695|CT888|CT[\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\bCT-1\b/,WolderTablet:new RegExp(`miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|
|
||
POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|
|
||
FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b`),MediacomTablet:"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA",MiTablet:/\bMI PAD\b|\bHM NOTE 1W\b/,NibiruTablet:/Nibiru M1|Nibiru Jupiter One/,NexoTablet:/NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI/,LeaderTablet:new RegExp(`TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|
|
||
TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100`),UbislateTablet:/UbiSlate[\s]?7C/,PocketBookTablet:/Pocketbook/,KocasoTablet:/\b(TB-1207)\b/,HisenseTablet:/\b(F5281|E2371)\b/,Hudl:/Hudl HT7S3|Hudl 2/,TelstraTablet:/T-Hub2/,Honeywell:/RT10A/,GenericTablet:new RegExp(`Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|
|
||
A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|
|
||
Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107`)},Up={BLACKBERRY:"Blackberry",FIREFOX_OS:"Firefox-OS",CHROME_BOOK:"Chrome-Book",WINDOWS_PHONE:"Windows-Phone",VITA:"Vita",PS4:"PS4",MAC:"Macintosh",CHROMECAST:"Chromecast",APPLE_TV:"Apple-TV",GOOGLE_TV:"Google-TV",ANDROID:"Android",Tesla:"Tesla",iPad:"iPad",IPHONE:"iPhone",iPod:"iPod",UNKNOWN:i_.UKNOWN,HTC:"HTC",NEXUS_PHONE:"Nexus Phone",NexusTablet:"Nexus Tablet",DELL:"Dell",MOTOROLA:"Motorola",SAMSUNG:"Samsung",LG:"LG",SONY:"Sony",ASUS:"Asus",NOKIA_LUMIA:"Nokia Lumia",MICROMAX:"Micromax",PALM:"Palm",VERTU:"Vertu",PANTECH:"PANTECH",FLY:"Fly",WIKO:"WIKO",I_MOBILE:"i-mobile",SIMVALLEY:"Simvalley",WOLFGANG:"Wolfgang",ALCATEL:"Alcatel",HONEYWELL:"Honeywell",NINTENDO:"Nintendo",AMOI:"Amoi",INQ:"INQ",GENERIC_PHONE:"Generic Phone",MI_SE_9:"Mi SE 9"},QH=[Up.PS4,Up.CHROME_BOOK,Up.MAC,Up.DELL,Up.ASUS,Up.UNKNOWN],p2e={WINDOWS:"Windows",MAC:"Mac",IOS:"iOS",ANDROID:"Android",LINUX:"Linux",UNIX:"Unix",FIREFOX_OS:"Firefox-OS",CHROME_OS:"Chrome-OS",WINDOWS_PHONE:"Windows-Phone",UNKNOWN:i_.UKNOWN},u2e={WINDOWS_3_11:"windows-3-11",WINDOWS_95:"windows-95",WINDOWS_ME:"windows-me",WINDOWS_98:"windows-98",WINDOWS_CE:"windows-ce",WINDOWS_2000:"windows-2000",WINDOWS_XP:"windows-xp",WINDOWS_SERVER_2003:"windows-server-2003",WINDOWS_VISTA:"windows-vista",WINDOWS_7:"windows-7",WINDOWS_8_1:"windows-8-1",WINDOWS_8:"windows-8",WINDOWS_10:"windows-10",WINDOWS_PHONE_7_5:"windows-phone-7-5",WINDOWS_PHONE_8_1:"windows-phone-8-1",WINDOWS_PHONE_10:"windows-phone-10",WINDOWS_NT_4_0:"windows-nt-4-0",MACOSX_11_0:"mac-os-x-11-0",MACOSX_16:"mac-os-x-16",MACOSX_15:"mac-os-x-15",MACOSX_14:"mac-os-x-14",MACOSX_13:"mac-os-x-13",MACOSX_12:"mac-os-x-12",MACOSX_11:"mac-os-x-11",MACOSX_10:"mac-os-x-10",MACOSX_9:"mac-os-x-9",MACOSX_8:"mac-os-x-8",MACOSX_7:"mac-os-x-7",MACOSX_6:"mac-os-x-6",MACOSX_5:"mac-os-x-5",MACOSX_4:"mac-os-x-4",MACOSX_3:"mac-os-x-3",MACOSX_2:"mac-os-x-2",MACOSX:"mac-os-x",iOS:"iOS",ANDROID_9:"android-9",UNKNOWN:i_.UKNOWN.toLowerCase()},YH={WINDOWS:{and:[{or:[/\bWindows|(Win\d\d)\b/,/\bWin 9x\b/]},{not:/\bWindows Phone\b/}]},MAC:{and:[/\bMac OS\b/,{not:{or:[/\biPhone\b/,/\biPad\b/,/\biPod\b/,/\bWindows Phone\b/]}}]},IOS:{and:[{or:[/\biPad\b/,/\biPhone\b/,/\biPod\b/]},{not:/\bWindows Phone\b/}]},ANDROID:{and:[/\bAndroid\b/,{not:/\bWindows Phone\b/}]},LINUX:/\bLinux\b/,UNIX:/\bUNIX\b/,FIREFOX_OS:{and:[/\bFirefox\b/,/Mobile\b/]},CHROME_OS:/\bCrOS\b/,WINDOWS_PHONE:{or:[/\bIEMobile\b/,/\bWindows Phone\b/]},PS4:/\bMozilla\/5.0 \(PlayStation 4\b/,VITA:/\bMozilla\/5.0 \(Play(S|s)tation Vita\b/},h2e={CHROME:{and:[{or:[/\bChrome\b/,/\bCriOS\b/,/\bHeadlessChrome\b/]},{not:{or:[/\bOPR\b/,/\bEdg(e|A|iOS)\b/,/\bEdg\/\b/,/\bSamsungBrowser\b/,/\bUCBrowser\b/]}}]},FIREFOX:{or:[/\bFirefox\b/,/\bFxiOS\b/]},SAFARI:{and:[/^((?!CriOS).)*\Safari\b.*$/,{not:{or:[/\bOPR\b/,/\bEdg(e|A|iOS)\b/,/\bEdg\/\b/,/\bWindows Phone\b/,/\bSamsungBrowser\b/,/\bUCBrowser\b/]}}]},OPERA:{or:[/Opera\b/,/\bOPR\b/]},IE:{or:[/\bMSIE\b/,/\bTrident\b/,/^Mozilla\/5\.0 \(Windows NT 10\.0; Win64; x64\)$/]},MS_EDGE:{or:[/\bEdg(e|A|iOS)\b/]},MS_EDGE_CHROMIUM:/\bEdg\/\b/,PS4:/\bMozilla\/5.0 \(PlayStation 4\b/,VITA:/\bMozilla\/5.0 \(Play(S|s)tation Vita\b/,FB_MESSANGER:/\bFBAN\/MessengerForiOS\b/,SAMSUNG:/\bSamsungBrowser\b/,UCBROWSER:/\bUCBrowser\b/},f2e=tt(H(H(H({},OM),n_),YH),{FIREFOX_OS:{and:[/\bFirefox\b/,/\bMobile\b/]},CHROME_BOOK:/\bCrOS\b/,PS4:/\bMozilla\/5.0 \(PlayStation 4\b/,CHROMECAST:/\bCrKey\b/,APPLE_TV:/^iTunes-AppleTV\/4.1$/,GOOGLE_TV:/\bGoogleTV\b/,Tesla:/Tesla\/([0-9]{4}.[0-9]{1,2}.?[0-9]{0,2}.?[0-9]{0,2})-(.{7})/,MI_SE_9:/\bXiaomi\b/,MAC:{and:[/\bMac OS\b/,{not:{or:[/\biPhone\b/,/\biPad\b/,/\biPod\b/,/\bWindows Phone\b/]}}]}}),LN={WINDOWS_3_11:/Win16/,WINDOWS_95:/(Windows 95|Win95|Windows_95)/,WINDOWS_ME:/(Win 9x 4.90|Windows ME)/,WINDOWS_98:/(Windows 98|Win98)/,WINDOWS_CE:/Windows CE/,WINDOWS_2000:/(Windows NT 5.0|Windows 2000)/,WINDOWS_XP:/(Windows NT 5.1|Windows XP)/,WINDOWS_SERVER_2003:/Windows NT 5.2/,WINDOWS_VISTA:/Windows NT 6.0/,WINDOWS_7:/(Windows 7|Windows NT 6.1)/,WINDOWS_8_1:/(Windows 8.1|Windows NT 6.3)/,WINDOWS_8:/(Windows 8|Windows NT 6.2)/,WINDOWS_10:/(Windows NT 10.0)/,WINDOWS_PHONE_7_5:/(Windows Phone OS 7.5)/,WINDOWS_PHONE_8_1:/(Windows Phone 8.1)/,WINDOWS_PHONE_10:/(Windows Phone 10)/,WINDOWS_NT_4_0:{and:[/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/,{not:/Windows NT 10.0/}]},MACOSX:/(MAC OS X\s*[^ 0-9])/,MACOSX_3:/(Darwin 10.3|Mac OS X 10.3)/,MACOSX_4:/(Darwin 10.4|Mac OS X 10.4)/,MACOSX_5:/(Mac OS X 10.5)/,MACOSX_6:/(Mac OS X 10.6)/,MACOSX_7:/(Mac OS X 10.7)/,MACOSX_8:/(Mac OS X 10.8)/,MACOSX_9:/(Mac OS X 10.9)/,MACOSX_10:/(Mac OS X 10.10)/,MACOSX_11:/(Mac OS X 10.11)/,MACOSX_12:/(Mac OS X 10.12)/,MACOSX_13:/(Mac OS X 10.13)/,MACOSX_14:/(Mac OS X 10.14)/,MACOSX_15:/(Mac OS X 10.15)/,MACOSX_16:/(Mac OS X 10.16)/,MACOSX_11_0:{or:[/11_0 like Mac OS X/,/Mac OS X 11/]},iOS:/(iPhone OS\s*[0-9_]+)/,ANDROID_9:/(Android 9)/},BN={CHROME:[/\bChrome\/([\d\.]+)\b/,/\bCriOS\/([\d\.]+)\b/,/\bHeadlessChrome\/([\d\.]+)\b/],FIREFOX:[/\bFirefox\/([\d\.]+)\b/,/\bFxiOS\/([\d\.]+)\b/],SAFARI:[/\bVersion\/([\d\.]+)\b/,/\bSafari\/([\d\.]+)\b/],OPERA:[/\bVersion\/([\d\.]+)\b/,/\bOPR\/([\d\.]+)\b/],IE:[/\bMSIE ([\d\.]+\w?)\b/,/\brv:([\d\.]+\w?)\b/],MS_EDGE:/\bEdg(?:e|A|iOS)\/([\d\.]+)\b/,MS_EDGE_CHROMIUM:/\bEdg\/([\d\.]+)\b/,SAMSUNG:/\bSamsungBrowser\/([\d\.]+)\b/,UCBROWSER:/\bUCBrowser\/([\d\.]+)\b/},g2e=Object.keys(LN).reduce((t,i)=>(t[i]=LN[i],t),{}),KH=Object.keys(BN).reduce((t,i)=>(t[jN[i]]=BN[i],t),{}),vd=Object.freeze({__proto__:null,GENERAL:i_,BROWSERS:jN,MOBILES_RE:OM,TABLETS_RE:n_,DEVICES:Up,DESKTOP_DEVICES:QH,OS:p2e,OS_VERSIONS:u2e,OS_RE:YH,BROWSERS_RE:h2e,DEVICES_RE:f2e,OS_VERSIONS_RE_MAP:LN,BROWSER_VERSIONS_RE_MAP:BN,OS_VERSIONS_RE:g2e,BROWSER_VERSIONS_RE:KH}),VN=class{constructor(){}test(i,e){return typeof e=="string"&&(e=new RegExp(e)),e instanceof RegExp?e.test(i):e&&Array.isArray(e.and)?e.and.every(n=>this.test(i,n)):e&&Array.isArray(e.or)?e.or.some(n=>this.test(i,n)):e&&e.not?!this.test(i,e.not):!1}exec(i,e){return typeof e=="string"&&(e=new RegExp(e)),e instanceof RegExp?e.exec(i):e&&Array.isArray(e)?e.reduce((n,o)=>n||this.exec(i,o),null):null}},rC=(function(t){return t.Mobile="mobile",t.Tablet="tablet",t.Desktop="desktop",t.Unknown="unknown",t})(rC||{}),zN=(function(t){return t.Portrait="portrait",t.Landscape="landscape",t})(zN||{}),FN="iPad",NM=(()=>{class t{constructor(e){this.platformId=e,this.ua="",this.userAgent="",this.os="",this.browser="",this.device="",this.os_version="",this.browser_version="",this.reTree=new VN,this.deviceType="",this.orientation="",Rs(this.platformId)&&typeof window<"u"&&(this.userAgent=window.navigator.userAgent),this.setDeviceInfo(this.userAgent)}setDeviceInfo(e=this.userAgent){e!==this.userAgent&&(this.userAgent=e);let n=[{const:"OS",prop:"os"},{const:"BROWSERS",prop:"browser"},{const:"DEVICES",prop:"device"},{const:"OS_VERSIONS",prop:"os_version"}];if(n.forEach(o=>{this[o.prop]=Object.keys(vd[o.const]).reduce((r,a)=>vd[o.const][a]==="device"&&Rs(this.platformId)&&(this.reTree.test(this.userAgent,n_[FN])||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)?(r[vd[o.const][a]]=FN,Object):(r[vd[o.const][a]]=this.reTree.test(e,vd[`${o.const}_RE`][a]),r),{})}),n.forEach(o=>{this[o.prop]=Object.keys(vd[o.const]).map(r=>vd[o.const][r]).reduce((r,a)=>o.prop==="device"&&r===vd[o.const].ANDROID?this[o.prop][a]?a:r:r===vd[o.const].UNKNOWN&&this[o.prop][a]?a:r,vd[o.const].UNKNOWN)}),this.browser_version="0",this.browser!==jN.UNKNOWN){let o=KH[this.browser],r=this.reTree.exec(e,o);r&&(this.browser_version=r[1])}typeof window<"u"&&window.matchMedia?this.orientation=window.matchMedia("(orientation: landscape)").matches?zN.Landscape:zN.Portrait:this.orientation=i_.UKNOWN,this.deviceType=this.isTablet()?rC.Tablet:this.isMobile(this.userAgent)?rC.Mobile:this.isDesktop(this.userAgent)?rC.Desktop:rC.Unknown}getDeviceInfo(){return{userAgent:this.userAgent,os:this.os,browser:this.browser,device:this.device,os_version:this.os_version,browser_version:this.browser_version,deviceType:this.deviceType,orientation:this.orientation}}isMobile(e=this.userAgent){return this.isTablet(e)?!1:!!Object.keys(OM).find(o=>this.reTree.test(e,OM[o]))}isTablet(e=this.userAgent){return Rs(this.platformId)&&(this.reTree.test(this.userAgent,n_[FN])||typeof navigator<"u"&&navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)?!0:!!Object.keys(n_).find(o=>!!this.reTree.test(e,n_[o]))}isDesktop(e=this.userAgent){return this.device===Up.UNKNOWN&&(this.isMobile(e)||this.isTablet(e))?!1:QH.indexOf(this.device)>-1}}return t.\u0275fac=function(e){return new(e||t)(ge(wh))},t.\u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();var Gp=(()=>{class t{toasterService;deviceService;loginService;constructor(e,n,o){this.toasterService=e,this.deviceService=n,this.loginService=o}createHiddenIframe(e,n){let o=document.createElement("iframe");return o.src=n,o.id="hiddenIframe",o.style.display="none",e.appendChild(o),o}openUriUsingFirefox(e){var n=document.querySelector("#hiddenIframe");n||(n=this.createHiddenIframe(document.body,"about:blank"));try{n.contentWindow.location.href=e}catch(o){o.name==="NS_ERROR_UNKNOWN_PROTOCOL"&&this.toasterService.error("Protocol handler does not exist")}}async open(e){let n=this.deviceService.getDeviceInfo();console.log("Launching external protocol handler with "+n.browser+": "+e),n.browser==="Firefox"?this.openUriUsingFirefox(e):location.assign(e)}static \u0275fac=function(n){return new(n||t)(ge(fe),ge(NM),ge(Ml))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var JH=nl($N());function b2e(t,i){if(t&1){let e=j();s(0,"button",0),v("click",function(){D(e);let o=b();return P(o.openConsole(o.auxiliary=!0))}),s(1,"mat-icon"),d(2,"web_asset"),l(),s(3,"span"),d(4,"Auxiliary console"),l()()}}var o_=(()=>{class t{toasterService=f(fe);nodeService=f(wt);deviceService=f(NM);protocolHandlerService=f(Gp);vncConsoleService=f(_d);cd=f(K);controller=oe(void 0);node=oe(void 0);updatedNode=me(void 0);openConsole(e=!1){let n=this.node();n&&this.nodeService.getNode(this.controller(),n).subscribe(o=>{this.updatedNode.set(o),this.cd.markForCheck(),this.startConsole(e)})}startConsole(e){let n=this.updatedNode()||this.node();if(n)if(n.status!=="started")this.toasterService.error("This node must be started before a console can be opened");else{(n.console_host==="0.0.0.0"||n.console_host==="0:0:0:0:0:0:0:0"||n.console_host==="::")&&(n=tt(H({},n),{console_host:this.controller().host}),this.updatedNode.set(n));try{var o,r=n.console_host;if(JH.IPv6.isValid(r)&&(r=`[${r}]`),n.console_type==="telnet"){var a;if(e===!0){if(a=n.properties.aux,a===void 0){this.toasterService.error("Auxiliary console port is not set.");return}}else a=n.console;o=`gns3+telnet://${r}:${a}?name=${n.name}&project_id=${n.project_id}&node_id=${n.node_id}`}else if(n.console_type==="vnc"){this.vncConsoleService.openVncConsole(this.controller(),n);return}else if(n.console_type&&n.console_type.startsWith("spice"))o=`gns3+spice://${r}:${n.console}?name=${n.name}&project_id=${n.project_id}&node_id=${n.node_id}`;else{if(n.console_type&&n.console_type.startsWith("http"))return o=`${n.console_type}://${r}:${n.console}`,window.open(o);this.toasterService.error("Supported console types are: telnet, vnc, spice and spice+agent.");return}this.protocolHandlerService.open(o)}catch(c){this.toasterService.error(c)}}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-console-device-action-browser"]],inputs:{controller:[1,"controller"],node:[1,"node"]},decls:6,vars:1,consts:[["mat-menu-item","",3,"click"],["mat-menu-item",""]],template:function(n,o){if(n&1&&(s(0,"button",0),v("click",function(){return o.openConsole()}),s(1,"mat-icon"),d(2,"web_asset"),l(),s(3,"span"),d(4,"Console"),l()(),A(5,b2e,5,0,"button",1)),n&2){let r;u(5),O(((r=o.node())==null?null:r.node_type)==="docker"||((r=o.node())==null?null:r.node_type)==="dynamips"||((r=o.node())==null?null:r.node_type)==="qemu"?5:-1)}},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var FM=(()=>{class t{nodeService=f(wt);toasterService=f(fe);cdr=f(K);controller=oe(void 0);node=oe(void 0);isolate(){this.nodeService.isolate(this.controller(),this.node()).subscribe(e=>{},e=>{this.toasterService.error(e.error?.message||e.message||"Failed to isolate node"),this.cdr.markForCheck()})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-isolate-node-action"]],inputs:{controller:[1,"controller"],node:[1,"node"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.isolate()}),s(1,"mat-icon"),d(2,"gps_off"),l(),s(3,"span"),d(4,"Isolate"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var LM=(()=>{class t{nodeService=f(wt);toasterService=f(fe);controller=oe(void 0);node=oe(void 0);unisolate(){this.nodeService.unisolate(this.controller(),this.node()).subscribe(e=>{},e=>{this.toasterService.error(e.error?.message||e.message||"Failed to unisolate node")})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-unisolate-node-action"]],inputs:{controller:[1,"controller"],node:[1,"node"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.unisolate()}),s(1,"mat-icon"),d(2,"gps_not_fixed"),l(),s(3,"span"),d(4,"Un-isolate"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var BM=(()=>{class t{dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);formBuilder=f(jt);cd=f(K);controller;node;inputForm;name;constructor(){this.name="",this.inputForm=this.formBuilder.group({name:new re("",be.required)})}ngOnInit(){this.node&&(this.name=this.node.name,this.inputForm.get("name")?.setValue(this.node.name)),this.cd.markForCheck()}onSaveClick(){if(this.inputForm.valid){let e=this.inputForm.get("name")?.value;this.node.name=e,this.nodeService.updateNode(this.controller,this.node).subscribe({next:()=>{this.toasterService.success(`Node ${this.node.name} updated.`),this.onCancelClick()},error:n=>{let o=n.error?.message||n.message||"Failed to update node.";this.toasterService.error(o)}})}else this.toasterService.error("Fill all required fields.")}onCancelClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-change-hostname-dialog-component"]],decls:13,vars:2,consts:[[1,"change-hostname"],[1,"change-hostname__title"],[1,"change-hostname__form",3,"formGroup"],["appearance","fill",1,"change-hostname__field"],["matInput","","type","text","formControlName","name","placeholder","Name"],[1,"change-hostname__actions"],["mat-button","","color","accent",3,"click"],["mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"h1",1),d(2),l(),s(3,"form",2)(4,"mat-form-field",3)(5,"mat-label"),d(6,"Name"),l(),F(7,"input",4),l()(),s(8,"div",5)(9,"button",6),v("click",function(){return o.onCancelClick()}),d(10,"Cancel"),l(),s(11,"button",7),v("click",function(){return o.onSaveClick()}),d(12,"Apply"),l()()()),n&2&&(u(2),X("Change hostname for node ",o.name),u(),x("formGroup",o.inputForm))},dependencies:[Ce,$,le,we,Te,ke,lt,Me,Dt,ct,Ue,vt,mt,He,pt,bt],styles:[".change-hostname[_ngcontent-%COMP%]{padding:16px}.change-hostname__title[_ngcontent-%COMP%]{margin-bottom:16px;font-size:18px}.change-hostname__form[_ngcontent-%COMP%]{margin-bottom:24px}.change-hostname__field[_ngcontent-%COMP%]{width:100%}.change-hostname__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:8px}"],changeDetection:0})}return t})();var VM=(()=>{class t{dialog=f(Je);controller=oe(void 0);node=oe(void 0);changeHostname(){let n=this.dialog.open(BM,{autoFocus:!1,disableClose:!1}).componentInstance;n.controller=this.controller(),n.node=this.node()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-change-hostname-action"]],inputs:{controller:[1,"controller"],node:[1,"node"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.changeHostname()}),s(1,"mat-icon"),d(2,"edit"),l(),s(3,"span"),d(4,"Change hostname"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var zM=(()=>{class t{dialogRef=f(Pe);nodeService=f(wt);cd=f(K);controller;node;symbol;ngOnInit(){this.symbol=this.node.symbol,this.cd.markForCheck()}symbolChanged(e){this.symbol=e,this.cd.markForCheck()}onCloseClick(){this.dialogRef.close()}onSelectClick(){this.nodeService.updateSymbol(this.controller,this.node,this.symbol).subscribe(()=>{this.onCloseClick()})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-change-symbol-dialog"]],inputs:{controller:"controller",node:"node"},decls:9,vars:3,consts:[["mat-dialog-title",""],[1,"modal-form-container"],[3,"symbolChanged","controller","symbol"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1),l(),s(2,"div",1)(3,"app-symbols",2),v("symbolChanged",function(a){return o.symbolChanged(a)}),l()(),s(4,"div",3)(5,"button",4),v("click",function(){return o.onCloseClick()}),d(6,"Cancel"),l(),s(7,"button",5),v("click",function(){return o.onSelectClick()}),d(8,"Apply"),l()()),n&2&&(u(),X("Change symbol for node: ",o.node.name),u(2),x("controller",o.controller)("symbol",o.symbol))},dependencies:[Ce,Ve,Be,$,le,ap],styles:[".modal-form-container[_ngcontent-%COMP%]{padding:16px;overflow-y:auto;max-height:500px}.menu[_ngcontent-%COMP%]{display:flex;justify-content:space-between}.radio-selection[_ngcontent-%COMP%]{width:90%}.mat-radio-button[_ngcontent-%COMP%] ~ .mat-radio-button[_ngcontent-%COMP%]{margin-left:16px}.non-visible[_ngcontent-%COMP%]{display:none}.example-full-width[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();var jM=(()=>{class t{dialog=f(Je);dialogConfig=f(Ji);controller=oe(void 0);node=oe(void 0);changeSymbol(){let e=this.dialogConfig.openConfig("changeSymbol",{autoFocus:!1,disableClose:!1}),o=this.dialog.open(zM,e).componentInstance;o.controller=this.controller(),o.node=this.node()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-change-symbol-action"]],inputs:{controller:[1,"controller"],node:[1,"node"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.changeSymbol()}),s(1,"mat-icon"),d(2,"find_replace"),l(),s(3,"span"),d(4,"Change symbol"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var $M=(()=>{class t{nodeService=f(wt);nodesDataSource=f(ci);drawingService=f(Wi);drawingsDataSource=f(Vi);toasterService=f(fe);controller=oe(void 0);project=oe(void 0);drawings=oe([]);nodes=oe([]);duplicate(){for(let e of this.nodes())this.nodeService.duplicate(this.controller(),e).subscribe(n=>{this.nodesDataSource.add(n)},n=>{n.status===409?this.toasterService.error(`Shutdown ${e.name} before duplicating`):this.toasterService.error(`Cannot duplicate node ${e.name}: ${n.message||n}`)});for(let e of this.drawings())this.drawingService.duplicate(this.controller(),e.project_id,e).subscribe(n=>{this.drawingsDataSource.add(n)})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-duplicate-action"]],inputs:{controller:[1,"controller"],project:[1,"project"],drawings:[1,"drawings"],nodes:[1,"nodes"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.duplicate()}),s(1,"mat-icon"),d(2,"filter_none"),l(),s(3,"span"),d(4,"Duplicate"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var Ps=(()=>{class t{constructor(){}getCurveInterpolator(e){switch(e){case"basis":return Yb;case"catmullrom":return hh;case"monotone":return Kb;default:return hh}}convert(e){let n="";if(e.element instanceof da)n=`${e.element.stroke_dasharray==""?`<rect fill="${e.element.fill}" fill-opacity="${e.element.fill_opacity}" height="${e.element.height}" width="${e.element.width}" rx="${e.element.rx}" ry="${e.element.ry}" />`:`<rect fill="${e.element.fill}" fill-opacity="${e.element.fill_opacity}" height="${e.element.height}" width="${e.element.width}" stroke="${e.element.stroke}" stroke-width="${e.element.stroke_width}" stroke-dasharray="${e.element.stroke_dasharray}" rx="${e.element.rx}" ry="${e.element.ry}" />`}`;else if(e.element instanceof Gi)n=`${e.element.stroke_dasharray==""?`<ellipse fill="${e.element.fill}" fill-opacity="${e.element.fill_opacity}" cx="${e.element.cx}" cy="${e.element.cy}" rx="${e.element.rx}" ry="${e.element.ry}"/>`:`<ellipse fill="${e.element.fill}" fill-opacity="${e.element.fill_opacity}" cx="${e.element.cx}" cy="${e.element.cy}" rx="${e.element.rx}" ry="${e.element.ry}" stroke="${e.element.stroke}" stroke-width="${e.element.stroke_width}" stroke-dasharray="${e.element.stroke_dasharray}" />`}`;else if(e.element instanceof Js)n=`<line stroke="${e.element.stroke}" stroke-width="${e.element.stroke_width}" x1="${e.element.x1}" x2="${e.element.x2}" y1="${e.element.y1}" y2="${e.element.y2}" stroke-dasharray="${e.element.stroke_dasharray??"none"}" />`;else if(e.element instanceof wa){let o=e.element,r=o.points.map(m=>[m.x,m.y]);n=`<path d="${uh().curve(this.getCurveInterpolator(o.curve_type||"catmullrom"))(r)||""}" stroke="${o.stroke}" stroke-width="${o.stroke_width}" stroke-dasharray="${o.stroke_dasharray??"none"}" fill="none" data-curve-type="${o.curve_type??"catmullrom"}" data-arrow-start="${o.arrow_start}" data-arrow-end="${o.arrow_end}" />`}else if(e.element instanceof Es)n=`<text fill="${e.element.fill}" fill-opacity="1.0" font-family="${e.element.font_family}" font-size="${e.element.font_size}" font-weight="${e.element.font_weight}">${e.element.text}</text>`;else return"";return`<svg height="${e.element.height}" width="${e.element.width}">${n}</svg>`}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var r_=(()=>{class t{get(e){return+e.value>-360&&+e.value<=360?null:{negativeValue:!0}}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var HN=(t,i)=>i.value;function C2e(t,i){if(t&1){let e=j();s(0,"mat-form-field",3)(1,"mat-label"),d(2,"Fill color"),l(),s(3,"input",4),v("input",function(o){D(e);let r=b();return P(r.onFillChange(o.target.value))}),l()()}if(t&2){let e=b();u(3),x("value",e.element.fill)}}function x2e(t,i){if(t&1&&(s(0,"mat-option",7),d(1),l()),t&2){let e=i.$implicit;x("value",e.value),u(),X(" ",e.name," ")}}function y2e(t,i){if(t&1){let e=j();s(0,"mat-form-field",3)(1,"mat-label"),d(2,"Width"),l(),s(3,"input",12),v("input",function(o){D(e);let r=b();return P(r.onWidthChange(+o.target.value))}),l()()}if(t&2){let e=b();u(3),x("value",e.element.width)}}function S2e(t,i){if(t&1){let e=j();s(0,"mat-form-field",3)(1,"mat-label"),d(2,"Height"),l(),s(3,"input",12),v("input",function(o){D(e);let r=b();return P(r.onHeightChange(+o.target.value))}),l()()}if(t&2){let e=b();u(3),x("value",e.element.height)}}function w2e(t,i){if(t&1){let e=j();s(0,"mat-form-field",3)(1,"mat-label"),d(2,"Corner radius"),l(),s(3,"input",13),v("input",function(o){D(e);let r=b();return P(r.onRxChange(+o.target.value))}),l()()}if(t&2){let e=b();u(3),x("value",e.element.rx)}}function M2e(t,i){if(t&1&&(s(0,"mat-option",7),d(1),l()),t&2){let e=i.$implicit;x("value",e.value),u(),X(" ",e.name," ")}}function k2e(t,i){if(t&1&&(s(0,"mat-option",7),d(1),l()),t&2){let e=i.$implicit;x("value",e.value),u(),X(" ",e.name," ")}}function T2e(t,i){if(t&1){let e=j();s(0,"mat-form-field",3)(1,"mat-label"),d(2,"Curve type"),l(),s(3,"mat-select",6),v("selectionChange",function(o){D(e);let r=b();return P(r.onCurveTypeChange(o.value))}),J(4,M2e,2,2,"mat-option",7,HN),l()(),s(6,"mat-form-field",3)(7,"mat-label"),d(8,"Arrow direction"),l(),s(9,"mat-select",6),v("selectionChange",function(o){D(e);let r=b();return P(r.onArrowDirectionChange(o.value))}),J(10,k2e,2,2,"mat-option",7,HN),l()()}if(t&2){let e=b();u(3),x("value",e.element.curve_type),u(),ee(e.curveTypes),u(5),x("value",e.element.arrow_direction),u(),ee(e.arrowDirections)}}var HM=(()=>{class t{dialogRef=f(Pe);drawingToMapDrawingConverter=f(Mp);mapDrawingToSvgConverter=f(Ps);drawingService=f(Wi);drawingsDataSource=f(Vi);formBuilder=f(jt);toasterService=f(fe);nonNegativeValidator=f(Hl);rotationValidator=f(r_);qtDasharrayFixer=f(ud);cd=f(K);controller;project;drawing;element;formGroup;borderTypes=[{qt:"none",value:"none",name:"Solid"},{qt:"10, 2",value:"25, 25",name:"Dash"},{qt:"4, 2",value:"5, 25",name:"Dot"},{qt:"12, 3, 5, 3",value:"5, 25, 25",name:"Dash Dot"},{qt:"12, 3, 5, 3, 5, 3",value:"25, 25, 5, 25, 5",name:"Dash Dot Dot"},{qt:"",value:"",name:"No border"}];curveTypes=[{value:"catmullrom",name:"Catmull-Rom (Smooth)"},{value:"basis",name:"Basis (B-spline)"},{value:"monotone",name:"Monotone"}];arrowDirections=[{value:"none",name:"No Arrow"},{value:"end",name:"End Arrow"},{value:"start",name:"Start Arrow"},{value:"both",name:"Both Arrows"}];constructor(){this.formGroup=this.formBuilder.group({borderWidth:new re("",[be.required,this.nonNegativeValidator.get]),rotation:new re("",[be.required,this.rotationValidator.get])})}ngOnInit(){let e;this.element=new UN,this.drawing.element instanceof da||this.drawing.element instanceof Gi?(this.element.fill=this.drawing.element.fill,this.element.width=this.drawing.element.width,this.element.height=this.drawing.element.height,this.element.stroke=this.drawing.element.stroke,this.element.stroke_dasharray=this.drawing.element.stroke_dasharray==null&&this.drawing.element.stroke_width==null?"":this.drawing.element.stroke_dasharray??"none",this.element.stroke_width=this.drawing.element.stroke_width):this.drawing.element instanceof Js?(this.element.stroke=this.drawing.element.stroke,this.element.stroke_dasharray=this.drawing.element.stroke_dasharray==null&&this.drawing.element.stroke_width==null?"":this.drawing.element.stroke_dasharray??"none",this.element.stroke_width=this.drawing.element.stroke_width):this.drawing.element instanceof wa&&(this.element.stroke=this.drawing.element.stroke,this.element.stroke_dasharray=this.drawing.element.stroke_dasharray==null&&this.drawing.element.stroke_width==null?"":this.drawing.element.stroke_dasharray??"none",this.element.stroke_width=this.drawing.element.stroke_width,this.element.curve_type=this.drawing.element.curve_type||"catmullrom",this.drawing.element.arrow_start&&this.drawing.element.arrow_end?this.element.arrow_direction="both":this.drawing.element.arrow_start?this.element.arrow_direction="start":this.drawing.element.arrow_end?this.element.arrow_direction="end":this.element.arrow_direction="none"),this.drawing.element instanceof da&&(this.element.rx=this.drawing.element.rx,this.element.ry=this.drawing.element.ry),this.element.stroke_width===void 0&&(this.element.stroke_width=0),this.formGroup.controls.borderWidth.setValue(this.element.stroke_width),this.formGroup.controls.rotation.setValue(this.drawing.rotation)}onFillChange(e){this.element.fill=e,this.cd.markForCheck()}onStrokeChange(e){this.element.stroke=e,this.cd.markForCheck()}onStrokeDasharrayChange(e){this.element.stroke_dasharray=e,this.cd.markForCheck()}onWidthChange(e){this.element.width=e,this.cd.markForCheck()}onHeightChange(e){this.element.height=e,this.cd.markForCheck()}onRxChange(e){this.element.rx=e,this.cd.markForCheck()}onCurveTypeChange(e){this.element.curve_type=e,this.cd.markForCheck()}onArrowDirectionChange(e){this.element.arrow_direction=e,this.cd.markForCheck()}onNoClick(){this.dialogRef.close()}onYesClick(){if(this.formGroup.valid){this.element.stroke_dasharray==""?this.element.stroke_width=0:this.element.stroke_width=this.formGroup.get("borderWidth").value===0?2:this.formGroup.get("borderWidth").value,this.drawing.rotation=this.formGroup.get("rotation").value,this.drawing.element instanceof da||this.drawing.element instanceof Gi?(this.drawing.element.fill=this.element.fill,this.drawing.element.width=this.element.width,this.drawing.element.height=this.element.height,this.drawing.element.stroke=this.element.stroke??"#000000",this.drawing.element.stroke_dasharray=this.element.stroke_dasharray,this.drawing.element.stroke_width=this.element.stroke_width):this.drawing.element instanceof Js?(this.element.stroke_dasharray!=""?(this.drawing.element.stroke=this.element.stroke??"#000000",this.drawing.element.stroke_dasharray=this.element.stroke_dasharray===""?"none":this.element.stroke_dasharray,this.drawing.element.stroke_width=this.element.stroke_width===0?2:this.element.stroke_width):this.toasterService.warning("No border style line element not supported"),this.drawing.element.stroke=this.element.stroke,this.drawing.element.stroke_dasharray=this.element.stroke_dasharray,this.drawing.element.stroke_width=this.element.stroke_width===0?2:this.element.stroke_width):this.drawing.element instanceof wa&&(this.drawing.element.stroke=this.element.stroke??"#000000",this.drawing.element.stroke_dasharray=this.element.stroke_dasharray===""?"none":this.element.stroke_dasharray,this.drawing.element.stroke_width=this.element.stroke_width===0?2:this.element.stroke_width,this.drawing.element.curve_type=this.element.curve_type||"catmullrom",this.drawing.element.arrow_start=this.element.arrow_direction==="start"||this.element.arrow_direction==="both",this.drawing.element.arrow_end=this.element.arrow_direction==="end"||this.element.arrow_direction==="both"),this.drawing.element instanceof da?(this.drawing.element.rx=this.element.rx,this.drawing.element.ry=this.element.rx):this.drawing.element instanceof Gi&&(this.drawing.element.rx=this.element.width/2,this.drawing.element.ry=this.element.height/2);let e=this.drawingToMapDrawingConverter.convert(this.drawing);e.element=this.drawing.element,this.drawing.svg=this.mapDrawingToSvgConverter.convert(e),this.drawingService.update(this.controller,this.drawing).subscribe(n=>{this.drawingsDataSource.update(n),this.dialogRef.close()})}else this.toasterService.error("Entered data is incorrect")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-style-editor"]],decls:32,vars:8,consts:[["mat-dialog-title",""],[1,"modal-form-container"],[3,"formGroup"],[1,"form-field"],["matInput","","type","color",3,"input","value"],["matInput","","formControlName","borderWidth","type","number","min","0","max","100"],[3,"selectionChange","value"],[3,"value"],["matInput","","formControlName","rotation","type","number"],["mat-dialog-actions","","align","end"],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],["matInput","","min","0","type","number",3,"input","value"],["matInput","","type","number","min","0","max","100",3,"input","value"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Style editor"),l(),s(2,"div",1)(3,"form",2),A(4,C2e,4,1,"mat-form-field",3),s(5,"mat-form-field",3)(6,"mat-label"),d(7,"Border color"),l(),s(8,"input",4),v("input",function(a){return o.onStrokeChange(a.target.value)}),l()(),s(9,"mat-form-field",3)(10,"mat-label"),d(11,"Border width"),l(),F(12,"input",5),l(),s(13,"mat-form-field",3)(14,"mat-label"),d(15,"Border style"),l(),s(16,"mat-select",6),v("selectionChange",function(a){return o.onStrokeDasharrayChange(a.value)}),J(17,x2e,2,2,"mat-option",7,HN),l()(),A(19,y2e,4,1,"mat-form-field",3),A(20,S2e,4,1,"mat-form-field",3),A(21,w2e,4,1,"mat-form-field",3),A(22,T2e,12,2),s(23,"mat-form-field",3)(24,"mat-label"),d(25,"Rotation"),l(),F(26,"input",8),l()()(),s(27,"div",9)(28,"button",10),v("click",function(){return o.onNoClick()}),d(29,"Cancel"),l(),s(30,"button",11),v("click",function(){return o.onYesClick()}),d(31,"Apply"),l()()),n&2&&(u(3),x("formGroup",o.formGroup),u(),O(o.element.fill!==void 0?4:-1),u(4),x("value",o.element.stroke),u(8),x("value",o.element.stroke_dasharray),u(),ee(o.borderTypes),u(2),O(o.element.width!==void 0?19:-1),u(),O(o.element.height!==void 0?20:-1),u(),O(o.element.rx!==void 0?21:-1),u(),O(o.element.curve_type!==void 0?22:-1))},dependencies:[Z,ct,Ue,vt,xi,mt,He,Ro,Sc,pt,bt,Ce,Ve,Be,Me,ke,lt,we,Te,Mt,At,St,Jo,$,le],styles:[".item[_ngcontent-%COMP%]{height:16px;font-size:12px;margin-bottom:8px}.item-name[_ngcontent-%COMP%]{margin-bottom:8px}.item-value[_ngcontent-%COMP%]{width:100%;margin-bottom:8px}.input-color[_ngcontent-%COMP%]{padding:0;border-width:0px;width:100%;background-color:transparent;outline:none}input[_ngcontent-%COMP%]:focus{outline:none}input[type=color][_ngcontent-%COMP%]{-webkit-appearance:none;border:none;height:16px}input[type=color][_ngcontent-%COMP%]::-webkit-color-swatch-wrapper{padding:0}input[type=color][_ngcontent-%COMP%]::-webkit-color-swatch{border:none}.modal-form-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding:16px}.modal-form-container[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{width:100%}.form-field[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})(),UN=class{fill;width;height;stroke;stroke_width;stroke_dasharray;rx;ry;curve_type;arrow_direction};function E2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.editStyle())}),s(1,"mat-icon"),d(2,"style"),l(),s(3,"span"),d(4,"Edit style"),l()()}}var UM=(()=>{class t{dialog=f(Je);controller=oe(void 0);project=oe(void 0);drawing=oe(void 0);isImageDrawing=!1;constructor(){}ngOnChanges(){let e=this.drawing();this.isImageDrawing=e?.element instanceof Bp}editStyle(){let n=this.dialog.open(HM,{panelClass:["base-dialog-panel","simple-dialog-panel","edit-style-action-dialog-panel"],autoFocus:!1,disableClose:!1}).componentInstance;n.controller=this.controller(),n.project=this.project(),n.drawing=this.drawing()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-edit-style-action"]],inputs:{controller:[1,"controller"],project:[1,"project"],drawing:[1,"drawing"]},features:[un],decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&A(0,E2e,5,0,"button",0),n&2&&O(!o.isImageDrawing&&o.drawing()?0:-1)},dependencies:[Ce,Qe,ot,te,se],encapsulation:2,changeDetection:0})}return t})();var D2e=["textArea"],GM=(()=>{class t{textArea=Ut("textArea");dialogRef=f(Pe);drawingToMapDrawingConverter=f(Mp);mapDrawingToSvgConverter=f(Ps);drawingService=f(Wi);drawingsDataSource=f(Vi);renderer=f(ii);nodeService=f(wt);nodesDataSource=f(ci);linkService=f(to);linksDataSource=f(dr);formBuilder=f(jt);toasterService=f(fe);rotationValidator=f(r_);fontFixer=f(ca);cdr=f(K);controller;project;drawing;node;label;link;linkNode;element;rotation;isTextEditable;formGroup;constructor(){}ngOnInit(){this.formGroup=this.formBuilder.group({rotation:new re("",[be.required,this.rotationValidator.get])}),this.label&&this.node?(this.isTextEditable=!1,this.rotation=this.label.rotation.toString(),this.element=this.getTextElementFromLabel()):this.linkNode&&this.link?(this.isTextEditable=!0,this.label=this.link.nodes.find(o=>o.node_id===this.linkNode.node_id).label,this.rotation=this.label.rotation.toString(),this.element=this.getTextElementFromLabel()):this.drawing&&(this.isTextEditable=!0,this.rotation=this.drawing.rotation.toString(),this.element=this.drawing.element);let e={font_family:this.element.font_family,font_size:this.element.font_size,font_weight:this.element.font_weight};e=this.fontFixer.fix(e),this.formGroup.controls.rotation.setValue(this.rotation);let n=this.textArea();this.renderer.setStyle(n.nativeElement,"color",this.element.fill),this.renderer.setStyle(n.nativeElement,"font-family",e.font_family),this.renderer.setStyle(n.nativeElement,"font-size",`${e.font_size}pt`),this.renderer.setStyle(n.nativeElement,"font-weight",e.font_weight)}getTextElementFromLabel(){var e=[],n=new Es;for(var o of this.label.style.split(";"))e.push({property:o.split(": ")[0],value:o.split(": ")[1]});return n.text=this.label.text?this.label.text:"",n.font_family=e.find(r=>r.property==="font-family")?e.find(r=>r.property==="font-family").value:"TypeWriter",n.font_size=e.find(r=>r.property==="font-size")?+e.find(r=>r.property==="font-size").value:10,n.font_weight=e.find(r=>r.property==="font-weight")?e.find(r=>r.property==="font-weight").value:"normal",n.fill=e.find(r=>r.property==="fill")?e.find(r=>r.property==="fill").value:"#000000",n.fill_opacity=e.find(r=>r.property==="fill-opacity")?+e.find(r=>r.property==="fill-opacity").value:1,n}getStyleFromTextElement(){return`font-family: ${this.element.font_family};font-size: ${this.element.font_size};font-weight: ${this.element.font_weight};fill: ${this.element.fill};fill-opacity: ${this.element.fill_opacity};`}onNoClick(){this.dialogRef.close()}onYesClick(){if(this.formGroup.valid){if(this.rotation=this.formGroup.get("rotation").value,this.label&&this.node)this.node.label.style=this.getStyleFromTextElement(),this.node.label.rotation=+this.rotation,this.nodeService.updateLabel(this.controller,this.node,this.node.label).subscribe(e=>{this.nodesDataSource.update(e),this.dialogRef.close()});else if(this.linkNode&&this.link)this.label.style=this.getStyleFromTextElement(),this.label.rotation=+this.rotation,this.label.text=this.element.text,this.linkService.updateLink(this.controller,this.link).subscribe(e=>{this.linksDataSource.update(e),this.dialogRef.close()});else if(this.drawing){this.drawing.rotation=+this.rotation,this.drawing.element=this.element;let e=this.drawingToMapDrawingConverter.convert(this.drawing);e.element=this.drawing.element,this.drawing.svg=this.mapDrawingToSvgConverter.convert(e),this.drawingService.update(this.controller,this.drawing).subscribe(n=>{this.drawingsDataSource.update(n),this.dialogRef.close()})}}else this.toasterService.error("Entered data is incorrect")}changeTextColor(e){this.element.fill=e,this.renderer.setStyle(this.textArea().nativeElement,"color",e),this.cdr.markForCheck()}onTextChange(e){this.element.text=e,this.cdr.markForCheck()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-text-editor"]],viewQuery:function(n,o){n&1&&tn(o.textArea,D2e,5),n&2&&nn()},decls:19,vars:4,consts:[["textArea",""],["mat-dialog-title",""],[1,"modal-form-container"],[1,"form-field"],["matInput","","type","color",3,"input","value"],[3,"formGroup"],["formControlName","rotation","matInput","","type","text"],["id","textArea",1,"text",3,"input","value","readonly"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",1),d(1,"Text editor"),l(),s(2,"div",2)(3,"mat-form-field",3)(4,"mat-label"),d(5,"Fill color"),l(),s(6,"input",4),v("input",function(a){return o.changeTextColor(a.target.value)}),l()(),s(7,"form",5)(8,"mat-form-field",3)(9,"mat-label"),d(10,"Rotation"),l(),F(11,"input",6),l()(),s(12,"textarea",7,0),v("input",function(a){return o.onTextChange(a.target.value)}),l()(),s(14,"div",8)(15,"button",9),v("click",function(){return o.onNoClick()}),d(16,"Cancel"),l(),s(17,"button",10),v("click",function(){return o.onYesClick()}),d(18,"Apply"),l()()),n&2&&(u(6),x("value",o.element.fill),u(),x("formGroup",o.formGroup),u(5),x("value",o.element.text)("readonly",!o.isTextEditable))},dependencies:[Z,ct,Ue,vt,mt,He,pt,bt,Ce,Ve,Be,Me,ke,lt,we,Te,$,le],styles:[".item[_ngcontent-%COMP%]{height:16px;font-size:12px;margin-bottom:8px}.item-name[_ngcontent-%COMP%]{margin-bottom:8px}.item-value[_ngcontent-%COMP%]{width:100%;margin-bottom:8px}.input-color[_ngcontent-%COMP%]{padding:0;border-width:0px;width:100%;background-color:transparent;outline:none}input[_ngcontent-%COMP%]:focus{outline:none}input[type=color][_ngcontent-%COMP%]{-webkit-appearance:none;border:none;height:16px}input[type=color][_ngcontent-%COMP%]::-webkit-color-swatch-wrapper{padding:0}input[type=color][_ngcontent-%COMP%]::-webkit-color-swatch{border:none}.text[_ngcontent-%COMP%]{width:100%;height:150px}.modal-form-container[_ngcontent-%COMP%]{display:flex;flex-direction:column}.modal-form-container[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{width:100%}.form-field[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();var WM=(()=>{class t{dialog=f(Je);controller=oe(void 0);project=oe(void 0);drawing=oe(void 0);node=oe(void 0);label=oe(void 0);link=oe(void 0);linkNode=oe(void 0);editText(){let n=this.dialog.open(GM,{panelClass:["base-dialog-panel","edit-text-action-dialog-panel"],autoFocus:!1,disableClose:!1}).componentInstance;n.controller=this.controller(),n.project=this.project(),n.drawing=this.drawing(),n.node=this.node(),n.label=this.label(),n.link=this.link(),n.linkNode=this.linkNode()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-edit-text-action"]],inputs:{controller:[1,"controller"],project:[1,"project"],drawing:[1,"drawing"],node:[1,"node"],label:[1,"label"],link:[1,"link"],linkNode:[1,"linkNode"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.editText()}),s(1,"mat-icon"),d(2,"text_format"),l(),s(3,"span"),d(4,"Edit text"),l()())},dependencies:[Ce,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function P2e(t,i){if(t&1){let e=j();s(0,"div",2)(1,"textarea",6,0),v("input",function(o){D(e);let r=b();return P(r.onConfigChange(o.target.value))}),l()()}if(t&2){let e=b();u(),x("value",e.config())}}function I2e(t,i){if(t&1){let e=j();s(0,"mat-tab-group")(1,"mat-tab",7)(2,"textarea",8,0),v("input",function(o){D(e);let r=b();return P(r.onConfigChange(o.target.value))}),l()(),s(4,"mat-tab",9)(5,"textarea",8,0),v("input",function(o){D(e);let r=b();return P(r.onPrivateConfigChange(o.target.value))}),l()()()}if(t&2){let e=b();u(2),x("value",e.config()),u(3),x("value",e.privateConfig())}}var qM=(()=>{class t{dialogRef=f(Pe);nodeService=f(wt);toasterService=f(fe);cdr=f(K);controller;project;node;config=ae("");privateConfig=ae("");ngOnInit(){this.nodeService.getStartupConfiguration(this.controller,this.node).subscribe(e=>{this.config.set(e),this.cdr.markForCheck()}),(this.node.node_type==="iou"||this.node.node_type==="dynamips")&&this.nodeService.getPrivateConfiguration(this.controller,this.node).subscribe(e=>{this.privateConfig.set(e),this.cdr.markForCheck()})}onConfigChange(e){this.config.set(e),this.cdr.markForCheck()}onPrivateConfigChange(e){this.privateConfig.set(e),this.cdr.markForCheck()}onSaveClick(){this.nodeService.saveConfiguration(this.controller,this.node,this.config()).subscribe(e=>{this.node.node_type==="iou"||this.node.node_type==="dynamips"?this.nodeService.savePrivateConfiguration(this.controller,this.node,this.privateConfig()).subscribe(n=>{this.dialogRef.close(),this.toasterService.success(`Configuration for node ${this.node.name} saved.`)}):(this.dialogRef.close(),this.toasterService.success(`Configuration for node ${this.node.name} saved.`))})}onCancelClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-config-editor"]],inputs:{config:[1,"config"],privateConfig:[1,"privateConfig"]},outputs:{config:"configChange",privateConfig:"privateConfigChange"},decls:9,vars:3,consts:[["textArea",""],["mat-dialog-title",""],[1,"modal-form-container"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],["id","textArea",1,"textArea",3,"input","value"],["label","Startup config"],["id","textArea",1,"textAreaTab",3,"input","value"],["label","Private config"]],template:function(n,o){n&1&&(s(0,"h1",1),d(1),l(),A(2,P2e,3,1,"div",2),A(3,I2e,7,2,"mat-tab-group"),s(4,"div",3)(5,"button",4),v("click",function(){return o.onCancelClick()}),d(6,"Cancel"),l(),s(7,"button",5),v("click",function(){return o.onSaveClick()}),d(8,"Apply"),l()()),n&2&&(u(),X("Configuration for node ",o.node.name),u(),O(o.node.node_type==="vpcs"?2:-1),u(),O(o.node.node_type==="iou"||o.node.node_type==="dynamips"?3:-1))},dependencies:[Ce,Ve,Be,$,le,Si],styles:[".textArea[_ngcontent-%COMP%]{width:100%;height:350px}.textAreaTab[_ngcontent-%COMP%]{width:100%;height:300px}"],changeDetection:0})}return t})();function A2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.editConfig())}),s(1,"mat-icon"),d(2,"settings"),l(),s(3,"span"),d(4,"Edit config"),l()()}}var XM=(()=>{class t{dialog=f(Je);controller=oe(void 0);project=oe(void 0);node=oe(void 0);editConfig(){let n=this.dialog.open(qM,{panelClass:["base-dialog-panel","edit-config-action-dialog-panel"],autoFocus:!1,disableClose:!1}).componentInstance;n.controller=this.controller(),n.project=this.project(),n.node=this.node()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-edit-config-action"]],inputs:{controller:[1,"controller"],project:[1,"project"],node:[1,"node"]},decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){if(n&1&&A(0,A2e,5,0,"button",0),n&2){let r;O(((r=o.node())==null?null:r.node_type)==="vpcs"||((r=o.node())==null?null:r.node_type)==="iou"||((r=o.node())==null?null:r.node_type)==="dynamips"?0:-1)}},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var a_=(()=>{class t{dialogRef=f(Pe);close(e){this.dialogRef.close(e)}onClose(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-config-dialog"]],decls:11,vars:0,consts:[["mat-dialog-title",""],["mat-dialog-content",""],[1,"config-options"],["mat-raised-button","","color","primary",3,"click"],["mat-dialog-actions","","align","end"],["mat-button","","color","accent",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Choose configuration file"),l(),s(2,"div",1)(3,"div",2)(4,"button",3),v("click",function(){return o.close("startup-config")}),d(5,"Startup configuration"),l(),s(6,"button",3),v("click",function(){return o.close("private-config")}),d(7,"Private configuration"),l()()(),s(8,"div",4)(9,"button",5),v("click",function(){return o.onClose()}),d(10,"Cancel"),l()())},dependencies:[Ce,Ve,Be,Wt,$,le],styles:[".config-options[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;padding:8px 0}"],changeDetection:0})}return t})();function O2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.exportConfig())}),s(1,"mat-icon"),d(2,"call_made"),l(),s(3,"span"),d(4,"Export config"),l()()}}var QM=(()=>{class t{nodeService=f(wt);dialog=f(Je);toasterService=f(fe);controller=oe(void 0);node=oe(void 0);exportConfig(){let e=this.node();if(e.node_type==="vpcs")this.nodeService.getStartupConfiguration(this.controller(),e).subscribe({next:n=>{this.downloadByHtmlTag(n)},error:n=>{this.toasterService.error(n.error?.message||n.message||"Failed to export configuration")}});else{let n=this.dialog.open(a_,{panelClass:["base-dialog-panel","export-config-action-dialog-panel"],autoFocus:!1,disableClose:!1}),o=n.componentInstance;n.afterClosed().subscribe(r=>{r==="startup-config"?this.nodeService.getStartupConfiguration(this.controller(),this.node()).subscribe({next:a=>{this.downloadByHtmlTag(a)},error:a=>{this.toasterService.error(a.error?.message||a.message||"Failed to export startup configuration")}}):r==="private-config"&&this.nodeService.getPrivateConfiguration(this.controller(),this.node()).subscribe({next:a=>{this.downloadByHtmlTag(a)},error:a=>{this.toasterService.error(a.error?.message||a.message||"Failed to export private configuration")}})})}}downloadByHtmlTag(e){let n=document.createElement("a");n.setAttribute("href",`data:text/plain;charset=utf-8,${encodeURIComponent(e)}`);let r=this.node();r.node_type==="vpcs"?n.setAttribute("download",`${r.name}_startup.vpc`):(r.node_type==="iou"||r.node_type==="dynamips")&&n.setAttribute("download",`${r.name}_startup.cfg`);var a=new MouseEvent("click");n.dispatchEvent(a)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-export-config-action"]],inputs:{controller:[1,"controller"],node:[1,"node"]},decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){if(n&1&&A(0,O2e,5,0,"button",0),n&2){let r;O(((r=o.node())==null?null:r.node_type)==="vpcs"||((r=o.node())==null?null:r.node_type)==="dynamips"||((r=o.node())==null?null:r.node_type)==="iou"?0:-1)}},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var N2e=["fileInput"],YM=(()=>{class t{nodeService=f(wt);toasterService=f(fe);dialog=f(Je);cdr=f(K);controller=oe(void 0);node=oe(void 0);fileInput=Ut("fileInput");configType;triggerClick(){if(this.fileInput().nativeElement.value="",this.node().node_type!=="vpcs"){let e=this.dialog.open(a_,{panelClass:["base-dialog-panel","import-config-action-dialog-panel"],autoFocus:!1,disableClose:!1}),n=e.componentInstance;e.afterClosed().subscribe(o=>{this.configType=o,this.cdr.markForCheck(),this.fileInput().nativeElement.click()})}else this.configType="startup-config",this.fileInput().nativeElement.click()}importConfig(e){let n=e.target.files[0],o=new FileReader;o.onload=r=>{let a=o.result;typeof a!="string"&&(a=a.toString()),this.configType==="startup-config"?this.nodeService.saveConfiguration(this.controller(),this.node(),a).subscribe({next:()=>{this.toasterService.success(`Configuration for node ${this.node().name} imported.`),this.cdr.markForCheck()},error:c=>{this.toasterService.error(c.error?.message||c.message||"Failed to import startup configuration"),this.cdr.markForCheck()}}):this.configType==="private-config"?this.nodeService.savePrivateConfiguration(this.controller(),this.node(),a).subscribe({next:()=>{this.toasterService.success(`Configuration for node ${this.node().name} imported.`),this.cdr.markForCheck()},error:c=>{this.toasterService.error(c.error?.message||c.message||"Failed to import private configuration"),this.cdr.markForCheck()}}):this.toasterService.error("No configuration type selected")},o.readAsText(n)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-import-config-action"]],viewQuery:function(n,o){n&1&&tn(o.fileInput,N2e,5),n&2&&nn()},inputs:{controller:[1,"controller"],node:[1,"node"]},decls:7,vars:0,consts:[["fileInput",""],["type","file","accept",".txt, .vpc, .cfg",1,"non-visible",3,"change"],["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"input",1,0),v("change",function(a){return o.importConfig(a)}),l(),s(2,"button",2),v("click",function(){return o.triggerClick()}),s(3,"mat-icon"),d(4,"call_received"),l(),s(5,"span"),d(6,"Import config"),l()())},dependencies:[$,te,se,Qe,ot],styles:[".non-visible[_ngcontent-%COMP%]{display:none}"],changeDetection:0})}return t})();var R2e=(t,i)=>i.key;function F2e(t,i){t&1&&(s(0,"div")(1,"h6",3),d(2,"Computing Idle-PC values, please wait..."),l(),s(3,"div",4),F(4,"mat-spinner",5),l()())}function L2e(t,i){if(t&1&&(s(0,"mat-option",9),d(1),l()),t&2){let e=i.$implicit;x("value",e.key),u(),X(" ",e.name," ")}}function B2e(t,i){if(t&1){let e=j();s(0,"h1",6),d(1,"Choose an Idle-PC value"),l(),s(2,"mat-form-field",7)(3,"mat-select",8),v("selectionChange",function(o){D(e);let r=b();return P(r.idlePC.set(o.value))}),J(4,L2e,2,2,"mat-option",9,R2e),l()()}if(t&2){let e=b();u(3),x("value",e.idlePC())("matTooltip",e.getTooltip()),u(),ee(e.idlepcs)}}function V2e(t,i){if(t&1){let e=j();s(0,"button",2),v("click",function(){D(e);let o=b();return P(o.onCompute())}),d(1,"Compute"),l()}}function z2e(t,i){if(t&1){let e=j();s(0,"button",2),v("click",function(){D(e);let o=b();return P(o.onApply())}),d(1,"Apply"),l()}}var KM=(()=>{class t{nodeService=f(wt);dialogRef=f(Pe);toasterService=f(fe);cd=f(K);controller;node;idlepcs=[];idlePC=ae("");isComputing=!1;ngOnInit(){this.onCompute()}getTooltip(){return`Best Idle-PC values are obtained when IOS is in idle state, after the 'Press RETURN to get started' message has appeared on the console, messages have finished displaying on the console and you have have actually pressed the RETURN key.
|
||
|
||
Finding the right idle-pc value is a trial and error process, consisting of applying different Idle-PC values and monitoring the CPU usage.
|
||
|
||
Select each value that appears in the list and click Apply, and note the CPU usage a few moments later. When you have found the value that minimises the CPU usage, apply that value.`}onCompute(){this.isComputing=!0,this.nodeService.getIdlePCProposals(this.controller,this.node).subscribe(e=>{let n=[];for(let o of e){let r=o.match(/^(0x[0-9a-f]{8})\s+\[(\d+)\]$/);if(r){let a=r[1],c=parseInt(r[2],10);50<=c&&c<=60&&(o+="*"),n.push({key:a,name:o})}}this.idlepcs=n,this.idlepcs.length>0&&this.idlePC.set(this.idlepcs[0].key),this.isComputing=!1,this.cd.markForCheck()})}onClose(){this.dialogRef.close()}onApply(){this.idlePC()&&this.idlePC()!=="0x0"&&(this.node.properties.idlepc=this.idlePC(),this.nodeService.updateNode(this.controller,this.node).subscribe(()=>{this.toasterService.success(`Node ${this.node.name} updated with idle-PC value ${this.idlePC()}`),this.cd.markForCheck()}))}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-idle-pc-dialog"]],inputs:{controller:"controller",node:"node",idlePC:[1,"idlePC"]},outputs:{idlePC:"idlePCChange"},decls:7,vars:4,consts:[["mat-dialog-actions",""],["mat-button","","color","accent"],["mat-button","","color","accent",3,"click"],["align","center"],["mat-dialog-content","","align","center"],["color","accent"],["mat-dialog-title",""],[1,"form-field"],["placeholder","Idle-PC","matTooltipClass","multiline-tooltip",3,"selectionChange","value","matTooltip"],[3,"value"]],template:function(n,o){n&1&&(A(0,F2e,5,0,"div"),A(1,B2e,6,2),s(2,"div",0),A(3,V2e,2,0,"button",1),A(4,z2e,2,0,"button",1),s(5,"button",2),v("click",function(){return o.onClose()}),d(6,"Close"),l()()),n&2&&(O(o.isComputing?0:-1),u(),O(o.isComputing?-1:1),u(2),O(o.isComputing?-1:3),u(),O(o.isComputing?-1:4))},dependencies:[Ce,Ve,Be,Wt,$,le,Si,Xo,we,ke,go,Mt,At,St,nt],styles:[".container[_ngcontent-%COMP%]{width:100%;display:flex;justify-content:space-between}.multiline-tooltip[_ngcontent-%COMP%]{background-color:var(--mat-app-surface);color:var(--mat-app-on-surface-color);white-space:pre-line}"],changeDetection:0})}return t})();function j2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.idlePC())}),s(1,"mat-icon"),d(2,"query_builder"),l(),s(3,"span"),d(4,"Idle-PC"),l()()}}var ZM=(()=>{class t{nodeService=f(wt);dialog=f(Je);controller=oe(void 0);node=oe(void 0);idlePC(){let n=this.dialog.open(KM,{panelClass:["base-dialog-panel","idle-pc-action-dialog-panel"],autoFocus:!1,disableClose:!1}).componentInstance;n.controller=this.controller(),n.node=this.node()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-idle-pc-action"]],inputs:{controller:[1,"controller"],node:[1,"node"]},decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){if(n&1&&A(0,j2e,5,0,"button",0),n&2){let r;O(((r=o.node())==null?null:r.node_type)==="dynamips"?0:-1)}},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function $2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.autoIdlePC())}),s(1,"mat-icon"),d(2,"query_builder"),l(),s(3,"span"),d(4,"Auto Idle-PC"),l()()}}var JM=(()=>{class t{nodeService=f(wt);toasterService=f(fe);progressService=f(zo);cdr=f(K);controller=oe(void 0);node=oe(void 0);autoIdlePC(){this.progressService.activate(),this.nodeService.getAutoIdlePC(this.controller(),this.node()).subscribe(e=>{this.progressService.deactivate(),e.idlepc!==null&&this.toasterService.success(`Node ${this.node().name} updated with idle-PC value ${e.idlepc}`),this.cdr.markForCheck()},e=>{this.progressService.deactivate(),this.toasterService.error(`Error while updating idle-PC value for node ${this.node().name}`),this.cdr.markForCheck()})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-auto-idle-pc-action"]],inputs:{controller:[1,"controller"],node:[1,"node"]},decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){if(n&1&&A(0,$2e,5,0,"button",0),n&2){let r;O(((r=o.node())==null?null:r.node_type)==="dynamips"?0:-1)}},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var ek=(()=>{class t{nodesDataSource=f(ci);drawingsDataSource=f(Vi);nodeService=f(wt);drawingService=f(Wi);toasterService=f(fe);cdr=f(K);controller=oe(void 0);nodes=oe(void 0);drawings=oe(void 0);moveLayerUp(){this.nodes().forEach(e=>{e.z++,this.nodesDataSource.update(e),this.nodeService.update(this.controller(),e).subscribe({next:n=>{},error:n=>{let o=n.error?.message||n.message||"Failed to move layer up";this.toasterService.error(o),this.cdr.markForCheck()}})}),this.drawings().forEach(e=>{e.z++,this.drawingsDataSource.update(e),this.drawingService.update(this.controller(),e).subscribe({next:n=>{},error:n=>{let o=n.error?.message||n.message||"Failed to move layer up";this.toasterService.error(o),this.cdr.markForCheck()}})})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-move-layer-up-action"]],inputs:{controller:[1,"controller"],nodes:[1,"nodes"],drawings:[1,"drawings"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.moveLayerUp()}),s(1,"mat-icon"),d(2,"keyboard_arrow_up"),l(),s(3,"span"),d(4,"Move layer up"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var tk=(()=>{class t{nodesDataSource=f(ci);drawingsDataSource=f(Vi);nodeService=f(wt);drawingService=f(Wi);toasterService=f(fe);cdr=f(K);controller=oe(void 0);nodes=oe(void 0);drawings=oe(void 0);moveLayerDown(){this.nodes().forEach(e=>{e.z--,this.nodesDataSource.update(e),this.nodeService.update(this.controller(),e).subscribe({next:n=>{},error:n=>{let o=n.error?.message||n.message||"Failed to move layer down";this.toasterService.error(o),this.cdr.markForCheck()}})}),this.drawings().forEach(e=>{e.z--,this.drawingsDataSource.update(e),this.drawingService.update(this.controller(),e).subscribe({next:n=>{},error:n=>{let o=n.error?.message||n.message||"Failed to move layer down";this.toasterService.error(o),this.cdr.markForCheck()}})})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-move-layer-down-action"]],inputs:{controller:[1,"controller"],nodes:[1,"nodes"],drawings:[1,"drawings"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.moveLayerDown()}),s(1,"mat-icon"),d(2,"keyboard_arrow_down"),l(),s(3,"span"),d(4,"Move layer down"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var nk=(()=>{class t{nodesDataSource=f(ci);drawingsDataSource=f(Vi);nodeService=f(wt);drawingService=f(Wi);cdr=f(K);controller=oe(void 0);nodes=oe([]);drawings=oe([]);bringToFront(){let e=Math.max(...this.nodes().map(r=>r.z)),n=Math.max(...this.drawings().map(r=>r.z)),o=Math.max(e,n);o<100&&o++,this.nodes().forEach(r=>{r.z=o,this.nodesDataSource.update(r),this.nodeService.update(this.controller(),r).subscribe(a=>{this.cdr.markForCheck()})}),this.drawings().forEach(r=>{r.z=o,this.drawingsDataSource.update(r),this.drawingService.update(this.controller(),r).subscribe(a=>{this.cdr.markForCheck()})})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-bring-to-front-action"]],inputs:{controller:[1,"controller"],nodes:[1,"nodes"],drawings:[1,"drawings"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.bringToFront()}),s(1,"mat-icon"),d(2,"vertical_align_top"),l(),s(3,"span"),d(4,"Bring to front"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var s_=(()=>{class t{protocolHandlerService;constructor(e){this.protocolHandlerService=e}startCapture(e,n,o,r){let a=`gns3+pcap://${e.host}:${e.port}?protocol=${e.protocol.slice(0,-1)}&project_id=${n.project_id}&link_id=${o.link_id}&project=${n.name}&name=${r}`;this.protocolHandlerService.open(a)}static \u0275fac=function(n){return new(n||t)(ge(Gp))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var H2e=(t,i)=>i[1];function U2e(t,i){if(t&1&&(s(0,"h1",0),d(1,"Starting Web Wireshark"),l(),s(2,"div",1),F(3,"mat-spinner",2),s(4,"p",3),d(5),l()(),s(6,"div",4)(7,"button",5),d(8,"Cancel"),l(),s(9,"button",6),d(10,"Starting..."),l()()),t&2){let e=b();u(5),U(e.loadingMessage())}}function G2e(t,i){if(t&1&&(s(0,"div",7)(1,"p"),d(2),l()()),t&2){let e=b(2);u(2),U(e.errorMessage())}}function W2e(t,i){if(t&1&&(s(0,"mat-option",12),d(1),l()),t&2){let e=i.$implicit;x("value",e[1]),u(),X(" ",e[0]," ")}}function q2e(t,i){if(t&1){let e=j();A(0,G2e,3,1,"div",7),s(1,"h1",0),d(2,"Packet capture"),l(),s(3,"div",8)(4,"form",9)(5,"mat-form-field",10)(6,"mat-label"),d(7,"Link type"),l(),s(8,"mat-select",11),J(9,W2e,2,2,"mat-option",12,H2e),l()(),s(11,"mat-form-field",10)(12,"mat-label"),d(13,"Capture file name"),l(),F(14,"input",13),l(),s(15,"mat-checkbox",14),v("change",function(o){D(e);let r=b();return P(r.startProgram.set(o.checked))}),d(16," Start the capture visualization program "),l(),s(17,"mat-checkbox",14),v("change",function(o){D(e);let r=b();return P(r.webWireshark.set(o.checked))}),d(18," Web Wireshark "),l()()(),s(19,"div",4)(20,"button",15),v("click",function(){D(e);let o=b();return P(o.onNoClick())}),d(21,"Cancel"),l(),s(22,"button",16),v("click",function(){D(e);let o=b();return P(o.onYesClick())}),d(23,"Ok"),l()()}if(t&2){let e=b();O(e.errorMessage()?0:-1),u(4),x("formGroup",e.inputForm),u(5),ee(e.linkTypes),u(6),x("checked",e.startProgram()),u(2),x("checked",e.webWireshark())}}var ik=(()=>{class t{controller;project;link;linkTypes=[];inputForm;startProgram=ae(!1);webWireshark=ae(!1);isLoading=me(!1);loadingMessage=me("");errorMessage=me("");dialogRef=f(Pe);linkService=f(to);formBuilder=f(jt);toasterService=f(fe);nodesDataSource=f(ci);linksDataSource=f(dr);packetCaptureService=f(s_);constructor(){this.inputForm=this.formBuilder.group({linkType:new re("",be.required),fileName:new re("",be.required)})}ngOnInit(){this.link.link_type==="ethernet"?this.linkTypes=[["Ethernet","DLT_EN10MB"]]:this.linkTypes=[["Cisco HDLC","DLT_C_HDLC"],["Cisco PPP","DLT_PPP_SERIAL"],["Frame Relay","DLT_FRELAY"],["ATM","DLT_ATM_RFC1483"]],this.linkTypes.length>0&&this.inputForm.controls.linkType.setValue(this.linkTypes[0][1]);let e=this.nodesDataSource.get(this.link.nodes[0].node_id),n=this.nodesDataSource.get(this.link.nodes[1].node_id),o=this.link.nodes[0].label.text,r=this.link.nodes[1].label.text,a=`${e.name}_${o}_to_${n.name}_${r}`.replace(/\s+/g,"_").replace(/[/\\]/g,"-").replace(/[^0-9A-Za-z_-]/g,"");this.inputForm.controls.fileName.setValue(a)}onYesClick(){this.errorMessage.set("");let e=!1;if(this.link.nodes.forEach(o=>{this.nodesDataSource.get(o.node_id).status==="started"&&(e=!0)}),!e){this.toasterService.error("Cannot capture because there is no running device on this link");return}if(this.inputForm.invalid){this.toasterService.error("Fill all required fields");return}let n={capture_file_name:this.inputForm.get("fileName").value,data_link_type:this.inputForm.get("linkType").value,wireshark:this.webWireshark()};this.webWireshark()?(this.isLoading.set(!0),this.loadingMessage.set("Starting Web Wireshark, please wait..."),this.linkService.startCaptureOnLink(this.controller,this.link,n).subscribe({next:o=>{this.linksDataSource.update(o),this.startProgram()&&this.packetCaptureService.startCapture(this.controller,this.project,this.link,n.capture_file_name),this.isLoading.set(!1),this.dialogRef.close()},error:o=>{if(this.isLoading.set(!1),o.status===409){let r=o.error?.message||o.error?.detail||o.message;this.errorMessage.set(r||"A packet capture is already running on this link. Please stop the existing capture first.")}else o.status===404?this.errorMessage.set("The link or controller could not be found. Please refresh the page and try again."):o.status===403?this.errorMessage.set("You do not have permission to start packet capture on this link."):this.errorMessage.set(`Failed to start Web Wireshark: ${o.message||"Unknown error"}`)}})):(this.startProgram()&&this.packetCaptureService.startCapture(this.controller,this.project,this.link,n.capture_file_name),this.linkService.startCaptureOnLink(this.controller,this.link,n).subscribe(o=>{this.linksDataSource.update(o),this.dialogRef.close()}))}onNoClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-start-capture"]],inputs:{startProgram:[1,"startProgram"],webWireshark:[1,"webWireshark"]},outputs:{startProgram:"startProgramChange",webWireshark:"webWiresharkChange"},decls:2,vars:1,consts:[["mat-dialog-title",""],["mat-dialog-content","",1,"loading-content"],["color","accent"],[1,"loading-message"],["mat-dialog-actions",""],["mat-button","","disabled","","color","accent"],["mat-button","","disabled","","mat-raised-button","","color","primary"],[1,"error-message"],[1,"modal-form-container"],[3,"formGroup"],[1,"input-field"],["formControlName","linkType","ngDefaultControl",""],[3,"value"],["matInput","","formControlName","fileName","type","text"],[3,"change","checked"],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&A(0,U2e,11,1)(1,q2e,24,4),n&2&&O(o.isLoading()?0:1)},dependencies:[Z,ct,Ue,vt,mt,He,pt,bt,Ce,Ve,Be,Wt,$,le,Me,ke,lt,we,Te,Mt,At,St,Ot,Ht,Si,Xo],styles:[".input-field[_ngcontent-%COMP%]{width:100%}.nested-checkbox[_ngcontent-%COMP%]{margin-left:24px}.loading-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;gap:16px}.loading-content[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%]{width:40px;height:40px}.loading-content[_ngcontent-%COMP%] .loading-message[_ngcontent-%COMP%]{margin:0;text-align:center;color:var(--mat-sys-on-surface);font-size:14px}.error-message[_ngcontent-%COMP%]{padding:16px;margin-bottom:16px;background:var(--mat-sys-error-container);border-radius:4px}.error-message[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;color:var(--mat-sys-on-error-container);font-size:14px}"],changeDetection:0})}return t})();function X2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.startCapture())}),s(1,"mat-icon"),d(2,"loupe"),l(),s(3,"span"),d(4,"Start capture"),l()()}}var ok=(()=>{class t{dialog=f(Je);dialogConfig=f(Ji);controller=oe(void 0);project=oe(void 0);link=oe(void 0);startCapture(){let e=this.dialogConfig.openConfig("startCapture",{autoFocus:!1,disableClose:!1}),o=this.dialog.open(ik,e).componentInstance;o.controller=this.controller(),o.project=this.project(),o.link=this.link()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-start-capture-action"]],inputs:{controller:[1,"controller"],project:[1,"project"],link:[1,"link"]},decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){if(n&1&&A(0,X2e,5,0,"button",0),n&2){let r;O(((r=o.link())==null?null:r.capturing)===!1?0:-1)}},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function Q2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.stopCapture())}),s(1,"mat-icon"),d(2,"pause_circle_filled"),l(),s(3,"span"),d(4,"Stop capture"),l()()}}var rk=(()=>{class t{linkService=f(to);toasterService=f(fe);cdr=f(K);controller=oe(void 0);link=oe(void 0);stopCapture(){this.linkService.stopCaptureOnLink(this.controller(),this.link()).subscribe({next:()=>{},error:e=>{let n=e.error?.message||e.message||"Failed to stop capture";this.toasterService.error(n),this.cdr.markForCheck()}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-stop-capture-action"]],inputs:{controller:[1,"controller"],link:[1,"link"]},decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){if(n&1&&A(0,Q2e,5,0,"button",0),n&2){let r;O((r=o.link())!=null&&r.capturing?0:-1)}},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function Y2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.startCapture())}),s(1,"mat-icon"),d(2,"search"),l(),s(3,"span"),d(4,"Start Wireshark"),l()()}}var ak=(()=>{class t{packetCaptureService=f(s_);controller=oe(void 0);project=oe(void 0);link=oe(void 0);startCapture(){var e=this.link().capture_file_name.split(".");this.packetCaptureService.startCapture(this.controller(),this.project(),this.link(),e[0])}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-start-capture-on-started-link-action"]],inputs:{controller:[1,"controller"],project:[1,"project"],link:[1,"link"]},decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){if(n&1&&A(0,Y2e,5,0,"button",0),n&2){let r;O((r=o.link())!=null&&r.capturing?0:-1)}},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var l_=(()=>{class t{toasterService;constructor(e){this.toasterService=e}parseWebSocketUrl(e){try{let n=new URL(e),o=n.protocol==="wss:",r=n.hostname,a=n.port||(o?"443":"80"),c=n.pathname,m=n.searchParams.get("token")||void 0;return{server:r,port:a,ssl:o,path:c,token:m}}catch(n){throw this.toasterService.error(`Invalid WebSocket URL: ${n.message}`),n}}buildXpraWebSocketUrl(e,n){return`${e.protocol==="https:"?"wss":"ws"}://${e.host}:${e.port}/v3/projects/${n.project_id}/nodes/${n.node_id}/console/xpra?token=${e.authToken}`}buildXpraConsolePageUrl(e){let{server:n,port:o,ssl:r}=this.parseWebSocketUrl(e),a=new URLSearchParams;a.set("server",n),a.set("port",o),a.set("ssl",r?"true":"false");let c=new URL(e),m=c.pathname+c.search;return a.set("path",m),a.set("sound","true"),a.set("clipboard","true"),a.set("encoding","h264"),`assets/xpra-html5/index.html?${a.toString()}`}buildXpraConsolePageUrlFromNode(e,n){let o=this.buildXpraWebSocketUrl(e,n);return this.buildXpraConsolePageUrl(o)}buildXpraWebSocketUrlForWebWireshark(e,n){return`${e.protocol==="https:"?"wss":"ws"}://${e.host}:${e.port}/v3/projects/${n.project_id}/links/${n.link_id}/capture/web-wireshark?token=${e.authToken}`}openXpraConsole(e,n,o=!1){if(n.status!=="started"){this.toasterService.error("Node must be started before opening console");return}try{let r=this.buildXpraConsolePageUrlFromNode(e,n),a=10,c=1280+a,m=720+a,p;if(o)p=window.open(r,"_blank");else{let h=`Xpra-${n.name}`;p=window.open(r,h,`width=${c},height=${m}`)}(!p||p.closed||typeof p.closed>"u")&&this.toasterService.error("Popup was blocked. Please allow popups for this site.")}catch(r){this.toasterService.error(`Failed to open Xpra console: ${r.message}`)}}static \u0275fac=function(n){return new(n||t)(ge(fe))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function K2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.startWebWireshark())}),s(1,"mat-icon"),d(2,"analytics"),l(),s(3,"span"),d(4,"Start Web Wireshark"),l()()}}var eU=(()=>{class t{xpraConsoleService=f(l_);toasterService=f(fe);controller=oe(void 0);project=oe(void 0);link=oe(void 0);startWebWireshark(){let e=this.controller(),n=this.project(),o=this.link();if(!e||!n||!o){this.toasterService.error("Missing controller, project or link");return}let r=this.xpraConsoleService.buildXpraWebSocketUrlForWebWireshark(e,o),a=this.xpraConsoleService.buildXpraConsolePageUrl(r),c=window.open(a,"_blank");(!c||c.closed||typeof c.closed>"u")&&this.toasterService.error("Popup was blocked. Please allow popups for this site.")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-start-web-wireshark-action"]],inputs:{controller:[1,"controller"],project:[1,"project"],link:[1,"link"]},decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){if(n&1&&A(0,K2e,5,0,"button",0),n&2){let r;O((r=o.link())!=null&&r.capturing&&((r=o.link())!=null&&r.wireshark)?0:-1)}},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function Z2e(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.onOpenWebWiresharkInline())}),s(1,"mat-icon"),d(2,"open_in_full"),l(),s(3,"span"),d(4,"Open Web Wireshark (Inline)"),l()()}}var tU=(()=>{class t{controller=oe(void 0);project=oe(void 0);link=oe(void 0);openWebWiresharkInline=new ve;onOpenWebWiresharkInline(){let e=this.controller(),n=this.project(),o=this.link();!e||!n||!o||this.openWebWiresharkInline.emit({link:o,controller:e,project:n})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-start-web-wireshark-inline-action"]],inputs:{controller:[1,"controller"],project:[1,"project"],link:[1,"link"]},outputs:{openWebWiresharkInline:"openWebWiresharkInline"},decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){if(n&1&&A(0,Z2e,5,0,"button",0),n&2){let r;O((r=o.link())!=null&&r.capturing&&((r=o.link())!=null&&r.wireshark)?0:-1)}},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function J2e(t,i){if(t&1&&(s(0,"div",2)(1,"h6"),d(2),l(),s(3,"span",5),d(4),l()()),t&2){let e=i.$implicit;u(2),X(" ",e.name," "),u(2),X(" ",e.description," ")}}var sk=(()=>{class t{dialogRef=f(Pe);title;messages;onCloseClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-help-dialog"]],inputs:{title:"title",messages:"messages"},decls:8,vars:1,consts:[["mat-dialog-title",""],[1,"modal-form-container"],[1,"message"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],[1,"description"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1),l(),s(2,"div",1),J(3,J2e,5,2,"div",2,Ii),l(),s(5,"div",3)(6,"button",4),v("click",function(){return o.onCloseClick()}),d(7,"Close"),l()()),n&2&&(u(),U(o.title),u(2),ee(o.messages))},dependencies:[Ce,Ve,Be,$,le,te],styles:[".message[_ngcontent-%COMP%]{margin-bottom:8px}.description[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface);opacity:.7}"],changeDetection:0})}return t})();function eMe(t,i){if(t&1){let e=j();s(0,"div",1)(1,"mat-tab-group")(2,"mat-tab",8)(3,"mat-form-field",9)(4,"input",10),v("input",function(o){D(e);let r=b();return P(r.onFrequencyDropChange(+o.target.value))}),l()()(),s(5,"mat-tab",11)(6,"mat-form-field",9)(7,"input",12),v("input",function(o){D(e);let r=b();return P(r.onPacketLossChange(+o.target.value))}),l()()(),s(8,"mat-tab",13)(9,"mat-form-field",9)(10,"input",14),v("input",function(o){D(e);let r=b();return P(r.onDelayLatencyChange(+o.target.value))}),l()(),s(11,"mat-form-field",9)(12,"input",15),v("input",function(o){D(e);let r=b();return P(r.onDelayJitterChange(+o.target.value))}),l()()(),s(13,"mat-tab",16)(14,"mat-form-field",9)(15,"input",14),v("input",function(o){D(e);let r=b();return P(r.onCorruptChange(+o.target.value))}),l()()(),s(16,"mat-tab",17)(17,"mat-form-field",9)(18,"textarea",18),v("input",function(o){D(e);let r=b();return P(r.onBpfChange(o.target.value))}),l()()()()()}if(t&2){let e=b();u(4),x("value",e.filters.frequency_drop[0]),u(3),x("value",e.filters.packet_loss[0]),u(3),x("value",e.filters.delay[0]),u(2),x("value",e.filters.delay[1]),u(3),x("value",e.filters.corrupt[0]),u(3),x("value",e.filters.bpf[0])}}var lk=(()=>{class t{dialogRef=f(Pe);linkService=f(to);dialog=f(Je);dialogConfig=f(Ji);cdr=f(K);controller;project;link;filters;availableFilters;constructor(){}ngOnInit(){this.linkService.getLink(this.controller,this.link.project_id,this.link.link_id).subscribe(e=>{this.link=e,this.filters={bpf:[],corrupt:[0],delay:[0,0],frequency_drop:[0],packet_loss:[0]},this.link.filters&&(this.filters.bpf=this.link.filters.bpf?this.link.filters.bpf:[],this.filters.corrupt=this.link.filters.corrupt?this.link.filters.corrupt:[0],this.filters.delay=this.link.filters.delay?this.link.filters.delay:[0,0],this.filters.frequency_drop=this.link.filters.frequency_drop?this.link.filters.frequency_drop:[0],this.filters.packet_loss=this.link.filters.packet_loss?this.link.filters.packet_loss:[0]),this.cdr.markForCheck()}),this.linkService.getAvailableFilters(this.controller,this.link).subscribe(e=>{this.availableFilters=e,this.cdr.markForCheck()})}onFrequencyDropChange(e){this.filters.frequency_drop[0]=e,this.cdr.markForCheck()}onPacketLossChange(e){this.filters.packet_loss[0]=e,this.cdr.markForCheck()}onDelayLatencyChange(e){this.filters.delay[0]=e,this.cdr.markForCheck()}onDelayJitterChange(e){this.filters.delay[1]=e,this.cdr.markForCheck()}onCorruptChange(e){this.filters.corrupt[0]=e,this.cdr.markForCheck()}onBpfChange(e){this.filters.bpf[0]=e,this.cdr.markForCheck()}onNoClick(){this.dialogRef.close()}onResetClick(){this.link.filters={bpf:[],corrupt:[0],delay:[0,0],frequency_drop:[0],packet_loss:[0]},this.linkService.updateLink(this.controller,this.link).subscribe(e=>{this.dialogRef.close()})}onYesClick(){this.link.filters=this.filters,this.linkService.updateLink(this.controller,this.link).subscribe(e=>{this.dialogRef.close()})}onHelpClick(){let e=this.dialogConfig.openConfig("helpDialog",{autoFocus:!1,disableClose:!0}),o=this.dialog.open(sk,e).componentInstance;o.title="Help for filters";let r=[];this.availableFilters.forEach(a=>{r.push({name:a.name,description:a.description})}),o.messages=r}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-packet-filters"]],decls:15,vars:1,consts:[["mat-dialog-title",""],[1,"modal-form-container","content"],[1,"bottom-bar"],[1,"spacer"],["mat-dialog-actions","","layout","row",1,"dialog-actions"],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],[1,"divider"],["label","Frequency drop"],[1,"input-field"],["matInput","","placeholder","Frequency","type","number",3,"input","value"],["label","Packet loss"],["matInput","","placeholder","Chance","type","number",3,"input","value"],["label","Delay"],["matInput","","placeholder","Latency","type","number",3,"input","value"],["matInput","","placeholder","Jitter","type","number",3,"input","value"],["label","Corrupt"],["label","Berkeley Packet Filter (BPF)"],["matInput","","type","text",3,"input","value"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Packet filters"),l(),A(2,eMe,19,6,"div",1),s(3,"div",2),F(4,"div",3),s(5,"div",4)(6,"button",5),v("click",function(){return o.onNoClick()}),d(7,"Cancel"),l(),s(8,"button",5),v("click",function(){return o.onResetClick()}),d(9,"Reset"),l(),s(10,"button",6),v("click",function(){return o.onYesClick()}),d(11,"Apply"),l(),F(12,"div",7),s(13,"button",5),v("click",function(){return o.onHelpClick()}),d(14,"Help"),l()()()),n&2&&(u(2),O(o.filters?2:-1))},dependencies:[Z,Ce,Ve,Be,Me,ke,we,Te,mo,Bo,Vo,$,le],styles:[".spacer[_ngcontent-%COMP%]{flex-grow:1}.content[_ngcontent-%COMP%]{height:260px}.item[_ngcontent-%COMP%]{height:25px;font-size:14px;margin-bottom:8px}.item-name[_ngcontent-%COMP%]{margin-bottom:8px}.item-value[_ngcontent-%COMP%]{width:100%;margin-bottom:8px}.input-field[_ngcontent-%COMP%]{width:100%;margin-top:8px}.divider[_ngcontent-%COMP%]{width:fit-content;flex:1 1 auto}.input-color[_ngcontent-%COMP%]{padding:0;border-width:0px;width:100%;background-color:transparent;outline:none}input[_ngcontent-%COMP%]:focus{outline:none}input[type=color][_ngcontent-%COMP%]{-webkit-appearance:none;border:none;height:25px}input[type=color][_ngcontent-%COMP%]::-webkit-color-swatch-wrapper{padding:0}input[type=color][_ngcontent-%COMP%]::-webkit-color-swatch{border:none}.modal-form-container[_ngcontent-%COMP%]{display:flex;flex-direction:column}.modal-form-container[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();var ck=(()=>{class t{dialog=f(Je);dialogConfig=f(Ji);controller=oe(void 0);project=oe(void 0);link=oe(void 0);openPacketFilters(){let e=this.dialogConfig.openConfig("packetFilters",{autoFocus:!1,disableClose:!1}),o=this.dialog.open(lk,e).componentInstance;o.controller=this.controller(),o.project=this.project(),o.link=this.link()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-packet-filters-action"]],inputs:{controller:[1,"controller"],project:[1,"project"],link:[1,"link"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.openPacketFilters()}),s(1,"mat-icon"),d(2,"filter_list"),l(),s(3,"span"),d(4,"Packet filters"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function tMe(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.resumeLink())}),s(1,"mat-icon"),d(2,"play_arrow"),l(),s(3,"span"),d(4,"Resume"),l()()}}var dk=(()=>{class t{linkService=f(to);toasterService=f(fe);cdr=f(K);controller=oe(void 0);link=oe(void 0);resumeLink(){let e=this.link();e.suspend=!1,this.linkService.updateLink(this.controller(),e).subscribe({next:()=>{},error:n=>{let o=n.error?.message||n.message||"Failed to resume link";this.toasterService.error(o),this.cdr.markForCheck()}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-resume-link-action"]],inputs:{controller:[1,"controller"],link:[1,"link"]},decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){if(n&1&&A(0,tMe,5,0,"button",0),n&2){let r;O((r=o.link())!=null&&r.suspend?0:-1)}},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function nMe(t,i){if(t&1){let e=j();s(0,"button",1),v("click",function(){D(e);let o=b();return P(o.suspendLink())}),s(1,"mat-icon"),d(2,"pause"),l(),s(3,"span"),d(4,"Suspend"),l()()}}var mk=(()=>{class t{linkService=f(to);toasterService=f(fe);cdr=f(K);controller=oe(void 0);link=oe(void 0);suspendLink(){let e=this.link();e.suspend=!0,this.linkService.updateLink(this.controller(),e).subscribe({next:()=>{},error:n=>{let o=n.error?.message||n.message||"Failed to suspend link";this.toasterService.error(o),this.cdr.markForCheck()}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-suspend-link-action"]],inputs:{controller:[1,"controller"],link:[1,"link"]},decls:1,vars:1,consts:[["mat-menu-item",""],["mat-menu-item","",3,"click"]],template:function(n,o){if(n&1&&A(0,nMe,5,0,"button",0),n&2){let r;O(((r=o.link())==null?null:r.suspend)===!1?0:-1)}},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var pk=(()=>{class t{linkService=f(to);toasterService=f(fe);cdr=f(K);controller=oe(void 0);link=oe(void 0);resetLink(){this.linkService.resetLink(this.controller(),this.link()).subscribe({next:()=>{},error:e=>{let n=e.error?.message||e.message||"Failed to reset link";this.toasterService.error(n),this.cdr.markForCheck()}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-reset-link-action"]],inputs:{controller:[1,"controller"],link:[1,"link"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.resetLink()}),s(1,"mat-icon"),d(2,"settings_backup_restore"),l(),s(3,"span"),d(4,"Reset link"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function iMe(t,i){if(t&1&&(s(0,"mat-option",7),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function oMe(t,i){if(t&1&&(s(0,"mat-option",7),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function rMe(t,i){if(t&1&&(s(0,"mat-form-field",9)(1,"mat-label"),d(2,"Curviness"),l(),F(3,"input",14),l()),t&2){let e=b();u(3),x("min",e.curvinessMin)("max",e.curvinessMax)("step",e.curvinessStep)}}function aMe(t,i){if(t&1&&(s(0,"mat-form-field",10)(1,"mat-label"),d(2,"Roundness"),l(),F(3,"input",15),l()),t&2){let e=b();u(3),x("min",e.flowchartRoundnessMin)("max",e.flowchartRoundnessMax)("step",e.flowchartRoundnessStep)}}var uk=(()=>{class t{dialogRef=f(Pe);formBuilder=f(jt);toasterService=f(fe);linkService=f(to);linksDataSource=f(dr);linksEventSource=f(za);linkToMapLink=f(Pg);nonNegativeValidator=f(Hl);controller;project;link;formGroup;borderTypes=["Invisible","Solid","Dash","Dot","Dash Dot","Dash Dot Dot"];linkTypes=["Straight","Bezier","Flowchart","StateMachine","Freeform"];linkTypeValues=["straight","bezier","flowchart","statemachine","freeform"];bezierCurvinessMin=rn.BEZIER_CURVINESS_MIN;bezierCurvinessMax=rn.BEZIER_CURVINESS_MAX;bezierCurvinessStep=rn.BEZIER_CURVINESS_STEP;bezierCurvinessDefault=rn.BEZIER_CURVINESS_DEFAULT;stateMachineCurvinessMin=rn.STATE_MACHINE_CURVINESS_MIN;stateMachineCurvinessMax=rn.STATE_MACHINE_CURVINESS_MAX;stateMachineCurvinessStep=rn.STATE_MACHINE_CURVINESS_STEP;stateMachineCurvinessDefault=rn.STATE_MACHINE_CURVINESS_DEFAULT;flowchartRoundnessMin=rn.FLOWCHART_ROUNDNESS_MIN;flowchartRoundnessMax=rn.FLOWCHART_ROUNDNESS_MAX;flowchartRoundnessStep=rn.FLOWCHART_ROUNDNESS_STEP;flowchartRoundnessDefault=rn.FLOWCHART_ROUNDNESS_DEFAULT;curvinessLinkTypeContext=rn.DEFAULT_LINK_TYPE;constructor(){this.formGroup=this.formBuilder.group({color:new re("",[be.required]),width:new re("",[be.required,this.nonNegativeValidator.get]),type:new re("",[be.required]),linkType:new re("",[be.required]),bezierCurviness:new re(this.bezierCurvinessDefault,[be.required]),flowchartRoundness:new re(this.flowchartRoundnessDefault,[be.required,be.min(this.flowchartRoundnessMin),be.max(this.flowchartRoundnessMax)])})}ngOnInit(){this.link.link_style||(this.link.link_style={});let e=this.link.link_type==="serial"?"#800000":"#000000";this.formGroup.controls.color.setValue(this.link.link_style?.color??e);let n=this.link.link_style?.width!==void 0?this.link.link_style.width:2;this.formGroup.controls.width.setValue(n);let o=this.borderTypes[1];this.link.link_style?.type!==void 0&&this.link.link_style.type>=0&&this.link.link_style.type<this.borderTypes.length&&(o=this.borderTypes[this.link.link_style.type]),this.formGroup.controls.type.setValue(o);let r=Bl.get(this.link.project_id,this.link.link_id),a=this.link.link_style.link_type||r,c=this.normalizeLinkType(a);this.formGroup.controls.linkType.setValue(this.getLinkTypeLabel(a));let m=Bl.getBezierCurviness(this.link.project_id,this.link.link_id),p=this.link.link_style?.bezier_curviness!==void 0?this.link.link_style.bezier_curviness:m;this.applyCurvinessValidators(c),this.formGroup.controls.bezierCurviness.setValue(this.normalizeCurvinessByLinkType(c,p)),this.curvinessLinkTypeContext=c;let h=Bl.getFlowchartRoundness(this.link.project_id,this.link.link_id),g=this.link.link_style?.flowchart_roundness!==void 0?this.link.link_style.flowchart_roundness:h;this.formGroup.controls.flowchartRoundness.setValue(rn.normalizeFlowchartRoundness(g)),this.formGroup.controls.linkType.valueChanges.subscribe(M=>{let C=this.normalizeLinkType(M),_=this.curvinessLinkTypeContext;this.applyCurvinessValidators(C);let w=this.formGroup.controls.bezierCurviness.value,S=this.normalizeCurvinessByLinkType(_,w),y=this.getCurvinessDefaultByLinkType(_),k=S===y,I=this.getCurvinessDefaultByLinkType(C),E=k?I:this.normalizeCurvinessByLinkType(C,w);this.formGroup.controls.bezierCurviness.setValue(E,{emitEvent:!1}),this.curvinessLinkTypeContext=C})}normalizeLinkType(e){return rn.normalizeLinkType(e)}getLinkTypeLabel(e){let n=this.normalizeLinkType(e),o=this.linkTypeValues.indexOf(n);return this.linkTypes[o===-1?0:o]}isCurvinessSelected(){let e=this.normalizeLinkType(this.formGroup.controls.linkType.value);return e==="bezier"||e==="statemachine"}isFlowchartSelected(){return this.normalizeLinkType(this.formGroup.controls.linkType.value)==="flowchart"}get curvinessMin(){return this.getCurvinessMinByLinkType(this.normalizeLinkType(this.formGroup.controls.linkType.value))}get curvinessMax(){return this.getCurvinessMaxByLinkType(this.normalizeLinkType(this.formGroup.controls.linkType.value))}get curvinessStep(){return this.getCurvinessStepByLinkType(this.normalizeLinkType(this.formGroup.controls.linkType.value))}normalizeCurvinessByLinkType(e,n){return e==="statemachine"?rn.normalizeStateMachineCurviness(n):rn.normalizeBezierCurviness(n)}getCurvinessMinByLinkType(e){return e==="statemachine"?this.stateMachineCurvinessMin:this.bezierCurvinessMin}getCurvinessMaxByLinkType(e){return e==="statemachine"?this.stateMachineCurvinessMax:this.bezierCurvinessMax}getCurvinessStepByLinkType(e){return e==="statemachine"?this.stateMachineCurvinessStep:this.bezierCurvinessStep}getCurvinessDefaultByLinkType(e){return e==="statemachine"?this.stateMachineCurvinessDefault:this.bezierCurvinessDefault}applyCurvinessValidators(e){this.formGroup.controls.bezierCurviness.setValidators([be.required,be.min(this.getCurvinessMinByLinkType(e)),be.max(this.getCurvinessMaxByLinkType(e))]),this.formGroup.controls.bezierCurviness.updateValueAndValidity({emitEvent:!1})}onNoClick(){this.dialogRef.close()}onYesClick(){if(this.formGroup.valid){this.link.link_style||(this.link.link_style={});let e=this.normalizeLinkType(this.link.link_style.link_type||Bl.get(this.link.project_id,this.link.link_id)),n=this.link.link_style.control_offset;this.link.link_style.color=this.formGroup.controls.color.value,this.link.link_style.width=this.formGroup.controls.width.value,this.link.link_style.type=this.borderTypes.indexOf(this.formGroup.controls.type.value),this.link.link_style.link_type=this.normalizeLinkType(this.formGroup.controls.linkType.value),this.link.link_style.bezier_curviness=this.normalizeCurvinessByLinkType(this.link.link_style.link_type,this.formGroup.controls.bezierCurviness.value),this.link.link_style.flowchart_roundness=rn.normalizeFlowchartRoundness(this.formGroup.controls.flowchartRoundness.value),this.link.link_style.link_type==="freeform"?this.link.link_style.control_offset=n:this.link.link_style.control_offset=void 0;let o=this.link.link_style.link_type,r=this.link.link_style.bezier_curviness,a=this.link.link_style.flowchart_roundness,c=o!==e;this.linkService.updateLinkStyle(this.controller,this.link).subscribe(m=>{m.link_style||(m.link_style={});let p=m.link_style.link_type,g=typeof p=="string"&&p.trim().length>0&&this.normalizeLinkType(p)!==this.normalizeLinkType(o);!m.link_style.link_type&&o&&(m.link_style.link_type=o),m.link_style.bezier_curviness===void 0&&r!==void 0&&(m.link_style.bezier_curviness=r),m.link_style.flowchart_roundness===void 0&&a!==void 0&&(m.link_style.flowchart_roundness=a),m.link_style.control_offset===void 0&&n!==void 0&&m.link_style.link_type==="freeform"&&(m.link_style.control_offset=n),Bl.set(m.project_id,m.link_id,m.link_style.link_type),Bl.setBezierCurviness(m.project_id,m.link_id,this.normalizeCurvinessByLinkType(m.link_style.link_type,m.link_style.bezier_curviness)),Bl.setFlowchartRoundness(m.project_id,m.link_id,rn.normalizeFlowchartRoundness(m.link_style.flowchart_roundness)),this.linksDataSource.update(m),this.linksEventSource.edited.next(this.linkToMapLink.convert(m)),c&&o&&g?this.toasterService.warning("Link type was not persisted by the controller. Please update gns3-server."):this.toasterService.success("Link updated"),this.dialogRef.close()},()=>{this.toasterService.error("Unable to update link style")})}else this.toasterService.error("Entered data is incorrect")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-link-style-editor"]],decls:31,vars:3,consts:[["mat-dialog-title",""],[1,"modal-form-container"],[3,"formGroup"],[1,"form-field"],["matInput","","formControlName","color","type","color"],["matInput","","formControlName","width","type","number"],["formControlName","type"],[3,"value"],["formControlName","linkType"],[1,"form-field","bezier-curviness-field"],[1,"form-field","flowchart-roundness-field"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],["matInput","","formControlName","bezierCurviness","type","number",3,"min","max","step"],["matInput","","formControlName","flowchartRoundness","type","number",3,"min","max","step"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Link Style Editor"),l(),s(2,"div",1)(3,"form",2)(4,"mat-form-field",3)(5,"mat-label"),d(6,"Color"),l(),F(7,"input",4),l(),s(8,"mat-form-field",3)(9,"mat-label"),d(10,"Width"),l(),F(11,"input",5),l(),s(12,"mat-form-field",3)(13,"mat-label"),d(14,"Line style"),l(),s(15,"mat-select",6),J(16,iMe,2,2,"mat-option",7,Fe),l()(),s(18,"mat-form-field",3)(19,"mat-label"),d(20,"Link type"),l(),s(21,"mat-select",8),J(22,oMe,2,2,"mat-option",7,Fe),l()(),A(24,rMe,4,3,"mat-form-field",9),A(25,aMe,4,3,"mat-form-field",10),l()(),s(26,"div",11)(27,"button",12),v("click",function(){return o.onNoClick()}),d(28,"Cancel"),l(),s(29,"button",13),v("click",function(){return o.onYesClick()}),d(30,"Apply"),l()()),n&2&&(u(3),x("formGroup",o.formGroup),u(13),ee(o.borderTypes),u(6),ee(o.linkTypes),u(2),O(o.isCurvinessSelected()?24:-1),u(),O(o.isFlowchartSelected()?25:-1))},dependencies:[Z,nt,Ue,vt,xi,mt,He,Ro,Sc,ct,pt,bt,Ce,Ve,Be,Me,ke,lt,we,Te,Mt,At,St,Jo,$,le],styles:[".modal-form-container[_ngcontent-%COMP%]{display:flex;flex-direction:column}.modal-form-container[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{width:100%}.form-field[_ngcontent-%COMP%]{width:100%}.bezier-curviness-field[_ngcontent-%COMP%], .flowchart-roundness-field[_ngcontent-%COMP%]{margin-top:10px}"],changeDetection:0})}return t})();var hk=(()=>{class t{dialog=f(Je);dialogConfig=f(Ji);controller=oe(void 0);project=oe(void 0);link=oe(void 0);editStyle(){let e=this.dialogConfig.openConfig("linkStyleEditor",{autoFocus:!1,disableClose:!1}),o=this.dialog.open(uk,e).componentInstance;o.controller=this.controller(),o.project=this.project(),o.link=this.link()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-edit-link-style-action"]],inputs:{controller:[1,"controller"],project:[1,"project"],link:[1,"link"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.editStyle()}),s(1,"mat-icon"),d(2,"style"),l(),s(3,"span"),d(4,"Edit style"),l()())},dependencies:[Ce,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var fk=(()=>{class t{nodesDataSource=f(ci);drawingsDataSource=f(Vi);nodeService=f(wt);drawingService=f(Wi);projectService=f(Fi);cdr=f(K);dialog=f(Je);controller=oe(void 0);nodes=oe(void 0);drawings=oe(void 0);command;ngOnChanges(){let e=this.nodes(),n=this.drawings();e.length===1&&n.length===0?this.command=e[0].locked?"Unlock item":"Lock item":e.length===0&&n.length===1?this.command=n[0].locked?"Unlock item":"Lock item":this.command="Lock/unlock items"}lock(){let e=this.nodes(),n=this.drawings(),o=e.length+n.length;if(o>1){let a=!e.every(m=>m.locked)||!n.every(m=>m.locked)?"lock":"unlock";this.dialog.open(sMe,{panelClass:"simple-dialog-panel",data:{title:`Confirm ${a==="lock"?"Lock":"Unlock"} All`,message:`Are you sure you want to ${a} ${o} item${o>1?"s":""}?`,action:a}}).afterClosed().subscribe(m=>{m&&this.performLockUnlock()})}else this.performLockUnlock()}async performLockUnlock(){await this.nodes().forEach(e=>{e.locked=!e.locked,this.nodeService.updateNode(this.controller(),e).subscribe(n=>{this.nodesDataSource.update(n),this.cdr.markForCheck()})}),await this.drawings().forEach(e=>{e.locked=!e.locked,this.drawingService.update(this.controller(),e).subscribe(n=>{this.drawingsDataSource.update(n),this.cdr.markForCheck()})}),this.projectService.projectUpdateLockIcon()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-lock-action"]],inputs:{controller:[1,"controller"],nodes:[1,"nodes"],drawings:[1,"drawings"]},features:[un],decls:5,vars:1,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.lock()}),s(1,"mat-icon"),d(2,"lock"),l(),s(3,"span"),d(4),l()()),n&2&&(u(4),U(o.command))},dependencies:[$,te,se,Qe,ot,Ce],encapsulation:2,changeDetection:0})}return t})(),sMe=(()=>{class t{dialogRef;data;constructor(e,n){this.dialogRef=e,this.data=n}static \u0275fac=function(n){return new(n||t)(st(Pe),st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-lock-confirm-dialog"]],decls:10,vars:3,consts:[["mat-dialog-title",""],["mat-dialog-content",""],["mat-dialog-actions","","align","end"],["mat-button","",3,"click"],["mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1),l(),s(2,"div",1)(3,"p"),d(4),l()(),s(5,"div",2)(6,"button",3),v("click",function(){return o.dialogRef.close(!1)}),d(7,"Cancel"),l(),s(8,"button",4),v("click",function(){return o.dialogRef.close(!0)}),d(9),l()()),n&2&&(u(),U(o.data.title),u(3),U(o.data.message),u(5),X(" ",o.data.action==="lock"?"Lock":"Unlock"," "))},dependencies:[Ce,Ve,Be,Wt,$,le],encapsulation:2,changeDetection:0})}return t})();var gk=(()=>{class t{toasterService=f(fe);nodesDataSource=f(ci);drawingsDataSource=f(Vi);linksDataSource=f(dr);nodeService=f(wt);drawingService=f(Wi);linkService=f(to);bottomSheet=f(mc);cdr=f(K);controller=oe(void 0);nodes=oe([]);drawings=oe([]);links=oe([]);confirmDelete(){let n=this.bottomSheet.open(ns,{data:{message:"Do you want to delete all selected objects?"},panelClass:"confirmation-bottom-sheet"}).afterDismissed().subscribe(o=>{o&&(this.delete(),this.cdr.markForCheck())})}delete(){this.nodes().forEach(e=>{if(!e.locked)this.nodesDataSource.remove(e),this.nodeService.delete(this.controller(),e).subscribe({next:n=>{},error:n=>{let o=n.error?.message||n.message||"Failed to delete node";this.toasterService.error(o),this.cdr.markForCheck()}});else{this.toasterService.error("Cannot delete locked node: "+e.name),this.cdr.markForCheck();return}}),this.drawings().forEach(e=>{if(!e.locked)this.drawingsDataSource.remove(e),this.drawingService.delete(this.controller(),e).subscribe({next:n=>{},error:n=>{let o=n.error?.message||n.message||"Failed to delete drawing";this.toasterService.error(o),this.cdr.markForCheck()}});else{this.toasterService.error("Cannot delete locked drawing"),this.cdr.markForCheck();return}}),this.nodes().length==0&&this.drawings().length==0&&this.links().forEach(e=>{this.linksDataSource.remove(e),this.linkService.deleteLink(this.controller(),e).subscribe({next:()=>{Bl.remove(e.project_id,e.link_id)},error:n=>{let o=n.error?.message||n.message||"Failed to delete link";this.toasterService.error(o),this.cdr.markForCheck()}})})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-delete-action"]],inputs:{controller:[1,"controller"],nodes:[1,"nodes"],drawings:[1,"drawings"],links:[1,"links"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.confirmDelete()}),s(1,"mat-icon"),d(2,"delete"),l(),s(3,"span"),d(4,"Delete"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var _k=(()=>{class t{nodesDataSource=f(ci);nodeService=f(wt);cdr=f(K);controller=oe(void 0);nodes=oe(void 0);alignHorizontally(){let e=0;this.nodes().forEach(n=>{e+=n.y}),e=e/this.nodes().length,this.nodes().forEach(n=>{n.y=e,this.nodesDataSource.update(n),this.nodeService.update(this.controller(),n).subscribe(o=>{this.cdr.markForCheck()})})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-align-horizontally-action"]],inputs:{controller:[1,"controller"],nodes:[1,"nodes"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.alignHorizontally()}),s(1,"mat-icon"),d(2,"more_horiz"),l(),s(3,"span"),d(4,"Align horizontally"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var vk=(()=>{class t{nodesDataSource=f(ci);nodeService=f(wt);cdr=f(K);controller=oe(void 0);nodes=oe(void 0);alignVertically(){let e=0;this.nodes().forEach(n=>{e+=n.x}),e=e/this.nodes().length,this.nodes().forEach(n=>{n.x=e,this.nodesDataSource.update(n),this.nodeService.update(this.controller(),n).subscribe(o=>{this.cdr.markForCheck()})})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-align-vertically-action"]],inputs:{controller:[1,"controller"],nodes:[1,"nodes"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.alignVertically()}),s(1,"mat-icon"),d(2,"more_vert"),l(),s(3,"span"),d(4,"Align vertically"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();function lMe(t,i){if(t&1&&F(0,"app-show-node-action",4),t&2){let e=b();x("controller",e.controller)("node",e.nodes[0])}}function cMe(t,i){if(t&1&&F(0,"app-config-node-action",4),t&2){let e=b();x("controller",e.controller)("node",e.nodes[0])}}function dMe(t,i){if(t&1&&F(0,"app-start-node-action",5),t&2){let e=b();x("controller",e.controller)("nodes",e.nodes)}}function mMe(t,i){if(t&1&&F(0,"app-suspend-node-action",5),t&2){let e=b();x("controller",e.controller)("nodes",e.nodes)}}function pMe(t,i){if(t&1&&F(0,"app-stop-node-action",5),t&2){let e=b();x("controller",e.controller)("nodes",e.nodes)}}function uMe(t,i){if(t&1&&F(0,"app-reload-node-action",5),t&2){let e=b();x("controller",e.controller)("nodes",e.nodes)}}function hMe(t,i){if(t&1){let e=j();s(0,"app-http-console-action",15),v("openWebConsoleInline",function(o){D(e);let r=b();return P(r.onOpenWebConsoleInline(o))}),l()}if(t&2){let e=b();x("controller",e.controller)("project",e.project)("nodes",e.nodes)}}function fMe(t,i){if(t&1&&F(0,"app-http-console-new-tab-action",5),t&2){let e=b();x("controller",e.controller)("nodes",e.nodes)}}function gMe(t,i){if(t&1&&F(0,"app-console-device-action-browser",4),t&2){let e=b();x("controller",e.controller)("node",e.nodes[0])}}function _Me(t,i){if(t&1&&F(0,"app-isolate-node-action",4),t&2){let e=b();x("controller",e.controller)("node",e.nodes[0])}}function vMe(t,i){if(t&1&&F(0,"app-unisolate-node-action",4),t&2){let e=b();x("controller",e.controller)("node",e.nodes[0])}}function bMe(t,i){if(t&1&&F(0,"app-change-hostname-action",4),t&2){let e=b();x("controller",e.controller)("node",e.nodes[0])}}function CMe(t,i){if(t&1&&F(0,"app-change-symbol-action",4),t&2){let e=b();x("controller",e.controller)("node",e.nodes[0])}}function xMe(t,i){if(t&1&&F(0,"app-duplicate-action",7),t&2){let e=b();x("controller",e.controller)("project",e.project)("nodes",e.nodes)("drawings",e.drawings)}}function yMe(t,i){if(t&1&&F(0,"app-edit-style-action",8),t&2){let e=b();x("controller",e.controller)("project",e.project)("drawing",e.drawings[0])}}function SMe(t,i){if(t&1&&F(0,"app-edit-text-action",9),t&2){let e=b();x("controller",e.controller)("project",e.project)("drawing",e.drawings[0])("node",e.nodes[0])("label",e.labels[0])("link",e.links[0])("linkNode",e.linkNodes[0])}}function wMe(t,i){if(t&1&&F(0,"app-edit-config-action",10),t&2){let e=b();x("controller",e.controller)("project",e.project)("node",e.nodes[0])}}function MMe(t,i){if(t&1&&F(0,"app-export-config-action",4),t&2){let e=b();x("controller",e.controller)("node",e.nodes[0])}}function kMe(t,i){if(t&1&&F(0,"app-import-config-action",4),t&2){let e=b();x("controller",e.controller)("node",e.nodes[0])}}function TMe(t,i){if(t&1&&F(0,"app-idle-pc-action",4),t&2){let e=b();x("controller",e.controller)("node",e.nodes[0])}}function EMe(t,i){if(t&1&&F(0,"app-auto-idle-pc-action",4),t&2){let e=b();x("controller",e.controller)("node",e.nodes[0])}}function DMe(t,i){if(t&1&&F(0,"app-move-layer-up-action",11),t&2){let e=b();x("controller",e.controller)("nodes",e.nodes)("drawings",e.drawings)}}function PMe(t,i){if(t&1&&F(0,"app-move-layer-down-action",11),t&2){let e=b();x("controller",e.controller)("nodes",e.nodes)("drawings",e.drawings)}}function IMe(t,i){if(t&1&&F(0,"app-bring-to-front-action",11),t&2){let e=b();x("controller",e.controller)("nodes",e.nodes)("drawings",e.drawings)}}function AMe(t,i){if(t&1&&F(0,"app-start-capture-action",12),t&2){let e=b();x("controller",e.controller)("project",e.project)("link",e.links[0])}}function OMe(t,i){if(t&1&&F(0,"app-stop-capture-action",13),t&2){let e=b();x("controller",e.controller)("link",e.links[0])}}function NMe(t,i){if(t&1&&F(0,"app-start-capture-on-started-link-action",12),t&2){let e=b();x("controller",e.controller)("project",e.project)("link",e.links[0])}}function RMe(t,i){if(t&1){let e=j();F(0,"app-start-web-wireshark-action",12),s(1,"app-start-web-wireshark-inline-action",16),v("openWebWiresharkInline",function(o){D(e);let r=b();return P(r.onOpenWebWiresharkInline(o))}),l()}if(t&2){let e=b();x("controller",e.controller)("project",e.project)("link",e.links[0]),u(),x("controller",e.controller)("project",e.project)("link",e.links[0])}}function FMe(t,i){if(t&1&&F(0,"app-packet-filters-action",12),t&2){let e=b();x("controller",e.controller)("project",e.project)("link",e.links[0])}}function LMe(t,i){if(t&1&&F(0,"app-resume-link-action",13),t&2){let e=b();x("controller",e.controller)("link",e.links[0])}}function BMe(t,i){if(t&1&&F(0,"app-suspend-link-action",13),t&2){let e=b();x("controller",e.controller)("link",e.links[0])}}function VMe(t,i){if(t&1&&F(0,"app-reset-link-action",13),t&2){let e=b();x("controller",e.controller)("link",e.links[0])}}function zMe(t,i){if(t&1&&F(0,"app-edit-link-style-action",12),t&2){let e=b();x("controller",e.controller)("project",e.project)("link",e.links[0])}}function jMe(t,i){if(t&1&&F(0,"app-lock-action",11),t&2){let e=b();x("controller",e.controller)("nodes",e.nodes)("drawings",e.drawings)}}function $Me(t,i){if(t&1&&F(0,"app-delete-action",14),t&2){let e=b();x("controller",e.controller)("nodes",e.nodes)("drawings",e.drawings)("links",e.links)}}function HMe(t,i){if(t&1&&F(0,"app-align-horizontally-action",5),t&2){let e=b();x("controller",e.controller)("nodes",e.nodes)}}function UMe(t,i){if(t&1&&F(0,"app-align-vertically-action",5),t&2){let e=b();x("controller",e.controller)("nodes",e.nodes)}}var c_=(()=>{class t{sanitizer=f(lr);changeDetector=f(K);projectService=f(Fi);project;controller;openWebWiresharkInline=new ve;openWebConsoleInline=new ve;contextMenu;topPosition;leftPosition;drawings=[];nodes=[];labels=[];links=[];linkNodes=[];hasTextCapabilities=!1;isBundledController=!1;constructor(){}ngOnInit(){this.setPosition(0,0),this.isBundledController=this.controller.location==="bundled"}setPosition(e,n){this.topPosition=this.sanitizer.bypassSecurityTrustStyle(e+"px"),this.leftPosition=this.sanitizer.bypassSecurityTrustStyle(n+"px"),this.changeDetector.detectChanges()}openMenuForDrawing(e,n,o){this.resetCapabilities(),this.hasTextCapabilities=e.element instanceof Es,this.drawings=[e],this.setPosition(n,o),this.contextMenu.openMenu()}openMenuForNode(e,n,o){this.resetCapabilities(),this.nodes=[e],this.setPosition(n,o),this.contextMenu.openMenu()}openMenuForLabel(e,n,o,r){this.resetCapabilities(),this.labels=[e],this.nodes=[n],this.setPosition(o,r),this.contextMenu.openMenu()}openMenuForInterfaceLabel(e,n,o,r){this.resetCapabilities(),this.linkNodes=[e],this.links=[n],this.setPosition(o,r),this.contextMenu.openMenu()}openMenuForListOfElements(e,n,o,r,a,c){this.resetCapabilities(),this.drawings=e,this.nodes=n,this.labels=o,this.links=r,this.setPosition(a,c),this.contextMenu.openMenu()}resetCapabilities(){this.drawings=[],this.nodes=[],this.labels=[],this.linkNodes=[],this.links=[],this.hasTextCapabilities=!1}onOpenWebWiresharkInline(e){this.openWebWiresharkInline.emit(e)}onOpenWebConsoleInline(e){this.openWebConsoleInline.emit(e)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-context-menu"]],viewQuery:function(n,o){if(n&1&&gn(kn,5),n&2){let r;gt(r=_t())&&(o.contextMenu=r.first)}},inputs:{project:"project",controller:"controller"},outputs:{openWebWiresharkInline:"openWebWiresharkInline",openWebConsoleInline:"openWebConsoleInline"},decls:41,vars:42,consts:[["contextMenu","matMenu"],[1,"context-menu"],[3,"matMenuTriggerFor"],[1,"context-menu-items"],[3,"controller","node"],[3,"controller","nodes"],[3,"controller","project","nodes"],[3,"controller","project","nodes","drawings"],[3,"controller","project","drawing"],[3,"controller","project","drawing","node","label","link","linkNode"],[3,"controller","project","node"],[3,"controller","nodes","drawings"],[3,"controller","project","link"],[3,"controller","link"],[3,"controller","nodes","drawings","links"],[3,"openWebConsoleInline","controller","project","nodes"],[3,"openWebWiresharkInline","controller","project","link"]],template:function(n,o){if(n&1&&(s(0,"div",1),F(1,"span",2),s(2,"mat-menu",3,0),A(4,lMe,1,2,"app-show-node-action",4),A(5,cMe,1,2,"app-config-node-action",4),A(6,dMe,1,2,"app-start-node-action",5),A(7,mMe,1,2,"app-suspend-node-action",5),A(8,pMe,1,2,"app-stop-node-action",5),A(9,uMe,1,2,"app-reload-node-action",5),A(10,hMe,1,3,"app-http-console-action",6),A(11,fMe,1,2,"app-http-console-new-tab-action",5),A(12,gMe,1,2,"app-console-device-action-browser",4),A(13,_Me,1,2,"app-isolate-node-action",4),A(14,vMe,1,2,"app-unisolate-node-action",4),A(15,bMe,1,2,"app-change-hostname-action",4),A(16,CMe,1,2,"app-change-symbol-action",4),A(17,xMe,1,4,"app-duplicate-action",7),A(18,yMe,1,3,"app-edit-style-action",8),A(19,SMe,1,7,"app-edit-text-action",9),A(20,wMe,1,3,"app-edit-config-action",10),A(21,MMe,1,2,"app-export-config-action",4),A(22,kMe,1,2,"app-import-config-action",4),A(23,TMe,1,2,"app-idle-pc-action",4),A(24,EMe,1,2,"app-auto-idle-pc-action",4),A(25,DMe,1,3,"app-move-layer-up-action",11),A(26,PMe,1,3,"app-move-layer-down-action",11),A(27,IMe,1,3,"app-bring-to-front-action",11),A(28,AMe,1,3,"app-start-capture-action",12),A(29,OMe,1,2,"app-stop-capture-action",13),A(30,NMe,1,3,"app-start-capture-on-started-link-action",12),A(31,RMe,2,6),A(32,FMe,1,3,"app-packet-filters-action",12),A(33,LMe,1,2,"app-resume-link-action",13),A(34,BMe,1,2,"app-suspend-link-action",13),A(35,VMe,1,2,"app-reset-link-action",13),A(36,zMe,1,3,"app-edit-link-style-action",12),A(37,jMe,1,3,"app-lock-action",11),A(38,$Me,1,4,"app-delete-action",14),A(39,HMe,1,2,"app-align-horizontally-action",5),A(40,UMe,1,2,"app-align-vertically-action",5),l()()),n&2){let r=Re(3);yn("left",o.leftPosition)("top",o.topPosition),u(),x("matMenuTriggerFor",r),u(3),O(o.nodes.length===1?4:-1),u(),O(o.nodes.length===1?5:-1),u(),O(o.nodes.length?6:-1),u(),O(o.nodes.length?7:-1),u(),O(o.nodes.length?8:-1),u(),O(o.nodes.length?9:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.nodes.length>0?10:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.nodes.length>0?11:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.nodes.length===1?12:-1),u(),O(o.nodes.length===1?13:-1),u(),O(o.nodes.length===1?14:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.nodes.length===1?15:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.nodes.length===1?16:-1),u(),O(o.drawings.length>0||o.nodes.length>0?17:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.drawings.length===1&&!o.hasTextCapabilities?18:-1),u(),O(!o.projectService.isReadOnly(o.project)&&(o.drawings.length===1&&o.hasTextCapabilities&&o.labels.length===0&&o.linkNodes.length===0||o.labels.length===1&&o.linkNodes.length===0&&o.drawings.length===0||o.linkNodes.length===1&&o.labels.length===0&&o.drawings.length===0)?19:-1),u(),O(o.nodes.length===1&&o.nodes[0].node_type==="vpcs"?20:-1),u(),O(o.nodes.length===1&&(o.nodes[0].node_type==="vpcs"||o.nodes[0].node_type==="iou"||o.nodes[0].node_type==="dynamips")?21:-1),u(),O(o.nodes.length===1&&(o.nodes[0].node_type==="vpcs"||o.nodes[0].node_type==="iou"||o.nodes[0].node_type==="dynamips")?22:-1),u(),O(o.nodes.length===1&&o.nodes[0].node_type==="dynamips"?23:-1),u(),O(o.nodes.length===1&&o.nodes[0].node_type==="dynamips"?24:-1),u(),O(!o.projectService.isReadOnly(o.project)&&(o.drawings.length||o.nodes.length)?25:-1),u(),O(!o.projectService.isReadOnly(o.project)&&(o.drawings.length||o.nodes.length)?26:-1),u(),O(!o.projectService.isReadOnly(o.project)&&(o.drawings.length||o.nodes.length)?27:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.drawings.length===0&&o.nodes.length===0&&o.links.length===1?28:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.drawings.length===0&&o.nodes.length===0&&o.links.length===1&&o.linkNodes.length===0?29:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.drawings.length===0&&o.nodes.length===0&&o.links.length===1&&o.linkNodes.length===0?30:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.drawings.length===0&&o.nodes.length===0&&o.links.length===1&&o.linkNodes.length===0?31:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.drawings.length===0&&o.nodes.length===0&&o.links.length===1&&o.linkNodes.length===0?32:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.drawings.length===0&&o.nodes.length===0&&o.links.length===1&&o.linkNodes.length===0?33:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.drawings.length===0&&o.nodes.length===0&&o.links.length===1&&o.linkNodes.length===0?34:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.drawings.length===0&&o.nodes.length===0&&o.links.length===1&&o.linkNodes.length===0?35:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.drawings.length===0&&o.nodes.length===0&&o.links.length===1&&o.linkNodes.length===0?36:-1),u(),O(!o.projectService.isReadOnly(o.project)&&(o.drawings.length>0||o.nodes.length>0)?37:-1),u(),O(!o.projectService.isReadOnly(o.project)&&(o.drawings.length>0||o.nodes.length>0||o.links.length>0)&&o.linkNodes.length===0?38:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.nodes.length>1?39:-1),u(),O(!o.projectService.isReadOnly(o.project)&&o.nodes.length>1?40:-1)}},dependencies:[Z,Qe,Fn,kn,sM,kM,TM,EM,DM,PM,IM,AM,o_,FM,LM,VM,jM,$M,UM,WM,XM,QM,YM,ZM,JM,ek,tk,nk,ok,rk,ak,eU,tU,ck,dk,mk,pk,hk,fk,gk,_k,vk],styles:[".context-menu[_ngcontent-%COMP%]{position:fixed;min-height:0}"],changeDetection:0})}return t})();var bk=(()=>{class t{fontBBCalculator;themeService=f(yi);MARGIN_BETWEEN_NODE_AND_LABEL=8;constructor(e){this.fontBBCalculator=e}fix(e){let n=this.themeService.getCanvasLabelColor();e.label.style=`font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: ${n};fill-opacity: 1.0;`;let o=this.fontBBCalculator.calculate(e.label.text,e.label.style);return e.label.x=e.width/2-o.width/2,e.label.y=-o.height-this.MARGIN_BETWEEN_NODE_AND_LABEL,e}static \u0275fac=function(n){return new(n||t)(ge(rd))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function GMe(t,i){if(t&1&&(s(0,"mat-option",17),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function WMe(t,i){if(t&1){let e=j();s(0,"mat-form-field",14)(1,"mat-select",16,0),v("selectionChange",function(o){D(e);let r=b(2);return P(r._changePageSize(o.value))}),J(3,GMe,2,2,"mat-option",17,Fe),l(),s(5,"div",18),v("click",function(){D(e);let o=Re(2);return P(o.open())}),l()()}if(t&2){let e=b(2);x("appearance",e._formFieldAppearance)("color",e.color),u(),x("value",e.pageSize)("disabled",e.disabled),P5("aria-labelledby",e._pageSizeLabelId),x("panelClass",e.selectConfig.panelClass||"")("disableOptionCentering",e.selectConfig.disableOptionCentering),u(2),ee(e._displayedPageSizeOptions)}}function qMe(t,i){if(t&1&&(s(0,"div",15),d(1),l()),t&2){let e=b(2);u(),U(e.pageSize)}}function XMe(t,i){if(t&1&&(s(0,"div",3)(1,"div",13),d(2),l(),A(3,WMe,6,7,"mat-form-field",14),A(4,qMe,2,1,"div",15),l()),t&2){let e=b();u(),It("id",e._pageSizeLabelId),u(),X(" ",e._intl.itemsPerPageLabel," "),u(),O(e._displayedPageSizeOptions.length>1?3:-1),u(),O(e._displayedPageSizeOptions.length<=1?4:-1)}}function QMe(t,i){if(t&1){let e=j();s(0,"button",19),v("click",function(){D(e);let o=b();return P(o._buttonClicked(0,o._previousButtonsDisabled()))}),Vn(),s(1,"svg",8),F(2,"path",20),l()()}if(t&2){let e=b();x("matTooltip",e._intl.firstPageLabel)("matTooltipDisabled",e._previousButtonsDisabled())("disabled",e._previousButtonsDisabled())("tabindex",e._previousButtonsDisabled()?-1:null),It("aria-label",e._intl.firstPageLabel)}}function YMe(t,i){if(t&1){let e=j();s(0,"button",21),v("click",function(){D(e);let o=b();return P(o._buttonClicked(o.getNumberOfPages()-1,o._nextButtonsDisabled()))}),Vn(),s(1,"svg",8),F(2,"path",22),l()()}if(t&2){let e=b();x("matTooltip",e._intl.lastPageLabel)("matTooltipDisabled",e._nextButtonsDisabled())("disabled",e._nextButtonsDisabled())("tabindex",e._nextButtonsDisabled()?-1:null),It("aria-label",e._intl.lastPageLabel)}}var KMe=(()=>{class t{changes=new Le;itemsPerPageLabel="Items per page:";nextPageLabel="Next page";previousPageLabel="Previous page";firstPageLabel="First page";lastPageLabel="Last page";getRangeLabel=(e,n,o)=>{if(o==0||n==0)return`0 of ${o}`;o=Math.max(o,0);let r=e*n,a=r<o?Math.min(r+n,o):r+n;return`${r+1} \u2013 ${a} of ${o}`};static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ZMe=50;var JMe=new kt("MAT_PAGINATOR_DEFAULT_OPTIONS"),Tr=(()=>{class t{_intl=f(KMe);_changeDetectorRef=f(K);_formFieldAppearance;_pageSizeLabelId=f(Oi).getId("mat-paginator-page-size-label-");_intlChanges;_isInitialized=!1;_initializedStream=new bd(1);color;get pageIndex(){return this._pageIndex}set pageIndex(e){this._pageIndex=Math.max(e||0,0),this._changeDetectorRef.markForCheck()}_pageIndex=0;get length(){return this._length}set length(e){this._length=e||0,this._changeDetectorRef.markForCheck()}_length=0;get pageSize(){return this._pageSize}set pageSize(e){this._pageSize=Math.max(e||0,0),this._updateDisplayedPageSizeOptions()}_pageSize;get pageSizeOptions(){return this._pageSizeOptions}set pageSizeOptions(e){this._pageSizeOptions=(e||[]).map(n=>io(n,0)),this._updateDisplayedPageSizeOptions()}_pageSizeOptions=[];hidePageSize=!1;showFirstLastButtons=!1;selectConfig={};disabled=!1;page=new ve;_displayedPageSizeOptions;initialized=this._initializedStream;constructor(){let e=this._intl,n=f(JMe,{optional:!0});if(this._intlChanges=e.changes.subscribe(()=>this._changeDetectorRef.markForCheck()),n){let{pageSize:o,pageSizeOptions:r,hidePageSize:a,showFirstLastButtons:c}=n;o!=null&&(this._pageSize=o),r!=null&&(this._pageSizeOptions=r),a!=null&&(this.hidePageSize=a),c!=null&&(this.showFirstLastButtons=c)}this._formFieldAppearance=n?.formFieldAppearance||"outline"}ngOnInit(){this._isInitialized=!0,this._updateDisplayedPageSizeOptions(),this._initializedStream.next()}ngOnDestroy(){this._initializedStream.complete(),this._intlChanges.unsubscribe()}nextPage(){this.hasNextPage()&&this._navigate(this.pageIndex+1)}previousPage(){this.hasPreviousPage()&&this._navigate(this.pageIndex-1)}firstPage(){this.hasPreviousPage()&&this._navigate(0)}lastPage(){this.hasNextPage()&&this._navigate(this.getNumberOfPages()-1)}hasPreviousPage(){return this.pageIndex>=1&&this.pageSize!=0}hasNextPage(){let e=this.getNumberOfPages()-1;return this.pageIndex<e&&this.pageSize!=0}getNumberOfPages(){return this.pageSize?Math.ceil(this.length/this.pageSize):0}_changePageSize(e){let n=this.pageIndex*this.pageSize,o=this.pageIndex;this.pageIndex=Math.floor(n/e)||0,this.pageSize=e,this._emitPageEvent(o)}_nextButtonsDisabled(){return this.disabled||!this.hasNextPage()}_previousButtonsDisabled(){return this.disabled||!this.hasPreviousPage()}_updateDisplayedPageSizeOptions(){this._isInitialized&&(this.pageSize||(this._pageSize=this.pageSizeOptions.length!=0?this.pageSizeOptions[0]:ZMe),this._displayedPageSizeOptions=this.pageSizeOptions.slice(),this._displayedPageSizeOptions.indexOf(this.pageSize)===-1&&this._displayedPageSizeOptions.push(this.pageSize),this._displayedPageSizeOptions.sort((e,n)=>e-n),this._changeDetectorRef.markForCheck())}_emitPageEvent(e){this.page.emit({previousPageIndex:e,pageIndex:this.pageIndex,pageSize:this.pageSize,length:this.length})}_navigate(e){let n=this.pageIndex;e!==n&&(this.pageIndex=e,this._emitPageEvent(n))}_buttonClicked(e,n){n||this._navigate(e)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-paginator"]],hostAttrs:["role","group",1,"mat-mdc-paginator"],inputs:{color:"color",pageIndex:[2,"pageIndex","pageIndex",io],length:[2,"length","length",io],pageSize:[2,"pageSize","pageSize",io],pageSizeOptions:"pageSizeOptions",hidePageSize:[2,"hidePageSize","hidePageSize",dt],showFirstLastButtons:[2,"showFirstLastButtons","showFirstLastButtons",dt],selectConfig:"selectConfig",disabled:[2,"disabled","disabled",dt]},outputs:{page:"page"},exportAs:["matPaginator"],decls:14,vars:14,consts:[["selectRef",""],[1,"mat-mdc-paginator-outer-container"],[1,"mat-mdc-paginator-container"],[1,"mat-mdc-paginator-page-size"],[1,"mat-mdc-paginator-range-actions"],["aria-atomic","true","aria-live","polite","role","status",1,"mat-mdc-paginator-range-label"],["matIconButton","","type","button","matTooltipPosition","above","disabledInteractive","",1,"mat-mdc-paginator-navigation-first",3,"matTooltip","matTooltipDisabled","disabled","tabindex"],["matIconButton","","type","button","matTooltipPosition","above","disabledInteractive","",1,"mat-mdc-paginator-navigation-previous",3,"click","matTooltip","matTooltipDisabled","disabled","tabindex"],["viewBox","0 0 24 24","focusable","false","aria-hidden","true",1,"mat-mdc-paginator-icon"],["d","M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"],["matIconButton","","type","button","matTooltipPosition","above","disabledInteractive","",1,"mat-mdc-paginator-navigation-next",3,"click","matTooltip","matTooltipDisabled","disabled","tabindex"],["d","M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"],["matIconButton","","type","button","matTooltipPosition","above","disabledInteractive","",1,"mat-mdc-paginator-navigation-last",3,"matTooltip","matTooltipDisabled","disabled","tabindex"],["aria-hidden","true",1,"mat-mdc-paginator-page-size-label"],[1,"mat-mdc-paginator-page-size-select",3,"appearance","color"],[1,"mat-mdc-paginator-page-size-value"],["hideSingleSelectionIndicator","",3,"selectionChange","value","disabled","aria-labelledby","panelClass","disableOptionCentering"],[3,"value"],[1,"mat-mdc-paginator-touch-target",3,"click"],["matIconButton","","type","button","matTooltipPosition","above","disabledInteractive","",1,"mat-mdc-paginator-navigation-first",3,"click","matTooltip","matTooltipDisabled","disabled","tabindex"],["d","M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z"],["matIconButton","","type","button","matTooltipPosition","above","disabledInteractive","",1,"mat-mdc-paginator-navigation-last",3,"click","matTooltip","matTooltipDisabled","disabled","tabindex"],["d","M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"div",2),A(2,XMe,5,4,"div",3),s(3,"div",4)(4,"div",5),d(5),l(),A(6,QMe,3,5,"button",6),s(7,"button",7),v("click",function(){return o._buttonClicked(o.pageIndex-1,o._previousButtonsDisabled())}),Vn(),s(8,"svg",8),F(9,"path",9),l()(),vr(),s(10,"button",10),v("click",function(){return o._buttonClicked(o.pageIndex+1,o._nextButtonsDisabled())}),Vn(),s(11,"svg",8),F(12,"path",11),l()(),A(13,YMe,3,5,"button",12),l()()()),n&2&&(u(2),O(o.hidePageSize?-1:2),u(3),X(" ",o._intl.getRangeLabel(o.pageIndex,o.pageSize,o.length)," "),u(),O(o.showFirstLastButtons?6:-1),u(),x("matTooltip",o._intl.previousPageLabel)("matTooltipDisabled",o._previousButtonsDisabled())("disabled",o._previousButtonsDisabled())("tabindex",o._previousButtonsDisabled()?-1:null),It("aria-label",o._intl.previousPageLabel),u(3),x("matTooltip",o._intl.nextPageLabel)("matTooltipDisabled",o._nextButtonsDisabled())("disabled",o._nextButtonsDisabled())("tabindex",o._nextButtonsDisabled()?-1:null),It("aria-label",o._intl.nextPageLabel),u(3),O(o.showFirstLastButtons?13:-1))},dependencies:[ke,At,St,ze,Kt],styles:[`.mat-mdc-paginator{display:block;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-paginator-container-text-color, var(--mat-sys-on-surface));background-color:var(--mat-paginator-container-background-color, var(--mat-sys-surface));font-family:var(--mat-paginator-container-text-font, var(--mat-sys-body-small-font));line-height:var(--mat-paginator-container-text-line-height, var(--mat-sys-body-small-line-height));font-size:var(--mat-paginator-container-text-size, var(--mat-sys-body-small-size));font-weight:var(--mat-paginator-container-text-weight, var(--mat-sys-body-small-weight));letter-spacing:var(--mat-paginator-container-text-tracking, var(--mat-sys-body-small-tracking));--mat-form-field-container-height: var(--mat-paginator-form-field-container-height, 40px);--mat-form-field-container-vertical-padding: var(--mat-paginator-form-field-container-vertical-padding, 8px)}.mat-mdc-paginator .mat-mdc-select-value{font-size:var(--mat-paginator-select-trigger-text-size, var(--mat-sys-body-small-size))}.mat-mdc-paginator .mat-mdc-form-field-subscript-wrapper{display:none}.mat-mdc-paginator .mat-mdc-select{line-height:1.5}.mat-mdc-paginator-outer-container{display:flex}.mat-mdc-paginator-container{display:flex;align-items:center;justify-content:flex-end;padding:0 8px;flex-wrap:wrap;width:100%;min-height:var(--mat-paginator-container-size, 56px)}.mat-mdc-paginator-page-size{display:flex;align-items:baseline;margin-right:8px}[dir=rtl] .mat-mdc-paginator-page-size{margin-right:0;margin-left:8px}.mat-mdc-paginator-page-size-label{margin:0 4px}.mat-mdc-paginator-page-size-select{margin:0 4px;width:var(--mat-paginator-page-size-select-width, 84px)}.mat-mdc-paginator-range-label{margin:0 32px 0 24px}.mat-mdc-paginator-range-actions{display:flex;align-items:center}.mat-mdc-paginator-icon{display:inline-block;width:28px;fill:var(--mat-paginator-enabled-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button[aria-disabled] .mat-mdc-paginator-icon{fill:var(--mat-paginator-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}[dir=rtl] .mat-mdc-paginator-icon{transform:rotate(180deg)}@media(forced-colors: active){.mat-mdc-icon-button[aria-disabled] .mat-mdc-paginator-icon,.mat-mdc-paginator-icon{fill:currentColor}.mat-mdc-paginator-range-actions .mat-mdc-icon-button{outline:solid 1px}.mat-mdc-paginator-range-actions .mat-mdc-icon-button[aria-disabled]{color:GrayText}}.mat-mdc-paginator-touch-target{display:var(--mat-paginator-touch-target-display, block);position:absolute;top:50%;left:50%;width:var(--mat-paginator-page-size-select-width, 84px);height:var(--mat-paginator-page-size-select-touch-target-height, 48px);background-color:rgba(0,0,0,0);transform:translate(-50%, -50%);cursor:pointer}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),d_=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[$,Mt,Gt,Tr]})}return t})();var eke=["mat-sort-header",""],tke=["*",[["","matSortHeaderIcon",""]]],nke=["*","[matSortHeaderIcon]"];function ike(t,i){t&1&&(Vn(),_o(0,"svg",3),jr(1,"path",4),wo())}function oke(t,i){t&1&&(_o(0,"div",2),Yt(1,1,null,ike,2,0),wo())}var iU=new kt("MAT_SORT_DEFAULT_OPTIONS"),Oo=(()=>{class t{_defaultOptions;_initializedStream=new bd(1);sortables=new Map;_stateChanges=new Le;active;start="asc";get direction(){return this._direction}set direction(e){this._direction=e}_direction="";disableClear;disabled=!1;sortChange=new ve;initialized=this._initializedStream;constructor(e){this._defaultOptions=e}register(e){this.sortables.set(e.id,e)}deregister(e){this.sortables.delete(e.id)}sort(e){this.active!=e.id?(this.active=e.id,this.direction=e.start?e.start:this.start):this.direction=this.getNextSortDirection(e),this.sortChange.emit({active:this.active,direction:this.direction})}getNextSortDirection(e){if(!e)return"";let n=e?.disableClear??this.disableClear??!!this._defaultOptions?.disableClear,o=rke(e.start||this.start,n),r=o.indexOf(this.direction)+1;return r>=o.length&&(r=0),o[r]}ngOnInit(){this._initializedStream.next()}ngOnChanges(){this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete(),this._initializedStream.complete()}static \u0275fac=function(n){return new(n||t)(st(iU,8))};static \u0275dir=ft({type:t,selectors:[["","matSort",""]],hostAttrs:[1,"mat-sort"],inputs:{active:[0,"matSortActive","active"],start:[0,"matSortStart","start"],direction:[0,"matSortDirection","direction"],disableClear:[2,"matSortDisableClear","disableClear",dt],disabled:[2,"matSortDisabled","disabled",dt]},outputs:{sortChange:"matSortChange"},exportAs:["matSort"],features:[un]})}return t})();function rke(t,i){let e=["asc","desc"];return t=="desc"&&e.reverse(),i||e.push(""),e}var ma=(()=>{class t{_sort=f(Oo,{optional:!0});_columnDef=f(qm,{optional:!0});_changeDetectorRef=f(K);_focusMonitor=f(xr);_elementRef=f(Lt);_ariaDescriber=f(bR,{optional:!0});_renderChanges;_animationsDisabled=Qi();_recentlyCleared=me(null);_sortButton;id;arrowPosition="after";start;disabled=!1;get sortActionDescription(){return this._sortActionDescription}set sortActionDescription(e){this._updateSortActionDescription(e)}_sortActionDescription="Sort";disableClear;constructor(){f(Go).load(yr);let e=f(iU,{optional:!0});this._sort,e?.arrowPosition&&(this.arrowPosition=e?.arrowPosition)}ngOnInit(){!this.id&&this._columnDef&&(this.id=this._columnDef.name),this._sort.register(this),this._renderChanges=Dn(this._sort._stateChanges,this._sort.sortChange).subscribe(()=>this._changeDetectorRef.markForCheck()),this._sortButton=this._elementRef.nativeElement.querySelector(".mat-sort-header-container"),this._updateSortActionDescription(this._sortActionDescription)}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(()=>{Promise.resolve().then(()=>this._recentlyCleared.set(null))})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._sort.deregister(this),this._renderChanges?.unsubscribe(),this._sortButton&&this._ariaDescriber?.removeDescription(this._sortButton,this._sortActionDescription)}_toggleOnInteraction(){if(!this._isDisabled()){let e=this._isSorted(),n=this._sort.direction;this._sort.sort(this),this._recentlyCleared.set(e&&!this._isSorted()?n:null)}}_handleKeydown(e){(e.keyCode===32||e.keyCode===13)&&(e.preventDefault(),this._toggleOnInteraction())}_isSorted(){return this._sort.active==this.id&&(this._sort.direction==="asc"||this._sort.direction==="desc")}_isDisabled(){return this._sort.disabled||this.disabled}_getAriaSortAttribute(){return this._isSorted()?this._sort.direction=="asc"?"ascending":"descending":"none"}_renderArrow(){return!this._isDisabled()||this._isSorted()}_updateSortActionDescription(e){this._sortButton&&(this._ariaDescriber?.removeDescription(this._sortButton,this._sortActionDescription),this._ariaDescriber?.describe(this._sortButton,e)),this._sortActionDescription=e}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["","mat-sort-header",""]],hostAttrs:[1,"mat-sort-header"],hostVars:3,hostBindings:function(n,o){n&1&&v("click",function(){return o._toggleOnInteraction()})("keydown",function(a){return o._handleKeydown(a)})("mouseleave",function(){return o._recentlyCleared.set(null)}),n&2&&(It("aria-sort",o._getAriaSortAttribute()),je("mat-sort-header-disabled",o._isDisabled()))},inputs:{id:[0,"mat-sort-header","id"],arrowPosition:"arrowPosition",start:"start",disabled:[2,"disabled","disabled",dt],sortActionDescription:"sortActionDescription",disableClear:[2,"disableClear","disableClear",dt]},exportAs:["matSortHeader"],attrs:eke,ngContentSelectors:nke,decls:4,vars:17,consts:[[1,"mat-sort-header-container","mat-focus-indicator"],[1,"mat-sort-header-content"],[1,"mat-sort-header-arrow"],["viewBox","0 -960 960 960","focusable","false","aria-hidden","true"],["d","M440-240v-368L296-464l-56-56 240-240 240 240-56 56-144-144v368h-80Z"]],template:function(n,o){n&1&&(En(tke),_o(0,"div",0)(1,"div",1),Yt(2),wo(),A(3,oke,3,0,"div",2),wo()),n&2&&(je("mat-sort-header-sorted",o._isSorted())("mat-sort-header-position-before",o.arrowPosition==="before")("mat-sort-header-descending",o._sort.direction==="desc")("mat-sort-header-ascending",o._sort.direction==="asc")("mat-sort-header-recently-cleared-ascending",o._recentlyCleared()==="asc")("mat-sort-header-recently-cleared-descending",o._recentlyCleared()==="desc")("mat-sort-header-animations-disabled",o._animationsDisabled),It("tabindex",o._isDisabled()?null:0)("role",o._isDisabled()?null:"button"),u(3),O(o._renderArrow()?3:-1))},styles:[`.mat-sort-header{cursor:pointer}.mat-sort-header-disabled{cursor:default}.mat-sort-header-container{display:flex;align-items:center;letter-spacing:normal;outline:0}[mat-sort-header].cdk-keyboard-focused .mat-sort-header-container,[mat-sort-header].cdk-program-focused .mat-sort-header-container{border-bottom:solid 1px currentColor}.mat-sort-header-container::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-sort-header-content{display:flex;align-items:center}.mat-sort-header-position-before{flex-direction:row-reverse}@keyframes _mat-sort-header-recently-cleared-ascending{from{transform:translateY(0);opacity:1}to{transform:translateY(-25%);opacity:0}}@keyframes _mat-sort-header-recently-cleared-descending{from{transform:translateY(0) rotate(180deg);opacity:1}to{transform:translateY(25%) rotate(180deg);opacity:0}}.mat-sort-header-arrow{height:12px;width:12px;position:relative;transition:transform 225ms cubic-bezier(0.4, 0, 0.2, 1),opacity 225ms cubic-bezier(0.4, 0, 0.2, 1);opacity:0;overflow:visible;color:var(--mat-sort-arrow-color, var(--mat-sys-on-surface))}.mat-sort-header.cdk-keyboard-focused .mat-sort-header-arrow,.mat-sort-header.cdk-program-focused .mat-sort-header-arrow,.mat-sort-header:hover .mat-sort-header-arrow{opacity:.54}.mat-sort-header .mat-sort-header-sorted .mat-sort-header-arrow{opacity:1}.mat-sort-header-descending .mat-sort-header-arrow{transform:rotate(180deg)}.mat-sort-header-recently-cleared-ascending .mat-sort-header-arrow{transform:translateY(-25%)}.mat-sort-header-recently-cleared-ascending .mat-sort-header-arrow{transition:none;animation:_mat-sort-header-recently-cleared-ascending 225ms cubic-bezier(0.4, 0, 0.2, 1) forwards}.mat-sort-header-recently-cleared-descending .mat-sort-header-arrow{transition:none;animation:_mat-sort-header-recently-cleared-descending 225ms cubic-bezier(0.4, 0, 0.2, 1) forwards}.mat-sort-header-animations-disabled .mat-sort-header-arrow{transition-duration:0ms;animation-duration:0ms}.mat-sort-header-arrow>svg,.mat-sort-header-arrow [matSortHeaderIcon]{width:24px;height:24px;fill:currentColor;position:absolute;top:50%;left:50%;margin:-12px 0 0 -12px;transform:translateZ(0)}.mat-sort-header-arrow,[dir=rtl] .mat-sort-header-position-before .mat-sort-header-arrow{margin:0 0 0 6px}.mat-sort-header-position-before .mat-sort-header-arrow,[dir=rtl] .mat-sort-header-arrow{margin:0 6px 0 0}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),zr=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[wn]})}return t})();var lU=nl(aU());var aC=(()=>{class t{dialogRef=f(Pe);confirmationMessage;onNoClick(){this.dialogRef.close(!1)}onYesClick(){this.dialogRef.close(!0)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-information-dialog"]],decls:8,vars:1,consts:[[1,"information-dialog__content"],[1,"information-dialog__message"],["mat-dialog-actions",""],["mat-button","",1,"cancel-button",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",1,"confirm-button",3,"click"]],template:function(n,o){n&1&&(s(0,"mat-dialog-content",0)(1,"p",1),d(2),l()(),s(3,"div",2)(4,"button",3),v("click",function(){return o.onNoClick()}),d(5,"No"),l(),s(6,"button",4),v("click",function(){return o.onYesClick()}),d(7," Yes "),l()()),n&2&&(u(2),U(o.confirmationMessage))},dependencies:[Ce,Be,Wt,$,le],styles:[".information-dialog__content[_ngcontent-%COMP%]{padding:16px 24px 8px}.information-dialog__message[_ngcontent-%COMP%]{margin:0;color:var(--mat-sys-on-surface-variant);font-size:14px;line-height:1.6}"],changeDetection:0})}return t})();var m_=class{adapters;builtin;category;compute_id;console_auto_start;console_http_path;console_http_port;console_resolution;console_type;aux_type;mac_address;custom_adapters;default_name_format;environment;extra_hosts;image;name;start_command;symbol;template_id;template_type;usage;tags};var Ck=(()=>{class t{httpController;constructor(e){this.httpController=e}getAppliances(e){return this.httpController.get(e,"/appliances")}getAppliance(e,n){return this.httpController.get(e,n)}getUploadPath(e,n){return`${e.protocol}//${e.host}:${e.port}/${Ai.current_version}/images/upload/${n}`}updateAppliances(e){return this.httpController.get(e,"/appliances?update=yes")}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function ake(t,i){if(t&1&&(s(0,"div"),d(1),l(),s(2,"div"),d(3),l()),t&2){let e=b();u(),X("Adapters: ",e.appliance.qemu.adapters),u(2),X("Console type: ",e.appliance.qemu.console_type)}}var xk=(()=>{class t{data;dialogRef=f(Pe);appliance;constructor(e){this.data=e}onNoClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-appliance-info-dialog"]],decls:14,vars:5,consts:[[1,"title-container"],["mat-dialog-title",""],["mat-dialog-content",""],["mat-dialog-actions",""],["mat-button","","tabindex","-1","color","accent",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"h1",1),d(2),l()(),s(3,"div",2)(4,"div"),d(5),l(),s(6,"div"),d(7),l(),s(8,"div"),d(9),l(),A(10,ake,4,2),l(),s(11,"div",3)(12,"button",4),v("click",function(){return o.onNoClick()}),d(13,"Close"),l()()),n&2&&(u(2),U(o.appliance.name),u(3),X("Vendor: ",o.appliance.vendor_name),u(2),X("Status: ",o.appliance.status),u(2),X("Maintainer: ",o.appliance.maintainer),u(),O(o.appliance.qemu?10:-1))},dependencies:[Ce,Ve,Be,Wt,$,le,Si],encapsulation:2,changeDetection:0})}return t})();var sU=(t,i)=>e=>Ma(500).pipe(fn(()=>i.list(t)),yt(n=>n.find(o=>o.name===e.value)?{templateExist:!0}:null));var ske=t=>({"is-invalid":t});function lke(t,i){t&1&&(s(0,"mat-error"),d(1,"Template name is required"),l())}function cke(t,i){t&1&&(s(0,"mat-error"),d(1,"Template name is incorrect"),l())}function dke(t,i){t&1&&(s(0,"mat-error"),d(1,"Template with this name exists"),l())}var bh=(()=>{class t{templateNameValidator;data;dialogRef=f(Pe);router=f(ut);dialog=f(Je);toasterService=f(fe);formBuilder=f(jt);templateService=f(Tl);cdr=f(K);controller;templateNameForm;constructor(e,n){this.templateNameValidator=e,this.data=n}ngOnInit(){let e=this.data.name;this.templateNameForm=this.formBuilder.group({templateName:new re(e,[be.required,this.templateNameValidator.get],[sU(this.controller,this.templateService)])}),setTimeout(()=>{this.templateNameForm.controls.templateName.markAsTouched(),this.cdr.markForCheck()},100)}get form(){return this.templateNameForm.controls}onAddClick(){if(this.templateNameForm.invalid){this.toasterService.error("Please enter correct name for new template");return}this.templateService.list(this.controller).subscribe(e=>{let n=this.templateNameForm.controls.templateName.value;e.find(r=>r.name===n)?this.toasterService.error("Template with this name exists"):this.dialogRef.close(this.templateNameForm.controls.templateName.value)})}onNoClick(){this.dialogRef.close()}onKeyDown(e){e.key==="Enter"&&this.onAddClick()}static \u0275fac=function(n){return new(n||t)(st(ja),st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-template-name-dialog"]],features:[hn([ja])],decls:13,vars:7,consts:[["mat-dialog-title",""],[1,"file-name-form",3,"formGroup"],[1,"file-name-form-field"],["matInput","","type","text","formControlName","templateName","placeholder","Template name",3,"keydown","ngClass"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",1,"add-project-button",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Please enter name for the new template"),l(),s(2,"form",1)(3,"mat-form-field",2)(4,"input",3),v("keydown",function(a){return o.onKeyDown(a)}),l(),A(5,lke,2,0,"mat-error"),A(6,cke,2,0,"mat-error"),A(7,dke,2,0,"mat-error"),l(),s(8,"div",4)(9,"button",5),v("click",function(){return o.onNoClick()}),d(10,"Cancel"),l(),s(11,"button",6),v("click",function(){return o.onAddClick()}),d(12," Add template "),l()()()),n&2&&(u(2),x("formGroup",o.templateNameForm),u(2),x("ngClass",ln(5,ske,o.form.templateName==null?null:o.form.templateName.errors)),u(),O(o.form.templateName!=null&&o.form.templateName.touched&&(o.form.templateName!=null&&o.form.templateName.errors)&&(o.form.templateName!=null&&o.form.templateName.errors.required)?5:-1),u(),O(o.form.templateName!=null&&o.form.templateName.errors&&(o.form.templateName!=null&&o.form.templateName.errors.invalidName)?6:-1),u(),O(o.form.templateName!=null&&o.form.templateName.errors&&(o.form.templateName!=null&&o.form.templateName.errors.templateExist)?7:-1))},dependencies:[Z,Zi,ct,Ue,vt,mt,He,pt,bt,Ce,Ve,Be,Me,ke,Ni,we,Te,$,le],styles:[".file-name-form[_ngcontent-%COMP%]{padding:16px 24px 0}.file-name-form-field[_ngcontent-%COMP%]{width:100%;margin-bottom:8px}.project-snackbar[_ngcontent-%COMP%]{background:var(--mat-app-primary-color)}.add-project-button[_ngcontent-%COMP%]{margin-left:auto}"],changeDetection:0})}return t})();var mke=["stepper"],pke=()=>[5,10,20,50,100],uke=(t,i)=>i.name,cU=(t,i)=>i.filename;function hke(t,i){t&1&&d(0,"Select creation method")}function fke(t,i){if(t&1&&d(0),t&2){let e=b();U(e.actionTitle)}}function gke(t,i){if(t&1&&(s(0,"mat-option",37),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e)}}function _ke(t,i){t&1&&(s(0,"mat-header-cell",51),d(1,"Name"),l())}function vke(t,i){if(t&1&&(s(0,"mat-cell"),d(1),l()),t&2){let e=i.$implicit;u(),U(e.name)}}function bke(t,i){t&1&&(s(0,"mat-header-cell",51),d(1,"Emulator"),l())}function Cke(t,i){if(t&1&&(s(0,"mat-cell"),d(1),l()),t&2){let e=i.$implicit;u(),U(e.emulator)}}function xke(t,i){t&1&&(s(0,"mat-header-cell",51),d(1,"Vendor"),l())}function yke(t,i){if(t&1&&(s(0,"mat-cell"),d(1),l()),t&2){let e=i.$implicit;u(),U(e.vendor_name)}}function Ske(t,i){t&1&&(s(0,"mat-header-cell"),d(1,"Actions"),l())}function wke(t,i){if(t&1){let e=j();s(0,"mat-cell",52)(1,"button",53),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.install(o))}),s(2,"mat-icon"),d(3,"archive"),l()(),s(4,"button",54),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.showInfo(o))}),s(5,"mat-icon"),d(6,"info"),l()()()}}function Mke(t,i){t&1&&F(0,"mat-header-row")}function kke(t,i){t&1&&F(0,"mat-row")}function Tke(t,i){if(t&1){let e=j();s(0,"div",32)(1,"mat-form-field",33)(2,"mat-label"),d(3,"Filter"),l(),s(4,"input",34),v("input",function(o){D(e);let r=b();return P(r.onSearchTextChange(o.target.value))}),l()(),s(5,"mat-form-field",35)(6,"mat-label"),d(7,"Category"),l(),s(8,"mat-select",36),v("selectionChange",function(o){D(e);let r=b();return P(r.onCategoryChange(o.value))}),J(9,gke,2,2,"mat-option",37,Fe),l()()(),s(11,"div",38)(12,"mat-table",39),v("matSortChange",function(o){D(e);let r=b();return P(r.sortData(o))}),qe(13,40),Ae(14,_ke,2,0,"mat-header-cell",41)(15,vke,2,1,"mat-cell",42),Xe(),qe(16,43),Ae(17,bke,2,0,"mat-header-cell",41)(18,Cke,2,1,"mat-cell",42),Xe(),qe(19,44),Ae(20,xke,2,0,"mat-header-cell",41)(21,yke,2,1,"mat-cell",42),Xe(),qe(22,45),Ae(23,Ske,2,0,"mat-header-cell",46)(24,wke,7,0,"mat-cell",47),Xe(),Ae(25,Mke,1,0,"mat-header-row",48)(26,kke,1,0,"mat-row",49),l(),F(27,"mat-paginator",50),l()}if(t&2){let e=b();u(4),x("value",e.searchText()),u(4),x("value",e.category()),u(),ee(e.categories),u(3),x("dataSource",e.dataSource),u(13),x("matHeaderRowDef",e.displayedColumns),u(),x("matRowDefColumns",e.displayedColumns),u(),x("pageSizeOptions",Jt(6,pke))}}function Eke(t,i){if(t&1){let e=j();s(0,"div",29)(1,"input",55,1),v("change",function(o){D(e);let r=b();return P(r.addAppliance(o))}),l(),s(3,"button",56),v("click",function(){D(e);let o=Re(2);return P(o.click())}),d(4," Click to import appliance "),l()()}if(t&2){let e=b();u(),x("uploader",e.uploader)}}function Dke(t,i){if(t&1){let e=j();s(0,"button",28),v("click",function(){D(e);let o=b();return P(o.updateAppliances())}),d(1,"Update from online registry"),l()}}function Pke(t,i){if(t&1&&d(0),t&2){let e=b(2);U(e.secondActionTitle)}}function Ike(t,i){t&1&&(s(0,"div",71)(1,"mat-icon"),d(2,"check_circle"),l(),s(3,"span"),d(4,"Ready"),l()())}function Ake(t,i){t&1&&(s(0,"div",72)(1,"mat-icon"),d(2,"cancel"),l(),s(3,"span"),d(4,"Missing"),l()())}function Oke(t,i){if(t&1){let e=j();s(0,"div",77)(1,"div",78)(2,"div",79)(3,"mat-icon"),d(4,"sync"),l(),s(5,"span"),d(6),l()(),s(7,"span",80),d(8),l()(),F(9,"mat-progress-bar",81),s(10,"button",82),v("click",function(){D(e);let o=b(5);return P(o.cancelUploading())}),d(11,"Cancel"),l()()}if(t&2){let e=b(2).$implicit,n=b(3);u(6),X("Importing ",e.images.bios_image,"..."),u(2),X("",n.uploadProgress,"%"),u(),x("value",n.uploadProgress)}}function Nke(t,i){if(t&1){let e=j();s(0,"div",68)(1,"span",69),d(2),l(),s(3,"div",70),A(4,Ike,5,0,"div",71)(5,Ake,5,0,"div",72),s(6,"div",73)(7,"input",74,2),v("change",function(o){D(e);let r=b().$implicit,a=b(3);return P(a.importImage(o,r.images.bios_image))}),l(),s(9,"button",75)(10,"mat-icon"),d(11,"more_horiz"),l(),s(12,"span"),d(13,"Actions"),l()(),s(14,"mat-menu",null,3)(16,"button",76),v("click",function(){D(e);let o=Re(8);return P(o.click())}),s(17,"mat-icon"),d(18,"upload_file"),l(),s(19,"span"),d(20,"Import from file"),l()(),s(21,"button",76),v("click",function(){D(e);let o=b().$implicit,r=b(3);return P(r.downloadImageFromVersion(o.images.bios_image))}),s(22,"mat-icon"),d(23,"download"),l(),s(24,"span"),d(25,"Download from vendor"),l()()()()(),A(26,Oke,12,3,"div",77),l()}if(t&2){let e=Re(15),n=b().$implicit,o=b(3);je("new-template__image-item--installed",o.checkImageFromVersion(n.images.bios_image))("new-template__image-item--missing",!o.checkImageFromVersion(n.images.bios_image)),u(2),U(n.images.bios_image),u(2),O(o.checkImageFromVersion(n.images.bios_image)?4:5),u(3),x("uploader",o.uploaderImage),u(2),x("matMenuTriggerFor",e),u(17),O(o.isUploading&&o.uploadingImageName===n.images.bios_image?26:-1)}}function Rke(t,i){t&1&&(s(0,"div",71)(1,"mat-icon"),d(2,"check_circle"),l(),s(3,"span"),d(4,"Ready"),l()())}function Fke(t,i){t&1&&(s(0,"div",72)(1,"mat-icon"),d(2,"cancel"),l(),s(3,"span"),d(4,"Missing"),l()())}function Lke(t,i){if(t&1){let e=j();s(0,"div",77)(1,"div",78)(2,"div",79)(3,"mat-icon"),d(4,"sync"),l(),s(5,"span"),d(6),l()(),s(7,"span",80),d(8),l()(),F(9,"mat-progress-bar",81),s(10,"button",82),v("click",function(){D(e);let o=b(5);return P(o.cancelUploading())}),d(11,"Cancel"),l()()}if(t&2){let e=b(2).$implicit,n=b(3);u(6),X("Importing ",e.images.hda_disk_image,"..."),u(2),X("",n.uploadProgress,"%"),u(),x("value",n.uploadProgress)}}function Bke(t,i){if(t&1){let e=j();s(0,"div",68)(1,"span",69),d(2),l(),s(3,"div",70),A(4,Rke,5,0,"div",71)(5,Fke,5,0,"div",72),s(6,"div",73)(7,"input",74,4),v("change",function(o){D(e);let r=b().$implicit,a=b(3);return P(a.importImage(o,r.images.hda_disk_image))}),l(),s(9,"button",75)(10,"mat-icon"),d(11,"more_horiz"),l(),s(12,"span"),d(13,"Actions"),l()(),s(14,"mat-menu",null,5)(16,"button",76),v("click",function(){D(e);let o=Re(8);return P(o.click())}),s(17,"mat-icon"),d(18,"upload_file"),l(),s(19,"span"),d(20,"Import from file"),l()(),s(21,"button",76),v("click",function(){D(e);let o=b().$implicit,r=b(3);return P(r.downloadImageFromVersion(o.images.hda_disk_image))}),s(22,"mat-icon"),d(23,"download"),l(),s(24,"span"),d(25,"Download from vendor"),l()()()()(),A(26,Lke,12,3,"div",77),l()}if(t&2){let e=Re(15),n=b().$implicit,o=b(3);je("new-template__image-item--installed",o.checkImageFromVersion(n.images.hda_disk_image))("new-template__image-item--missing",!o.checkImageFromVersion(n.images.hda_disk_image)),u(2),U(n.images.hda_disk_image),u(2),O(o.checkImageFromVersion(n.images.hda_disk_image)?4:5),u(3),x("uploader",o.uploaderImage),u(2),x("matMenuTriggerFor",e),u(17),O(o.isUploading&&o.uploadingImageName===n.images.hda_disk_image?26:-1)}}function Vke(t,i){t&1&&(s(0,"div",71)(1,"mat-icon"),d(2,"check_circle"),l(),s(3,"span"),d(4,"Ready"),l()())}function zke(t,i){t&1&&(s(0,"div",72)(1,"mat-icon"),d(2,"cancel"),l(),s(3,"span"),d(4,"Missing"),l()())}function jke(t,i){if(t&1){let e=j();s(0,"div",77)(1,"div",78)(2,"div",79)(3,"mat-icon"),d(4,"sync"),l(),s(5,"span"),d(6),l()(),s(7,"span",80),d(8),l()(),F(9,"mat-progress-bar",81),s(10,"button",82),v("click",function(){D(e);let o=b(5);return P(o.cancelUploading())}),d(11,"Cancel"),l()()}if(t&2){let e=b(2).$implicit,n=b(3);u(6),X("Importing ",e.images.hdb_disk_image,"..."),u(2),X("",n.uploadProgress,"%"),u(),x("value",n.uploadProgress)}}function $ke(t,i){if(t&1){let e=j();s(0,"div",68)(1,"span",69),d(2),l(),s(3,"div",70),A(4,Vke,5,0,"div",71)(5,zke,5,0,"div",72),s(6,"div",73)(7,"input",74,6),v("change",function(o){D(e);let r=b().$implicit,a=b(3);return P(a.importImage(o,r.images.hdb_disk_image))}),l(),s(9,"button",75)(10,"mat-icon"),d(11,"more_horiz"),l(),s(12,"span"),d(13,"Actions"),l()(),s(14,"mat-menu",null,7)(16,"button",76),v("click",function(){D(e);let o=Re(8);return P(o.click())}),s(17,"mat-icon"),d(18,"upload_file"),l(),s(19,"span"),d(20,"Import from file"),l()(),s(21,"button",76),v("click",function(){D(e);let o=b().$implicit,r=b(3);return P(r.downloadImageFromVersion(o.images.hdb_disk_image))}),s(22,"mat-icon"),d(23,"download"),l(),s(24,"span"),d(25,"Download from vendor"),l()()()()(),A(26,jke,12,3,"div",77),l()}if(t&2){let e=Re(15),n=b().$implicit,o=b(3);je("new-template__image-item--installed",o.checkImageFromVersion(n.images.hdb_disk_image))("new-template__image-item--missing",!o.checkImageFromVersion(n.images.hdb_disk_image)),u(2),U(n.images.hdb_disk_image),u(2),O(o.checkImageFromVersion(n.images.hdb_disk_image)?4:5),u(3),x("uploader",o.uploaderImage),u(2),x("matMenuTriggerFor",e),u(17),O(o.isUploading&&o.uploadingImageName===n.images.hdb_disk_image?26:-1)}}function Hke(t,i){t&1&&(s(0,"div",71)(1,"mat-icon"),d(2,"check_circle"),l(),s(3,"span"),d(4,"Ready"),l()())}function Uke(t,i){t&1&&(s(0,"div",72)(1,"mat-icon"),d(2,"cancel"),l(),s(3,"span"),d(4,"Missing"),l()())}function Gke(t,i){if(t&1){let e=j();s(0,"div",77)(1,"div",78)(2,"div",79)(3,"mat-icon"),d(4,"sync"),l(),s(5,"span"),d(6),l()(),s(7,"span",80),d(8),l()(),F(9,"mat-progress-bar",81),s(10,"button",82),v("click",function(){D(e);let o=b(5);return P(o.cancelUploading())}),d(11,"Cancel"),l()()}if(t&2){let e=b(2).$implicit,n=b(3);u(6),X("Importing ",e.images.hdc_disk_image,"..."),u(2),X("",n.uploadProgress,"%"),u(),x("value",n.uploadProgress)}}function Wke(t,i){if(t&1){let e=j();s(0,"div",68)(1,"span",69),d(2),l(),s(3,"div",70),A(4,Hke,5,0,"div",71)(5,Uke,5,0,"div",72),s(6,"div",73)(7,"input",74,8),v("change",function(o){D(e);let r=b().$implicit,a=b(3);return P(a.importImage(o,r.images.hdc_disk_image))}),l(),s(9,"button",75)(10,"mat-icon"),d(11,"more_horiz"),l(),s(12,"span"),d(13,"Actions"),l()(),s(14,"mat-menu",null,9)(16,"button",76),v("click",function(){D(e);let o=Re(8);return P(o.click())}),s(17,"mat-icon"),d(18,"upload_file"),l(),s(19,"span"),d(20,"Import from file"),l()(),s(21,"button",76),v("click",function(){D(e);let o=b().$implicit,r=b(3);return P(r.downloadImageFromVersion(o.images.hdc_disk_image))}),s(22,"mat-icon"),d(23,"download"),l(),s(24,"span"),d(25,"Download from vendor"),l()()()()(),A(26,Gke,12,3,"div",77),l()}if(t&2){let e=Re(15),n=b().$implicit,o=b(3);je("new-template__image-item--installed",o.checkImageFromVersion(n.images.hdc_disk_image))("new-template__image-item--missing",!o.checkImageFromVersion(n.images.hdc_disk_image)),u(2),U(n.images.hdc_disk_image),u(2),O(o.checkImageFromVersion(n.images.hdc_disk_image)?4:5),u(3),x("uploader",o.uploaderImage),u(2),x("matMenuTriggerFor",e),u(17),O(o.isUploading&&o.uploadingImageName===n.images.hdc_disk_image?26:-1)}}function qke(t,i){t&1&&(s(0,"div",71)(1,"mat-icon"),d(2,"check_circle"),l(),s(3,"span"),d(4,"Ready"),l()())}function Xke(t,i){t&1&&(s(0,"div",72)(1,"mat-icon"),d(2,"cancel"),l(),s(3,"span"),d(4,"Missing"),l()())}function Qke(t,i){if(t&1){let e=j();s(0,"div",77)(1,"div",78)(2,"div",79)(3,"mat-icon"),d(4,"sync"),l(),s(5,"span"),d(6),l()(),s(7,"span",80),d(8),l()(),F(9,"mat-progress-bar",81),s(10,"button",82),v("click",function(){D(e);let o=b(5);return P(o.cancelUploading())}),d(11,"Cancel"),l()()}if(t&2){let e=b(2).$implicit,n=b(3);u(6),X("Importing ",e.images.hdd_disk_image,"..."),u(2),X("",n.uploadProgress,"%"),u(),x("value",n.uploadProgress)}}function Yke(t,i){if(t&1){let e=j();s(0,"div",68)(1,"span",69),d(2),l(),s(3,"div",70),A(4,qke,5,0,"div",71)(5,Xke,5,0,"div",72),s(6,"div",73)(7,"input",74,10),v("change",function(o){D(e);let r=b().$implicit,a=b(3);return P(a.importImage(o,r.images.hdd_disk_image))}),l(),s(9,"button",75)(10,"mat-icon"),d(11,"more_horiz"),l(),s(12,"span"),d(13,"Actions"),l()(),s(14,"mat-menu",null,11)(16,"button",76),v("click",function(){D(e);let o=Re(8);return P(o.click())}),s(17,"mat-icon"),d(18,"upload_file"),l(),s(19,"span"),d(20,"Import from file"),l()(),s(21,"button",76),v("click",function(){D(e);let o=b().$implicit,r=b(3);return P(r.downloadImageFromVersion(o.images.hdd_disk_image))}),s(22,"mat-icon"),d(23,"download"),l(),s(24,"span"),d(25,"Download from vendor"),l()()()()(),A(26,Qke,12,3,"div",77),l()}if(t&2){let e=Re(15),n=b().$implicit,o=b(3);je("new-template__image-item--installed",o.checkImageFromVersion(n.images.hdd_disk_image))("new-template__image-item--missing",!o.checkImageFromVersion(n.images.hdd_disk_image)),u(2),U(n.images.hdd_disk_image),u(2),O(o.checkImageFromVersion(n.images.hdd_disk_image)?4:5),u(3),x("uploader",o.uploaderImage),u(2),x("matMenuTriggerFor",e),u(17),O(o.isUploading&&o.uploadingImageName===n.images.hdd_disk_image?26:-1)}}function Kke(t,i){t&1&&(s(0,"div",71)(1,"mat-icon"),d(2,"check_circle"),l(),s(3,"span"),d(4,"Ready"),l()())}function Zke(t,i){t&1&&(s(0,"div",72)(1,"mat-icon"),d(2,"cancel"),l(),s(3,"span"),d(4,"Missing"),l()())}function Jke(t,i){if(t&1){let e=j();s(0,"div",77)(1,"div",78)(2,"div",79)(3,"mat-icon"),d(4,"sync"),l(),s(5,"span"),d(6),l()(),s(7,"span",80),d(8),l()(),F(9,"mat-progress-bar",81),s(10,"button",82),v("click",function(){D(e);let o=b(5);return P(o.cancelUploading())}),d(11,"Cancel"),l()()}if(t&2){let e=b(2).$implicit,n=b(3);u(6),X("Importing ",e.images.cdrom_image,"..."),u(2),X("",n.uploadProgress,"%"),u(),x("value",n.uploadProgress)}}function eTe(t,i){if(t&1){let e=j();s(0,"div",68)(1,"span",69),d(2),l(),s(3,"div",70),A(4,Kke,5,0,"div",71)(5,Zke,5,0,"div",72),s(6,"div",73)(7,"input",74,12),v("change",function(o){D(e);let r=b().$implicit,a=b(3);return P(a.importImage(o,r.images.cdrom_image))}),l(),s(9,"button",75)(10,"mat-icon"),d(11,"more_horiz"),l(),s(12,"span"),d(13,"Actions"),l()(),s(14,"mat-menu",null,13)(16,"button",76),v("click",function(){D(e);let o=Re(8);return P(o.click())}),s(17,"mat-icon"),d(18,"upload_file"),l(),s(19,"span"),d(20,"Import from file"),l()(),s(21,"button",76),v("click",function(){D(e);let o=b().$implicit,r=b(3);return P(r.downloadImageFromVersion(o.images.cdrom_image))}),s(22,"mat-icon"),d(23,"download"),l(),s(24,"span"),d(25,"Download from vendor"),l()()()()(),A(26,Jke,12,3,"div",77),l()}if(t&2){let e=Re(15),n=b().$implicit,o=b(3);je("new-template__image-item--installed",o.checkImageFromVersion(n.images.cdrom_image))("new-template__image-item--missing",!o.checkImageFromVersion(n.images.cdrom_image)),u(2),U(n.images.cdrom_image),u(2),O(o.checkImageFromVersion(n.images.cdrom_image)?4:5),u(3),x("uploader",o.uploaderImage),u(2),x("matMenuTriggerFor",e),u(17),O(o.isUploading&&o.uploadingImageName===n.images.cdrom_image?26:-1)}}function tTe(t,i){if(t&1){let e=j();s(0,"mat-expansion-panel")(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"div",61)(4,"span",62),d(5),l(),s(6,"div",63)(7,"span",64),d(8),l(),s(9,"button",65),v("click",function(o){let r=D(e).$implicit,a=b(3);return o.stopPropagation(),P(a.createQemuTemplateFromVersion(r))}),d(10," Create "),l()()()()(),s(11,"div",66),A(12,Nke,27,9,"div",67),A(13,Bke,27,9,"div",67),A(14,$ke,27,9,"div",67),A(15,Wke,27,9,"div",67),A(16,Yke,27,9,"div",67),A(17,eTe,27,9,"div",67),l()()}if(t&2){let e=i.$implicit,n=b(3);u(5),Hi("",n.applianceToInstall.name," version ",e.name),u(2),je("new-template__version-count--complete",n.isVersionComplete(e))("new-template__version-count--partial",!n.isVersionComplete(e)&&n.getVersionReadyCount(e)>0),u(),Hi(" ",n.getVersionReadyCount(e),"/",n.getVersionImageCount(e)," ready "),u(),x("disabled",!n.isVersionComplete(e)),u(3),O(e.images.bios_image?12:-1),u(),O(e.images.hda_disk_image?13:-1),u(),O(e.images.hdb_disk_image?14:-1),u(),O(e.images.hdc_disk_image?15:-1),u(),O(e.images.hdd_disk_image?16:-1),u(),O(e.images.cdrom_image?17:-1)}}function nTe(t,i){if(t&1){let e=j();s(0,"div",57)(1,"div",58)(2,"span"),d(3,"Install the required files"),l(),s(4,"button",59),v("click",function(){D(e);let o=b(2);return P(o.refreshImages())}),s(5,"mat-icon"),d(6,"refresh"),l()()(),s(7,"mat-accordion",60),J(8,tTe,18,15,"mat-expansion-panel",null,uke),l()()}if(t&2){let e=b(2);u(8),ee(e.applianceToInstall.versions)}}function iTe(t,i){if(t&1){let e=j();s(0,"div",57)(1,"button",83),v("click",function(){D(e);let o=b(2);return P(o.createDockerTemplate())}),d(2," Create docker template "),l()()}}function oTe(t,i){t&1&&(s(0,"div",71)(1,"mat-icon"),d(2,"check_circle"),l(),s(3,"span"),d(4,"Ready"),l()())}function rTe(t,i){t&1&&(s(0,"div",72)(1,"mat-icon"),d(2,"cancel"),l(),s(3,"span"),d(4,"Missing"),l()())}function aTe(t,i){if(t&1){let e=j();s(0,"div",77)(1,"div",78)(2,"div",79)(3,"mat-icon"),d(4,"sync"),l(),s(5,"span"),d(6),l()(),s(7,"span",80),d(8),l()(),F(9,"mat-progress-bar",81),s(10,"button",82),v("click",function(){D(e);let o=b(4);return P(o.cancelUploading())}),d(11,"Cancel"),l()()}if(t&2){let e=b().$implicit,n=b(3);u(6),X("Importing ",e.filename,"..."),u(2),X("",n.uploadProgress,"%"),u(),x("value",n.uploadProgress)}}function sTe(t,i){if(t&1){let e=j();s(0,"mat-list-item",85)(1,"div",68)(2,"span",69),d(3),l(),s(4,"div",70),A(5,oTe,5,0,"div",71)(6,rTe,5,0,"div",72),s(7,"div",73)(8,"input",74,4),v("change",function(o){let r=D(e).$implicit,a=b(3);return P(a.importImage(o,r.filename))}),l(),s(10,"button",86),v("click",function(){let o=D(e).$implicit,r=b(3);return P(r.createIosTemplate(o))}),d(11,"Create"),l(),s(12,"button",75)(13,"mat-icon"),d(14,"more_horiz"),l()(),s(15,"mat-menu",null,14)(17,"button",76),v("click",function(){D(e);let o=Re(9);return P(o.click())}),s(18,"mat-icon"),d(19,"upload_file"),l(),s(20,"span"),d(21,"Import from file"),l()()()(),A(22,aTe,12,3,"div",77),l()()()}if(t&2){let e=i.$implicit,n=Re(16),o=b(3);u(),je("new-template__image-item--installed",o.checkImageFromVersion(e.filename))("new-template__image-item--missing",!o.checkImageFromVersion(e.filename)),u(2),U(e.filename),u(2),O(o.checkImageFromVersion(e.filename)?5:6),u(3),x("uploader",o.uploaderImage),u(4),x("matMenuTriggerFor",n),u(10),O(o.isUploading&&o.uploadingImageName===e.filename?22:-1)}}function lTe(t,i){if(t&1){let e=j();s(0,"div",57)(1,"div",58)(2,"span"),d(3,"Install the required images"),l(),s(4,"button",59),v("click",function(){D(e);let o=b(2);return P(o.refreshImages())}),s(5,"mat-icon"),d(6,"refresh"),l()()(),s(7,"mat-list",84),J(8,sTe,23,9,"mat-list-item",85,cU),l()()}if(t&2){let e=b(2);u(8),ee(e.applianceToInstall.images)}}function cTe(t,i){t&1&&(s(0,"div",71)(1,"mat-icon"),d(2,"check_circle"),l(),s(3,"span"),d(4,"Ready"),l()())}function dTe(t,i){t&1&&(s(0,"div",72)(1,"mat-icon"),d(2,"cancel"),l(),s(3,"span"),d(4,"Missing"),l()())}function mTe(t,i){if(t&1){let e=j();s(0,"div",77)(1,"div",78)(2,"div",79)(3,"mat-icon"),d(4,"sync"),l(),s(5,"span"),d(6),l()(),s(7,"span",80),d(8),l()(),F(9,"mat-progress-bar",81),s(10,"button",82),v("click",function(){D(e);let o=b(4);return P(o.cancelUploading())}),d(11,"Cancel"),l()()}if(t&2){let e=b().$implicit,n=b(3);u(6),X("Importing ",e.filename,"..."),u(2),X("",n.uploadProgress,"%"),u(),x("value",n.uploadProgress)}}function pTe(t,i){if(t&1){let e=j();s(0,"mat-list-item",85)(1,"div",68)(2,"span",69),d(3),l(),s(4,"div",70),A(5,cTe,5,0,"div",71)(6,dTe,5,0,"div",72),s(7,"div",73)(8,"input",74,15),v("change",function(o){let r=D(e).$implicit,a=b(3);return P(a.importImage(o,r.filename))}),l(),s(10,"button",86),v("click",function(){let o=D(e).$implicit,r=b(3);return P(r.createIouTemplate(o))}),d(11,"Create"),l(),s(12,"button",75)(13,"mat-icon"),d(14,"more_horiz"),l()(),s(15,"mat-menu",null,16)(17,"button",76),v("click",function(){D(e);let o=Re(9);return P(o.click())}),s(18,"mat-icon"),d(19,"upload_file"),l(),s(20,"span"),d(21,"Import from file"),l()()()(),A(22,mTe,12,3,"div",77),l()()()}if(t&2){let e=i.$implicit,n=Re(16),o=b(3);u(),je("new-template__image-item--installed",o.checkImageFromVersion(e.filename))("new-template__image-item--missing",!o.checkImageFromVersion(e.filename)),u(2),U(e.filename),u(2),O(o.checkImageFromVersion(e.filename)?5:6),u(3),x("uploader",o.uploaderImage),u(4),x("matMenuTriggerFor",n),u(10),O(o.isUploading&&o.uploadingImageName===e.filename?22:-1)}}function uTe(t,i){if(t&1){let e=j();s(0,"div",57)(1,"div",58)(2,"span"),d(3,"Install the required images"),l(),s(4,"button",59),v("click",function(){D(e);let o=b(2);return P(o.refreshImages())}),s(5,"mat-icon"),d(6,"refresh"),l()()(),s(7,"mat-list",84),J(8,pTe,23,9,"mat-list-item",85,cU),l()()}if(t&2){let e=b(2);u(8),ee(e.applianceToInstall.images)}}function hTe(t,i){if(t&1){let e=j();s(0,"mat-step",19),Ae(1,Pke,1,1,"ng-template",20),s(2,"mat-dialog-content",21),A(3,nTe,10,0,"div",57),A(4,iTe,3,0,"div",57),A(5,lTe,10,0,"div",57),A(6,uTe,10,0,"div",57),l(),s(7,"mat-dialog-actions",26)(8,"button",30),d(9,"Back"),l(),s(10,"button",28),v("click",function(){D(e);let o=b();return P(o.onCloseClick())}),d(11,"Cancel"),l()()()}if(t&2){let e=b();u(3),O(e.applianceToInstall.qemu&&(!e.isLinuxPlatform||e.applianceToInstall.dynamips)?3:-1),u(),O(e.applianceToInstall.docker?4:-1),u(),O(e.applianceToInstall.dynamips?5:-1),u(),O(e.applianceToInstall.iou?6:-1)}}var p_=(()=>{class t{controller;project;uploader;uploaderImage;action="install";actionTitle="Install appliance from controller";secondActionTitle="Appliance settings";searchText=ae("");allAppliances=[];appliances=[];applianceToInstall;selectedImages;isLinuxPlatform=!1;isLocalComputerChosen=!1;categories=["all categories","router","multilayer_switch","guest","firewall"];category=ae("all categories");displayedColumns=["name","emulator","vendor","actions"];dataSource;qemuImages=[];iosImages=[];iouImages=[];templates=[];uploadProgress=0;uploadingImageName="";isUploading=!1;paginator=Ut(Tr);stepper=Ut("stepper");dialogRef=f(Pe);applianceService=f(Ck);changeDetector=f(K);toasterService=f(fe);qemuService=f(ra);dockerService=f(ys);iosService=f(Ss);iouService=f(ws);templateService=f(Tl);dialog=f(Je);computeService=f(Lo);changeDetectorRef=f(K);progressService=f(zo);snackBar=f(Qr);uploadServiceService=f(Dl);ngOnInit(){this.applianceService.getAppliances(this.controller).subscribe(e=>{this.appliances=e,this.appliances.forEach(n=>{n.docker&&(n.emulator="Docker"),n.dynamips&&(n.emulator="Dynamips"),n.iou&&(n.emulator="Iou"),n.qemu&&(n.emulator="Qemu")}),this.allAppliances=e,this.dataSource=new Nr(this.allAppliances),this.setupPaginator()}),this.templateService.list(this.controller).subscribe(e=>{this.templates=e,this.changeDetectorRef.markForCheck()}),this.computeService.getComputes(this.controller).subscribe(e=>{e.forEach(n=>{n.capabilities?.platform==="linux"&&(this.isLinuxPlatform=!0)}),this.changeDetectorRef.markForCheck()}),this.qemuService.getImages(this.controller).subscribe(e=>{this.qemuImages=e,this.changeDetectorRef.markForCheck()}),this.iosService.getImages(this.controller).subscribe(e=>{this.iosImages=e,this.changeDetectorRef.markForCheck()}),this.iouService.getImages(this.controller).subscribe(e=>{this.iouImages=e,this.changeDetectorRef.markForCheck()}),this.applianceService.getAppliances(this.controller).subscribe(e=>{this.appliances=e,this.appliances.forEach(n=>{n.docker&&(n.emulator="Docker"),n.dynamips&&(n.emulator="Dynamips"),n.iou&&(n.emulator="Iou"),n.qemu&&(n.emulator="Qemu")}),this.allAppliances=e,this.dataSource=new Nr(this.allAppliances),this.setupPaginator()}),this.uploader=new Ka({url:""}),this.uploader.onAfterAddingFile=e=>{e.withCredentials=!1},this.uploader.onErrorItem=(e,n,o,r)=>{this.toasterService.error("An error has occured")},this.uploader.onSuccessItem=(e,n,o,r)=>{this.toasterService.success("Appliance imported succesfully"),this.getAppliance(e.url)},this.uploaderImage=new Ka({url:""}),this.uploaderImage.onAfterAddingFile=e=>{e.withCredentials=!1},this.uploaderImage.onErrorItem=(e,n,o,r)=>{this.toasterService.error("An error has occurred because image already exists"),this.progressService.deactivate(),this.isUploading=!1,this.uploadingImageName="",this.uploaderImage.clearQueue(),this.changeDetectorRef.markForCheck()},this.uploaderImage.onSuccessItem=(e,n,o,r)=>{this.toasterService.success("Image successfully imported"),this.refreshImages(),this.progressService.deactivate(),this.isUploading=!1,this.uploadingImageName="",this.uploaderImage.clearQueue(),this.changeDetectorRef.markForCheck()},this.uploaderImage.onProgressItem=e=>{this.uploadProgress=e.progress,this.uploadServiceService.processBarCount(this.uploadProgress),this.changeDetectorRef.markForCheck()},this.uploadServiceService.currentCancelItemDetails.subscribe(e=>{e&&this.cancelUploading()})}ngAfterViewInit(){this.setupPaginator()}setupPaginator(){this.dataSource&&this.paginator()&&(this.dataSource.paginator=this.paginator(),this.changeDetectorRef.markForCheck())}updateAppliances(){this.progressService.activate(),this.applianceService.updateAppliances(this.controller).subscribe(e=>{this.appliances=e,this.progressService.deactivate(),this.toasterService.success("Appliances are up-to-date.")},e=>{this.progressService.deactivate(),this.toasterService.error("Appliances were not updated correctly.")})}refreshImages(){this.qemuService.getImages(this.controller).subscribe(e=>{this.qemuImages=e}),this.iosService.getImages(this.controller).subscribe(e=>{this.iosImages=e}),this.iouService.getImages(this.controller).subscribe(e=>{this.iouImages=e})}getAppliance(e){let n=e.split(`/${Ai.current_version}`),o=n[n.length-1];this.applianceService.getAppliance(this.controller,o).subscribe(r=>{this.applianceToInstall=r,setTimeout(()=>{this.stepper().next()},100)})}addAppliance(e){let n=e.target.files[0].name.split("-")[0],o=e.target.files[0].name,r=e.target.files[0],a=new FileReader,c;a.onloadend=()=>{let m=JSON.parse(a.result);m.docker&&(c="docker"),m.dynamips&&(c="dynamips"),m.iou&&(c="iou"),m.qemu&&(c="qemu");let p=this.applianceService.getUploadPath(this.controller,o);this.uploader.queue.forEach(g=>g.url=p);let h=this.uploader.queue[0];h.options&&(h.options.disableMultipart=!0),h.options.headers=[{name:"Authorization",value:"Bearer "+this.controller.authToken}],this.uploader.uploadItem(h)},a.readAsText(r)}filterAppliances(){let e=this.allAppliances.filter(n=>n.name.toLowerCase().includes(this.searchText().toLowerCase()));this.category()==="all categories"||!this.category()?this.appliances=e:this.appliances=e.filter(n=>n.category===this.category()),this.dataSource=new Nr(this.appliances),this.setupPaginator()}onSearchTextChange(e){this.searchText.set(e),this.filterAppliances()}onCategoryChange(e){this.category.set(e),this.filterAppliances()}setAction(e){this.action=e,e==="install"?this.actionTitle="Install appliance from controller":e==="import"&&(this.actionTitle="Import an appliance file")}setControllerType(e){this.isLocalComputerChosen=!0}sortData(e){if(!e.active||e.direction==="")return;let n=this.appliances.slice();this.appliances=n.sort((o,r)=>{let a=e.direction==="asc";return e.active==="name"?GN(o.name,r.name,a):e.active==="emulator"?GN(o.emulator,r.emulator,a):e.active==="vendor"?GN(o.vendor_name,r.vendor_name,a):0})}onCloseClick(){this.dialogRef.close()}install(e){this.applianceToInstall=e,setTimeout(()=>{this.stepper().next()},100)}showInfo(e){let n=this.dialog.open(xk,{width:"250px",data:{appliance:e}});n.componentInstance.appliance=e}importImage(e,n){this.uploadingImageName=n,this.computeChecksumMd5(e.target.files[0],!1).then(o=>{let r=this.applianceToInstall.images.filter(a=>a.filename===n)[0];if(r.md5sum!==o){this.progressService.deactivate();let a=this.dialog.open(aC,{autoFocus:!1,disableClose:!0,panelClass:["base-confirmation-dialog-panel","information-dialog-panel"]});a.componentInstance.confirmationMessage=`This is not the correct file.
|
||
The MD5 sum is ${o} and should be ${r.md5sum}. Do you want to accept it at your own risks?`,a.afterClosed().subscribe(c=>{c?(this.importImageFile(e,n),this.openSnackBar()):(this.isUploading=!1,this.uploadingImageName="",this.uploaderImage.clearQueue(),this.changeDetectorRef.markForCheck())})}else this.importImageFile(e,n),this.openSnackBar()})}importImageFile(e,n){let o=e.target.files[0].name.split("-")[0],r=e.target.files[0],a=new FileReader,c;a.onloadend=()=>{this.applianceToInstall.qemu&&(c="qemu"),this.applianceToInstall.dynamips&&(c="dynamips"),this.applianceToInstall.iou&&(c="iou");let m=this.applianceService.getUploadPath(this.controller,n);this.uploaderImage.queue.forEach(h=>h.url=m);let p=this.uploaderImage.queue[0];p.options&&(p.options.disableMultipart=!0),p.options.headers=[{name:"Authorization",value:"Bearer "+this.controller.authToken}],this.isUploading=!0,this.uploadProgress=0,this.uploaderImage.uploadItem(p),this.changeDetectorRef.markForCheck()},a.onloadend(void 0)}cancelUploading(){this.uploaderImage.clearQueue(),this.uploadServiceService.processBarCount(null),this.toasterService.warning("File upload cancelled"),this.uploadServiceService.cancelFileUploading(!1)}checkImageFromVersion(e){let n=this.applianceToInstall.images.filter(o=>o.filename===e)[0];if(this.applianceToInstall.qemu){if(this.qemuImages.filter(o=>o.checksum===n.md5sum).length>0)return!0}else if(this.applianceToInstall.dynamips){if(this.iosImages.filter(o=>o.checksum===n.md5sum).length>0)return!0}else if(this.applianceToInstall.iou&&this.iouImages.filter(o=>o.checksum===n.md5sum).length>0)return!0;return!1}getVersionImageCount(e){let n=e.images,o=0;return n.bios_image&&o++,n.hda_disk_image&&o++,n.hdb_disk_image&&o++,n.hdc_disk_image&&o++,n.hdd_disk_image&&o++,n.cdrom_image&&o++,o}getVersionReadyCount(e){let n=e.images,o=0;return n.bios_image&&this.checkImageFromVersion(n.bios_image)&&o++,n.hda_disk_image&&this.checkImageFromVersion(n.hda_disk_image)&&o++,n.hdb_disk_image&&this.checkImageFromVersion(n.hdb_disk_image)&&o++,n.hdc_disk_image&&this.checkImageFromVersion(n.hdc_disk_image)&&o++,n.hdd_disk_image&&this.checkImageFromVersion(n.hdd_disk_image)&&o++,n.cdrom_image&&this.checkImageFromVersion(n.cdrom_image)&&o++,o}isVersionComplete(e){return this.getVersionReadyCount(e)===this.getVersionImageCount(e)}openConfirmationDialog(e,n){let o=this.dialog.open(aC,{autoFocus:!1,disableClose:!0,panelClass:["base-confirmation-dialog-panel","information-dialog-panel"]});o.componentInstance.confirmationMessage=e,o.afterClosed().subscribe(r=>{r&&window.open(n)})}downloadImage(e){let n="Download will redirect you where the required file can be downloaded, you may have to be registered with the vendor in order to download the file.",o=`The file is compressed with ${e.compression}, it must be uncompressed first.`;e.direct_download_url?e.compression?this.openConfirmationDialog(o,e.direct_download_url):window.open(e.direct_download_url):this.openConfirmationDialog(n,e.download_url)}downloadImageFromVersion(e){this.applianceToInstall.images.forEach(n=>{n.filename===e&&this.downloadImage(n)})}getCategory(){return this.applianceToInstall.category==="multilayer_switch"?"switch":this.applianceToInstall.category}createIouTemplate(e){let n=e.filename,o=this.applianceToInstall.images.filter(m=>m.filename===n)[0],r=this.iouImages.filter(m=>m.checksum===o.md5sum);r.length>0&&(n=r[0].filename);let a=new cp;a.nvram=this.applianceToInstall.iou.nvram,a.ram=this.applianceToInstall.iou.ram,a.ethernet_adapters=this.applianceToInstall.iou.ethernet_adapters,a.serial_adapters=this.applianceToInstall.iou.serial_adapters,a.startup_config=this.applianceToInstall.iou.startup_config,a.category=this.getCategory(),a.default_name_format=this.applianceToInstall.default_name_format,a.symbol=this.applianceToInstall.symbol,a.tags=this.applianceToInstall.tags||[],a.compute_id="local",a.template_id=Ti(),a.path=n,a.template_type="iou";let c=this.dialog.open(bh,{width:"400px",autoFocus:!1,disableClose:!0,panelClass:["base-dialog-panel","simple-dialog-panel","template-name-dialog-panel"],data:{name:this.applianceToInstall.name}});c.componentInstance.controller=this.controller,c.afterClosed().subscribe(m=>{if(m)a.name=m,this.iouService.addTemplate(this.controller,a).subscribe({next:p=>{this.templateService.newTemplateCreated.next(p),this.toasterService.success("Template added"),this.dialogRef.close()},error:p=>{let h=p.error?.message||p.message||"Failed to add template";this.toasterService.error(h),this.changeDetector.markForCheck()}});else return!1})}createIosTemplate(e){let n=e.filename,o=this.applianceToInstall.images.filter(m=>m.filename===n)[0],r=this.iosImages.filter(m=>m.checksum===o.md5sum);r.length>0&&(n=r[0].filename);let a=new sp;a.chassis=this.applianceToInstall.dynamips.chassis,a.nvram=this.applianceToInstall.dynamips.nvram,a.platform=this.applianceToInstall.dynamips.platform,a.ram=this.applianceToInstall.dynamips.ram,a.startup_config=this.applianceToInstall.dynamips.startup_config,a.slot0=this.applianceToInstall.dynamips.slot0,a.slot1=this.applianceToInstall.dynamips.slot1,a.slot2=this.applianceToInstall.dynamips.slot2,a.slot3=this.applianceToInstall.dynamips.slot3,a.slot4=this.applianceToInstall.dynamips.slot4,a.slot5=this.applianceToInstall.dynamips.slot5,a.slot6=this.applianceToInstall.dynamips.slot6,a.slot7=this.applianceToInstall.dynamips.slot7,a.category=this.getCategory(),a.default_name_format=this.applianceToInstall.default_name_format,a.symbol=this.applianceToInstall.symbol,a.tags=this.applianceToInstall.tags||[],a.compute_id="local",a.template_id=Ti(),a.image=n,a.template_type="dynamips";let c=this.dialog.open(bh,{width:"400px",autoFocus:!1,disableClose:!0,panelClass:["base-dialog-panel","simple-dialog-panel","template-name-dialog-panel"],data:{name:this.applianceToInstall.name}});c.componentInstance.controller=this.controller,c.afterClosed().subscribe(m=>{if(m)a.name=m,this.iosService.addTemplate(this.controller,a).subscribe({next:p=>{this.templateService.newTemplateCreated.next(p),this.toasterService.success("Template added"),this.dialogRef.close()},error:p=>{let h=p.error?.message||p.message||"Failed to add template";this.toasterService.error(h),this.changeDetector.markForCheck()}});else return!1})}createDockerTemplate(){let e=new m_;e.adapters=this.applianceToInstall.docker.adapters,e.console_type=this.applianceToInstall.docker.console_type,e.category=this.getCategory(),e.default_name_format=this.applianceToInstall.default_name_format,e.symbol=this.applianceToInstall.symbol,e.tags=this.applianceToInstall.tags||[],e.compute_id="local",e.template_id=Ti(),e.image=this.applianceToInstall.docker.image,e.template_type="docker";let n=this.dialog.open(bh,{width:"400px",autoFocus:!1,disableClose:!0,panelClass:["base-dialog-panel","simple-dialog-panel","template-name-dialog-panel"],data:{name:this.applianceToInstall.name}});n.componentInstance.controller=this.controller,n.afterClosed().subscribe(o=>{if(o)e.name=o,this.dockerService.addTemplate(this.controller,e).subscribe({next:r=>{this.templateService.newTemplateCreated.next(r),this.toasterService.success("Template added"),this.dialogRef.close()},error:r=>{let a=r.error?.message||r.message||"Failed to add template";this.toasterService.error(a),this.changeDetector.markForCheck()}});else return!1})}findControllerImageName(e){if(e){let n=this.applianceToInstall.images.filter(r=>r.filename===e)[0],o=this.qemuImages.filter(r=>r.checksum===n.md5sum);o.length>0&&(e=o[0].filename)}return e}createQemuTemplateFromVersion(e){let n=new dp;n.ram=this.applianceToInstall.qemu.ram,n.adapters=this.applianceToInstall.qemu.adapters,n.adapter_type=this.applianceToInstall.qemu.adapter_type,n.boot_priority=this.applianceToInstall.qemu.boot_priority,n.console_type=this.applianceToInstall.qemu.console_type,n.hda_disk_interface=this.applianceToInstall.qemu.hda_disk_interface,n.hdb_disk_interface=this.applianceToInstall.qemu.hdb_disk_interface,n.hdc_disk_interface=this.applianceToInstall.qemu.hdc_disk_interface,n.hdd_disk_interface=this.applianceToInstall.qemu.hdd_disk_interface,n.category=this.getCategory(),n.first_port_name=this.applianceToInstall.first_port_name,n.port_name_format=this.applianceToInstall.port_name_format,n.port_segment_size=this.applianceToInstall.port_segment_size,n.default_name_format=this.applianceToInstall.default_name_format,n.symbol=this.applianceToInstall.symbol,n.tags=this.applianceToInstall.tags||[],n.compute_id="local",n.template_id=Ti(),n.hda_disk_image=this.findControllerImageName(e.images.hda_disk_image),n.hdb_disk_image=this.findControllerImageName(e.images.hdb_disk_image),n.hdc_disk_image=this.findControllerImageName(e.images.hdc_disk_image),n.hdd_disk_image=this.findControllerImageName(e.images.hdd_disk_image),n.cdrom_image=this.findControllerImageName(e.images.cdrom_image),n.template_type="qemu",n.usage=this.applianceToInstall.usage,n.platform=this.applianceToInstall.qemu.arch;let o=this.dialog.open(bh,{width:"400px",autoFocus:!1,disableClose:!0,panelClass:["base-dialog-panel","simple-dialog-panel","template-name-dialog-panel"],data:{name:this.applianceToInstall.name}});o.componentInstance.controller=this.controller,o.afterClosed().subscribe(r=>{if(r)n.name=r,this.qemuService.addTemplate(this.controller,n).subscribe({next:a=>{this.templateService.newTemplateCreated.next(a),this.toasterService.success("Template added"),this.dialogRef.close()},error:a=>{let c=a.error?.message||a.message||"Failed to add template";this.toasterService.error(c),this.changeDetector.markForCheck()}});else return!1})}computeChecksumMd5(e,n=!1){return new Promise((o,r)=>{let c=new lU.ArrayBuffer,m=new FileReader,p=0;m.onerror=function(){r("MD5 computation failed - error reading the file")};function h(g){let M=Math.min(e.size,g+2097152);m.readAsArrayBuffer(e.slice(g,M))}m.onload=function(g){c.append(g.target.result),p+=2097152,p<e.size?h(p):o(c.end(n))},h(0)})}openSnackBar(){this.snackBar.openFromComponent(Il,{panelClass:"uplaoding-file-snackabar",data:{upload_file_type:"Image"}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-new-template-dialog"]],viewQuery:function(n,o){n&1&&tn(o.paginator,Tr,5)(o.stepper,mke,5),n&2&&nn(2)},inputs:{controller:"controller",project:"project",searchText:[1,"searchText"],category:[1,"category"]},outputs:{searchText:"searchTextChange",category:"categoryChange"},decls:31,vars:6,consts:[["stepper",""],["file",""],["fileBios",""],["menuBios","matMenu"],["file2",""],["menuHda","matMenu"],["file3",""],["menuHdb","matMenu"],["file4",""],["menuHdc","matMenu"],["file5",""],["menuHdd","matMenu"],["file6",""],["menuCdrom","matMenu"],["menuIos","matMenu"],["fileiou",""],["menuIou","matMenu"],["mat-dialog-title","",1,"new-template__title"],[1,"new-template__stepper",3,"linear"],[1,"new-template__step"],["matStepLabel","",1,"new-template__step-label"],[1,"new-template__content"],[1,"new-template__radio-group",3,"change","value"],["value","install",1,"new-template__radio-button"],["value","import","disabled","",1,"new-template__radio-button"],[1,"new-template__feature-unavailable"],[1,"new-template__actions"],["mat-button","","matStepperNext",""],["mat-button","",3,"click"],[1,"new-template__import-area"],["mat-button","","matStepperPrevious",""],["mat-button",""],[1,"new-template__table-header"],["appearance","fill",1,"new-template__filter-field"],["matInput","",3,"input","value"],["appearance","fill",1,"new-template__category-field"],[3,"selectionChange","value"],[3,"value"],[1,"new-template__table-container"],["matSort","",1,"new-template__table",3,"matSortChange","dataSource"],["matColumnDef","name"],["mat-sort-header","",4,"matHeaderCellDef"],[4,"matCellDef"],["matColumnDef","emulator"],["matColumnDef","vendor"],["matColumnDef","actions"],[4,"matHeaderCellDef"],["class","new-template__actions-cell",4,"matCellDef"],[4,"matHeaderRowDef"],[4,"matRowDef","matRowDefColumns"],["showFirstLastButtons","",3,"pageSizeOptions"],["mat-sort-header",""],[1,"new-template__actions-cell"],["mat-icon-button","","matTooltip","Install","matTooltipClass","custom-tooltip",3,"click"],["mat-icon-button","","matTooltip","Show info","matTooltipClass","custom-tooltip",3,"click"],["type","file","accept",".gns3appliance, .gns3a","ng2FileSelect","",1,"new-template__file-input",3,"change","uploader"],["mat-raised-button","","color","primary",1,"new-template__import-button",3,"click"],[1,"new-template__install-section"],[1,"new-template__section-header"],["mat-icon-button","","matTooltip","Refresh list of images","matTooltipClass","custom-tooltip",3,"click"],["multi","true",1,"new-template__version-accordion"],[2,"display","flex","align-items","center","justify-content","space-between","width","100%","padding-right","16px"],[2,"font-weight","500"],[1,"new-template__version-summary"],[1,"new-template__version-count"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"new-template__version-content"],[1,"new-template__image-item",3,"new-template__image-item--installed","new-template__image-item--missing"],[1,"new-template__image-item"],[1,"new-template__image-name"],[1,"new-template__image-status"],[1,"new-template__status-badge","new-template__status-badge--ready"],[1,"new-template__status-badge","new-template__status-badge--missing"],[1,"new-template__action-group"],["type","file","ng2FileSelect","",1,"new-template__file-input",3,"change","uploader"],["mat-stroked-button","",1,"new-template__more-menu",3,"matMenuTriggerFor"],["mat-menu-item","",3,"click"],[1,"new-template__upload-progress"],[1,"new-template__progress-info"],[1,"new-template__progress-text"],[1,"new-template__progress-percentage"],["mode","determinate",3,"value"],["mat-button","",1,"new-template__cancel-button",3,"click"],["mat-raised-button","","color","primary",1,"new-template__create-button",3,"click"],[1,"new-template__image-list"],[1,"new-template__list-item"],["mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",17),d(1,"Add new template"),l(),s(2,"mat-horizontal-stepper",18,0)(4,"mat-step",19),Ae(5,hke,1,0,"ng-template",20),s(6,"mat-dialog-content",21)(7,"mat-radio-group",22),v("change",function(a){return o.setAction(a.value)}),s(8,"mat-radio-button",23),d(9," Install new appliance from the GNS controller "),l(),s(10,"mat-radio-button",24),d(11," Import an appliance file "),s(12,"span",25),d(13,"(Feature not complete)"),l()()()(),s(14,"mat-dialog-actions",26)(15,"button",27),d(16,"Next"),l(),s(17,"button",28),v("click",function(){return o.onCloseClick()}),d(18,"Cancel"),l()()(),s(19,"mat-step",19),Ae(20,fke,1,1,"ng-template",20),s(21,"mat-dialog-content",21),A(22,Tke,28,7),A(23,Eke,5,1,"div",29),l(),s(24,"mat-dialog-actions",26)(25,"button",30),d(26,"Back"),l(),A(27,Dke,2,0,"button",31),s(28,"button",28),v("click",function(){return o.onCloseClick()}),d(29,"Cancel"),l()()(),A(30,hTe,12,4,"mat-step",19),l()),n&2&&(u(2),x("linear",!1),u(5),x("value",o.action),u(15),O(o.action==="install"?22:-1),u(),O(o.action==="import"?23:-1),u(4),O(o.action==="install"?27:-1),u(3),O(o.applianceToInstall?30:-1))},dependencies:[Z,Ce,Ve,Be,Wt,go,Io,ko,$,le,ze,El,cc,ib,dc,IV,AV,Dt,Me,ke,lt,Mt,At,St,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,d_,Tr,zr,Oo,ma,we,Te,Pl,nd,Si,Ot,wl,op,Ud,Gd,ip,te,se,Qe,Fn,ot,kn,xl,Gc],styles:[".new-template__title[_ngcontent-%COMP%]{margin:0;padding:24px 24px 16px;font-size:18px;font-weight:500;color:var(--mat-sys-on-surface)}.new-template__stepper[_ngcontent-%COMP%], .new-template__step[_ngcontent-%COMP%]{background:transparent}.new-template__step-label[_ngcontent-%COMP%]{font-size:14px}.new-template__content[_ngcontent-%COMP%]{padding:16px 24px;max-height:60vh;overflow-y:auto}.new-template__radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.new-template__radio-button[_ngcontent-%COMP%]{font-size:14px}.new-template__feature-unavailable[_ngcontent-%COMP%]{margin-left:8px;font-size:13px;font-style:italic;color:var(--mat-sys-on-surface-variant);opacity:.8}.new-template__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;padding:16px 24px 24px;gap:12px}.new-template__table-header[_ngcontent-%COMP%]{display:flex;gap:16px;margin-bottom:16px}.new-template__filter-field[_ngcontent-%COMP%]{flex:1}.new-template__category-field[_ngcontent-%COMP%]{width:180px}.new-template__table-container[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:12px;overflow:hidden}.new-template__table[_ngcontent-%COMP%]{width:100%}.new-template__actions-cell[_ngcontent-%COMP%]{text-align:right;justify-content:flex-end}.new-template__import-area[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;background:var(--mat-sys-surface);border-radius:12px;border:2px dashed var(--mat-sys-outline-variant)}.new-template__import-button[_ngcontent-%COMP%]{margin-top:16px}.new-template__file-input[_ngcontent-%COMP%]{display:none}.new-template__install-section[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:12px;padding:16px}.new-template__section-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;font-size:14px;font-weight:500;color:var(--mat-sys-on-surface)}.new-template__create-button[_ngcontent-%COMP%]{width:100%}.new-template__version-accordion[_ngcontent-%COMP%]{margin-bottom:12px}.new-template__version-accordion[_ngcontent-%COMP%] mat-expansion-panel[_ngcontent-%COMP%]{border-radius:12px;margin-bottom:8px;box-shadow:0 1px 3px color-mix(in srgb,var(--mat-sys-shadow) 8%,transparent);transition:all .2s cubic-bezier(.4,0,.2,1)}.new-template__version-accordion[_ngcontent-%COMP%] mat-expansion-panel[_ngcontent-%COMP%]:hover{box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 12%,transparent)}.new-template__version-accordion[_ngcontent-%COMP%] mat-expansion-panel.mat-expanded[_ngcontent-%COMP%]{margin-bottom:16px}.new-template__version-accordion[_ngcontent-%COMP%] mat-expansion-panel-header[_ngcontent-%COMP%]{padding:0 16px;height:56px}.new-template__version-accordion[_ngcontent-%COMP%] mat-expansion-panel-header[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-low)}.new-template__version-accordion[_ngcontent-%COMP%] mat-expansion-panel-header[_ngcontent-%COMP%] .mat-content[_ngcontent-%COMP%]{display:flex;align-items:center}.new-template__version-summary[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;margin-left:12px;font-size:13px;color:var(--mat-sys-on-surface-variant)}.new-template__version-count[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:2px 8px;border-radius:12px;background:var(--mat-sys-surface-container-highest);font-size:12px;font-weight:500}.new-template__version-count--complete[_ngcontent-%COMP%]{background:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container)}.new-template__version-count--partial[_ngcontent-%COMP%]{background:var(--mat-sys-tertiary-container);color:var(--mat-sys-on-tertiary-container)}.new-template__version-content[_ngcontent-%COMP%]{padding:0 16px 16px}.new-template__version-summary[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.new-template__version-item[_ngcontent-%COMP%]{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--mat-sys-outline-variant)}.new-template__version-item[_ngcontent-%COMP%]:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.new-template__version-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.new-template__version-name[_ngcontent-%COMP%]{font-weight:500;color:var(--mat-sys-on-surface)}.new-template__image-list[_ngcontent-%COMP%]{padding:0}.new-template__list-item[_ngcontent-%COMP%]{height:auto;min-height:48px;padding:8px 0}.new-template__image-item[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;width:100%;background:var(--mat-sys-surface-container-low);border:1px solid var(--mat-sys-outline-variant);border-radius:12px;padding:12px 16px;transition:all .2s cubic-bezier(.4,0,.2,1)}.new-template__image-item[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container);box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.new-template__image-item--installed[_ngcontent-%COMP%]{border-left:4px solid var(--mat-sys-primary)}.new-template__image-item--missing[_ngcontent-%COMP%]{border-left:4px solid var(--mat-sys-tertiary)}.new-template__image-name[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface);word-break:break-word}.new-template__image-status[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.new-template__status-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:16px;font-size:13px;font-weight:500}.new-template__status-badge[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;height:18px;width:18px}.new-template__status-badge--ready[_ngcontent-%COMP%]{background:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container)}.new-template__status-badge--missing[_ngcontent-%COMP%]{background:var(--mat-sys-error-container);color:var(--mat-sys-on-error-container)}.new-template__action-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.new-template__action-buttons[_ngcontent-%COMP%]{display:flex;gap:8px}.new-template__more-menu[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;height:20px;width:20px}.new-template__upload-progress[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;padding:12px 16px;background:var(--mat-sys-primary-container);border-radius:8px;margin-top:12px}.new-template__upload-progress[_ngcontent-%COMP%] mat-progress-bar[_ngcontent-%COMP%]{height:4px;border-radius:2px}.new-template__progress-info[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--mat-sys-on-primary-container)}.new-template__progress-text[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.new-template__progress-text[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;height:18px;width:18px;animation:_ngcontent-%COMP%_spin 1s linear infinite}.new-template__progress-percentage[_ngcontent-%COMP%]{font-weight:500}.new-template__cancel-button[_ngcontent-%COMP%]{min-width:auto;padding:4px 8px;font-size:12px}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(max-width:640px){.new-template__title[_ngcontent-%COMP%]{padding:16px 16px 12px;font-size:18px}.new-template__content[_ngcontent-%COMP%]{padding:12px 16px;max-height:50vh}.new-template__table-header[_ngcontent-%COMP%]{flex-direction:column;gap:12px}.new-template__category-field[_ngcontent-%COMP%]{width:100%}.new-template__actions[_ngcontent-%COMP%]{padding:12px 16px 16px;flex-direction:column}.new-template__version-header[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:8px}}"],data:{animation:[fI("detailExpand",[V1("collapsed",Bu({height:"0px",minHeight:"0",visibility:"hidden"})),V1("expanded",Bu({height:"*",visibility:"visible"})),_I("expanded <=> collapsed",gI("225ms cubic-bezier(0.4, 0.0, 0.2, 1)"))])]},changeDetection:0})}return t})();function GN(t,i,e){return t=t.toLowerCase(),i=i.toLowerCase(),(t<i?-1:1)*(e?1:-1)}var yk=(()=>{class t{getDrawingElement(){let e=new Es;return e.height=100,e.width=100,e.fill="#000000",e.fill_opacity=0,e.font_family="Noto Sans",e.font_size=11,e.font_weight="bold",e}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Sk=(()=>{class t{getDrawingElement(){let e=new Gi;return e.fill="#ffffff",e.fill_opacity=1,e.stroke="#000000",e.stroke_width=2,e.cx=100,e.cy=100,e.rx=100,e.ry=100,e.width=200,e.height=200,e}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var wk=(()=>{class t{getDrawingElement(){let e=new da;return e.fill="#ffffff",e.fill_opacity=1,e.stroke="#000000",e.stroke_width=2,e.width=200,e.height=100,e.rx=0,e.ry=0,e}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Mk=(()=>{class t{getDrawingElement(){let e=new Js;return e.stroke="#000000",e.stroke_width=2,e.x1=0,e.x2=200,e.y1=0,e.y2=0,e.width=100,e.height=0,e}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var kk=(()=>{class t{getDrawingElement(){let e=new wa;return e.stroke="var(--gns3-canvas-link-color)",e.stroke_width=2,e.stroke_dasharray="none",e.points=[{x:0,y:0},{x:100,y:50},{x:200,y:0}],e.curve_type="catmullrom",e.arrow_start=!1,e.arrow_end=!0,e.width=200,e.height=50,e}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var u_=(()=>{class t{textElementFactory;ellipseElementFactory;rectangleElementFactory;lineElementFactory;curveElementFactory;factory;availableFactories;constructor(e,n,o,r,a){this.textElementFactory=e,this.ellipseElementFactory=n,this.rectangleElementFactory=o,this.lineElementFactory=r,this.curveElementFactory=a,this.availableFactories={text:this.textElementFactory,ellipse:this.ellipseElementFactory,rectangle:this.rectangleElementFactory,line:this.lineElementFactory,curve:this.curveElementFactory}}getDrawingMock(e){this.factory=this.availableFactories[e];let n=new Va;return n.element=this.factory.getDrawingElement(),n}static \u0275fac=function(n){return new(n||t)(ge(yk),ge(Sk),ge(wk),ge(Mk),ge(kk))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var dU=(()=>{class t{controller=oe(void 0);project;selectedDrawing;drawingSaved=new ve;pointToAddSelected;drawingService=f(Wi);drawingsDataSource=f(Vi);drawingsEventSource=f(Ko);drawingsFactory=f(u_);mapDrawingToSvgConverter=f(Ps);ngOnInit(){this.pointToAddSelected=this.drawingsEventSource.pointToAddSelected.subscribe(e=>this.onDrawingSaved(e))}ngOnChanges(e){e.selectedDrawing&&!e.selectedDrawing.isFirstChange()&&(this.selectedDrawing=e.selectedDrawing.currentValue,this.selectedDrawing!=="text"&&this.drawingsEventSource.selected.emit(this.selectedDrawing))}onDrawingSaved(e){if(this.selectedDrawing==="curve")return;let n=this.drawingsFactory.getDrawingMock(this.selectedDrawing),o=this.mapDrawingToSvgConverter.convert(n);this.drawingService.add(this.controller(),this.project.project_id,e.x,e.y,o).subscribe(r=>{this.drawingsDataSource.add(r),this.drawingSaved.emit(!0)})}ngOnDestroy(){this.pointToAddSelected.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-drawing-added"]],inputs:{controller:[1,"controller"],project:"project",selectedDrawing:"selectedDrawing"},outputs:{drawingSaved:"drawingSaved"},features:[un],decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var pU=nl(mU());function CTe(t,i){t&1&&(s(0,"mat-error"),d(1,"Name for screenshot is required"),l())}var Tk=(()=>{class t{dialogRef=f(Pe);toasterService=f(fe);formBuilder=f(jt);cd=f(K);nameForm;isPngAvailable;filetype="svg";constructor(){this.nameForm=this.formBuilder.group({screenshotName:new re(`screenshot-${Date.now()}`,[be.required])}),this.isPngAvailable=!0}ngOnInit(){this.cd.markForCheck()}get form(){return this.nameForm.controls}onAddClick(){if(this.nameForm.invalid)return;let e={name:this.nameForm.get("screenshotName").value,filetype:this.filetype};this.dialogRef.close(e)}onNoClick(){this.dialogRef.close()}onKeyDown(e){e.key==="Enter"&&this.onAddClick()}setFiletype(e){this.isPngAvailable&&(this.filetype=e,this.cd.markForCheck())}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-screenshot-dialog"]],decls:17,vars:3,consts:[["mat-dialog-title",""],["mat-dialog-content",""],["aria-label","Select file type",1,"radio-group"],["value","1","checked","",3,"click"],["value","2",3,"click","disabled"],[1,"name-form",3,"formGroup"],[1,"name-form"],["matInput","","type","text","formControlName","screenshotName","placeholder","Please enter name",3,"keydown"],["mat-dialog-actions",""],["mat-button","",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Take a screenshot"),l(),s(2,"div",1)(3,"mat-radio-group",2)(4,"mat-radio-button",3),v("click",function(){return o.setFiletype("svg")}),d(5,"SVG"),l(),s(6,"mat-radio-button",4),v("click",function(){return o.setFiletype("png")}),d(7,"PNG"),l()(),s(8,"form",5)(9,"mat-form-field",6)(10,"input",7),v("keydown",function(a){return o.onKeyDown(a)}),l(),A(11,CTe,2,0,"mat-error"),l()()(),s(12,"div",8)(13,"button",9),v("click",function(){return o.onNoClick()}),d(14,"Cancel"),l(),s(15,"button",10),v("click",function(){return o.onAddClick()}),d(16,"Take a screenshot"),l()()),n&2&&(u(6),x("disabled",!o.isPngAvailable),u(2),x("formGroup",o.nameForm),u(3),O(o.form.screenshotName!=null&&o.form.screenshotName.touched&&(o.form.screenshotName!=null&&o.form.screenshotName.errors)&&(o.form.screenshotName!=null&&o.form.screenshotName.errors.required)?11:-1))},dependencies:[Z,Ce,Ve,Be,Wt,$,le,we,Te,ke,Ni,Dt,go,Io,ko,ct,Ue,vt,mt,He,pt,bt],styles:[".name-form[_ngcontent-%COMP%]{width:100%;margin-top:16px}.radio-group[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;gap:24px}"],changeDetection:0})}return t})();var Ek=(()=>{class t{data;dialogRef=f(Pe);confirmActionData={actionType:"Unlock",isAction:!1};constructor(e){this.data=e}ngOnInit(){this.confirmActionData.actionType=this.data.actionType}confirmAction(){this.confirmActionData.isAction=this.data.actionType=="Lock",this.dialogRef.close(this.confirmActionData)}onNoClick(){this.dialogRef.close(!1)}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-project-map-lock-confirmation-dialog"]],decls:10,vars:2,consts:[["mat-dialog-title",""],[2,"display","flex","justify-content","flex-end","gap","8px","padding","16px"],["mat-button","",3,"click"],["mat-button","","cdkFocusInitial","",3,"click"]],template:function(n,o){n&1&&(s(0,"h2",0),d(1),l(),s(2,"mat-dialog-content")(3,"p"),d(4),l()(),s(5,"div",1)(6,"button",2),v("click",function(){return o.onNoClick()}),d(7,"No"),l(),s(8,"button",3),v("click",function(){return o.confirmAction()}),d(9,"Yes"),l()()),n&2&&(u(),X("Confirm ",o.confirmActionData.actionType," All"),u(3),X("Are you sure you want to ",o.confirmActionData.actionType," all devices?"))},dependencies:[Ce,Ve,Wt,$,le],encapsulation:2,changeDetection:0})}return t})();var h_=(()=>{class t{currentProjectId$=new qt(null);currentSessionId$=new qt(null);sessions$=new qt([]);messagesMap=new Map;messages$=new qt(new Map);isStreaming$=new qt(!1);currentToolCalls$=new qt(new Map);error$=new qt(null);panelState$=new qt({isOpen:!1,width:800,height:900,isMaximized:!1,isMinimized:!1,position:{top:80,right:20}});sessionUIStateMap=new Map;sessionUIStates$=new qt(new Map);constructor(){this.loadPanelState()}setCurrentProjectId(e){this.currentProjectId$.next(e),e&&(this.messagesMap.clear(),this.messages$.next(new Map),this.sessions$.next([]))}getCurrentProjectId(){return this.currentProjectId$.asObservable()}getCurrentProjectIdValue(){return this.currentProjectId$.value}setCurrentSessionId(e){this.currentSessionId$.next(e)}getCurrentSessionId(){return this.currentSessionId$.asObservable()}getCurrentSessionIdValue(){return this.currentSessionId$.value}setSessions(e){this.sessions$.next(e)}getSessions(){return this.sessions$.asObservable()}getSessionsValue(){return this.sessions$.value}addSession(e){let n=this.sessions$.value;this.sessions$.next([e,...n])}updateSession(e){let n=this.sessions$.value,o=n.findIndex(r=>r.thread_id===e.thread_id);if(o!==-1){let r=[...n];r[o]=e,this.sessions$.next(r)}}deleteSession(e){let n=this.sessions$.value;this.sessions$.next(n.filter(o=>o.thread_id!==e)),this.messagesMap.delete(e),this.messages$.next(new Map(this.messagesMap)),this.currentSessionId$.value===e&&this.currentSessionId$.next(null)}getMessages(e){return new _r(n=>{let o=e||this.currentSessionId$.value;if(!o){n.next([]);return}let r=this.messagesMap.get(o)||[];n.next(r)})}getMessagesValue(e){let n=e||this.currentSessionId$.value;return n?this.messagesMap.get(n)||[]:[]}setMessages(e,n){this.messagesMap.set(e,n),this.messages$.next(new Map(this.messagesMap))}addMessage(e,n){let o=this.messagesMap.get(e)||[];this.messagesMap.set(e,[...o,n]),this.messages$.next(new Map(this.messagesMap))}updateLastMessage(e,n){let o=this.messagesMap.get(e);if(o&&o.length>0){let r=o[o.length-1],a=[...o];a[a.length-1]=tt(H({},r),{content:r.content+n}),this.messagesMap.set(e,a),this.messages$.next(new Map(this.messagesMap))}}clearMessages(e){this.messagesMap.delete(e),this.messages$.next(new Map(this.messagesMap))}setStreamingState(e){this.isStreaming$.next(e)}getStreamingState(){return this.isStreaming$.asObservable()}getStreamingStateValue(){return this.isStreaming$.value}setCurrentToolCalls(e){this.currentToolCalls$.next(new Map(e))}addOrUpdateToolCall(e){let n=new Map(this.currentToolCalls$.value);n.set(e.id,e),this.currentToolCalls$.next(n)}removeToolCall(e){let n=new Map(this.currentToolCalls$.value);n.delete(e),this.currentToolCalls$.next(n)}clearToolCalls(){this.currentToolCalls$.next(new Map)}getCurrentToolCalls(){return this.currentToolCalls$.asObservable()}getCurrentToolCallsValue(){return this.currentToolCalls$.value}setError(e){this.error$.next(e)}getError(){return this.error$.asObservable()}clearError(){this.error$.next(null)}setPanelState(e){let n=this.panelState$.value,o=H(H({},n),e);this.panelState$.next(o),this.savePanelState(o)}getPanelState(){return this.panelState$.asObservable()}getPanelStateValue(){return this.panelState$.value}openPanel(){let e=this.panelState$.value;this.panelState$.next(tt(H({},e),{isOpen:!0})),this.savePanelState(this.panelState$.value)}closePanel(){let e=this.panelState$.value;this.panelState$.next(tt(H({},e),{isOpen:!1})),this.savePanelState(this.panelState$.value)}maximizePanel(){let e=this.panelState$.value;this.panelState$.next(tt(H({},e),{isMaximized:!0,isMinimized:!1})),this.savePanelState(this.panelState$.value)}minimizePanel(){let e=this.panelState$.value;this.panelState$.next(tt(H({},e),{isMaximized:!1,isMinimized:!0})),this.savePanelState(this.panelState$.value)}restorePanel(){let e=this.panelState$.value;this.panelState$.next(tt(H({},e),{isMaximized:!1,isMinimized:!1})),this.savePanelState(this.panelState$.value)}updatePanelPosition(e){let n=this.panelState$.value,o=H(H({},n.position),e);this.panelState$.next(tt(H({},n),{position:o})),this.savePanelState(this.panelState$.value)}updatePanelSize(e,n){let o=this.panelState$.value;this.panelState$.next(tt(H({},o),{width:e,height:n})),this.savePanelState(this.panelState$.value)}savePanelState(e){try{localStorage.setItem("ai-chat-panel-state",JSON.stringify(e))}catch(n){console.error("Failed to save panel state:",n)}}loadPanelState(){try{let e=localStorage.getItem("ai-chat-panel-state");if(e){let n=JSON.parse(e);n.isOpen=!1,n.isMaximized=!1,n.isMinimized=!1,this.panelState$.next(n)}}catch(e){console.error("Failed to load panel state:",e)}}setSessionUIState(e,n){let o=new Map(this.sessionUIStateMap),r=o.get(e)||{isEditing:!1,isExpanded:!0},a=H(H({},r),n);o.set(e,a),this.sessionUIStateMap=o,this.sessionUIStates$.next(new Map(o))}getSessionUIState(e){return new _r(n=>{n.next(this.sessionUIStateMap.get(e))})}getSessionUIStateValue(e){return this.sessionUIStateMap.get(e)}resetAll(){this.currentProjectId$.next(null),this.currentSessionId$.next(null),this.sessions$.next([]),this.messagesMap.clear(),this.messages$.next(new Map),this.isStreaming$.next(!1),this.currentToolCalls$.next(new Map),this.error$.next(null),this.sessionUIStateMap.clear(),this.sessionUIStates$.next(new Map)}resetSessionState(){this.currentSessionId$.next(null),this.messagesMap.clear(),this.messages$.next(new Map),this.isStreaming$.next(!1),this.currentToolCalls$.next(new Map),this.error$.next(null)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var qN=t=>({selected:t}),xTe=(t,i)=>({unmarkedLight:t,marked:i}),yTe=t=>({unmarkedLight:t});function STe(t,i){if(t&1){let e=j();s(0,"button",18),v("click",function(){D(e);let o=b();return P(o.addDrawing("line"))}),Vn(),s(1,"svg",19),F(2,"line",20),l()()}if(t&2){let e=b();u(2),x("ngClass",ln(1,qN,e.drawTools.isLineChosen))}}function wTe(t,i){if(t&1){let e=j();s(0,"button",18),v("click",function(){D(e);let o=b();return P(o.addDrawing("line"))}),Vn(),s(1,"svg",19),F(2,"line",20),l()()}if(t&2){let e=b();u(2),x("ngClass",ln(1,qN,e.drawTools.isLineChosen))}}var f_=(()=>{class t{toolsService=f(Al);mapSettingsService=f(To);drawingService=f(Wi);symbolService=f(kl);dialog=f(Je);themeService=f(yi);projectServices=f(Fi);nodeService=f(wt);nodesDataSource=f(ci);drawingsDataSource=f(Vi);drawingsEventSource=f(Ko);aiChatStore=f(h_);cdr=f(K);toaster=f(fe);project=oe(void 0);controller=oe(void 0);aiChatOpened=new ve;nodes=[];drawing=[];selectedDrawing;lock="lock_open";drawTools={isRectangleChosen:!1,isEllipseChosen:!1,isLineChosen:!1,isCurveChosen:!1,isTextChosen:!1};isLocked=!1;isLightThemeEnabled=!1;isAIChatOpen=!1;isAIMinimized=!1;projectSubscriptions=[];aiChatStateSubscription;ngOnInit(){this.themeService.getActualTheme()==="light"?this.isLightThemeEnabled=!0:this.isLightThemeEnabled=!1,this.projectSubscriptions.push(this.projectServices.projectLockIconSubject.subscribe(e=>{e&&this.getAllNodesAndDrawingStatus()})),this.getAllNodesAndDrawingStatus(),this.projectSubscriptions.push(this.drawingsEventSource.drawingCompleted.subscribe(e=>{e==="curve"&&this.resetDrawToolChoice()})),this.aiChatStateSubscription=this.aiChatStore.getPanelState().subscribe(e=>{this.isAIChatOpen=e.isOpen,this.isAIMinimized=e.isMinimized,this.cdr.markForCheck()})}getCssClassForIcon(e){return e==="text"?{unmarkedLight:!this.drawTools.isTextChosen&&this.isLightThemeEnabled,marked:this.drawTools.isTextChosen}:e==="rectangle"?{unmarkedLight:!this.drawTools.isRectangleChosen&&this.isLightThemeEnabled,marked:this.drawTools.isRectangleChosen}:{unmarkedLight:!this.drawTools.isEllipseChosen&&this.isLightThemeEnabled,marked:this.drawTools.isEllipseChosen}}takeScreenshot(){this.dialog.open(Tk,{panelClass:["base-dialog-panel","simple-dialog-panel"],autoFocus:!1,disableClose:!0}).afterClosed().subscribe(n=>{n&&this.saveImage(n)})}async saveImage(e){let o=document.getElementById("map").cloneNode(!0),r=document.querySelector(".project-map");if(r){let a=this.resolveBackground(r);a&&(o.style.background=a);let c=this.getCanvasColors(r);this.applyCanvasColors(o,c.label,c.link)}if(await this.processEmbeddedImages(o),e.filetype==="svg"&&this.resolveAllCssVariables(o,r),e.filetype==="png")try{pU.saveSvgAsPng(o,`${e.name}.png`)}catch(a){throw console.error("Failed to save PNG:",a),this.toaster.error("Failed to save screenshot as PNG"),a}else{let c=new XMLSerializer().serializeToString(o),m=new Blob([c],{type:"image/svg+xml"}),p=URL.createObjectURL(m),h=document.createElement("a"),g=!1;try{h.href=p,h.download=`${e.name}.svg`,document.body.appendChild(h),g=!0,h.click()}catch(M){throw console.error("Failed to save SVG:",M),this.toaster.error("Failed to save screenshot as SVG"),M}finally{g&&document.body.removeChild(h),URL.revokeObjectURL(p)}}}resolveBackground(e){let n=window.getComputedStyle(e),o=n.background;if(o&&o!=="none")return o;let r=e.style.getPropertyValue("--gns3-map-bg");if(r&&r.startsWith("var(--")){let a=r.slice(4,-1),c=n.getPropertyValue(a).trim();if(c)return c}return null}getCanvasColors(e){let n=window.getComputedStyle(e),o=n.getPropertyValue("--gns3-canvas-label-color").trim(),r=n.getPropertyValue("--gns3-canvas-link-color").trim();return{label:o,link:r}}applyCanvasColors(e,n,o){e.querySelectorAll("text.label").forEach(c=>{c.style.setProperty("fill",n)}),e.querySelectorAll("path.ethernet_link").forEach(c=>{let m=c,p=m.getAttribute("stroke");(!p||p.startsWith("var(--"))&&m.style.setProperty("stroke",o)})}resolveAllCssVariables(e,n){if(!n)return;let o=window.getComputedStyle(n);e.querySelectorAll("*[style]").forEach(c=>{let m=c,p=m.getAttribute("style");if(!p)return;let h=p.replace(/var\(([^)]+)\)/g,(g,M)=>o.getPropertyValue(M).trim()||g);h!==p&&m.setAttribute("style",h)}),e.querySelectorAll("*").forEach(c=>{let m=c;["stroke","fill","color","background","background-color"].forEach(p=>{let h=m.getAttribute(p);if(h&&h.startsWith("var(")){let g=h.match(/var\(([^)]+)\)/)?.[1];if(g){let M=o.getPropertyValue(g).trim();M&&m.setAttribute(p,M)}}})})}async processEmbeddedImages(e){let n=Array.from(e.getElementsByTagName("image"));for(let o=0;o<n.length;o++){let r=n[o],a=r.getAttribute("href")||r.getAttribute("xlink:href");if(a)try{let c;if(a.startsWith("blob:"))c=await(await(await fetch(a)).blob()).text();else{let m=a.split("/symbols/");if(m.length>1){let p=m[m.length-1].replace("/raw",""),h=await this.symbolService.raw(this.controller(),p).toPromise();h&&(c=h.includes("-->")?h.split("-->")[1].trim():h.trim())}}if(c){let h=new DOMParser().parseFromString(c,"image/svg+xml").documentElement,g=e.ownerDocument.importNode(h,!0);if(g.nodeName!=="svg"){let _=e.ownerDocument.createElementNS("http://www.w3.org/2000/svg","svg");for(_.setAttribute("xmlns","http://www.w3.org/2000/svg");g.firstChild;)_.appendChild(g.firstChild);g=_}let M=r.getAttribute("width"),C=r.getAttribute("height");g.setAttribute("width",M||"60"),g.setAttribute("height",C||"60"),g.setAttribute("x",r.getAttribute("x")||"0"),g.setAttribute("y",r.getAttribute("y")||"0"),r.parentNode.replaceChild(g,r)}}catch(c){console.warn(`Failed to process embedded image: ${a}`,c)}}}addDrawing(e){let n=document.getElementById("map");switch(e==="rectangle"&&this.drawTools.isRectangleChosen||e==="ellipse"&&this.drawTools.isEllipseChosen||e==="line"&&this.drawTools.isLineChosen||e==="curve"&&this.drawTools.isCurveChosen||e==="text"&&this.drawTools.isTextChosen?(document.documentElement.style.cursor="default",n&&(n.style.cursor="default")):(document.documentElement.style.cursor="crosshair",n&&(n.style.cursor="crosshair")),e){case"rectangle":this.drawTools.isTextChosen=!1,this.drawTools.isEllipseChosen=!1,this.drawTools.isRectangleChosen=!this.drawTools.isRectangleChosen,this.drawTools.isLineChosen=!1;break;case"ellipse":this.drawTools.isTextChosen=!1,this.drawTools.isEllipseChosen=!this.drawTools.isEllipseChosen,this.drawTools.isRectangleChosen=!1,this.drawTools.isLineChosen=!1;break;case"line":this.drawTools.isTextChosen=!1,this.drawTools.isEllipseChosen=!1,this.drawTools.isRectangleChosen=!1,this.drawTools.isLineChosen=!this.drawTools.isLineChosen;break;case"curve":this.drawTools.isTextChosen=!1,this.drawTools.isEllipseChosen=!1,this.drawTools.isRectangleChosen=!1,this.drawTools.isLineChosen=!1,this.drawTools.isCurveChosen=!this.drawTools.isCurveChosen;break;case"text":this.drawTools.isTextChosen=!this.drawTools.isTextChosen,this.drawTools.isEllipseChosen=!1,this.drawTools.isRectangleChosen=!1,this.drawTools.isLineChosen=!1,this.toolsService.textAddingToolActivation(this.drawTools.isTextChosen);break}this.selectedDrawing=this.selectedDrawing===e?"":e}onDrawingSaved(){this.resetDrawToolChoice()}resetDrawToolChoice(){let e=document.getElementById("map");document.documentElement.style.cursor="default",e&&(e.style.cursor="default"),this.drawTools.isRectangleChosen=!1,this.drawTools.isEllipseChosen=!1,this.drawTools.isLineChosen=!1,this.drawTools.isCurveChosen=!1,this.drawTools.isTextChosen=!1,this.selectedDrawing="",this.toolsService.textAddingToolActivation(this.drawTools.isTextChosen)}getAllNodesAndDrawingStatus(){let e=this.controller(),n=this.project();!e||!n||!n.project_id||(this.projectServices.getProjectStatus(e,n.project_id).subscribe({next:o=>{o?(this.isLocked=!0,this.lock="lock"):(this.isLocked=!1,this.lock="lock_open"),this.cdr.markForCheck()},error:o=>{let r=o.error?.message||o.message||"Failed to get project status";this.toaster.error(r),this.cdr.markForCheck()}}),this.projectServices.nodes(e,n.project_id).subscribe({next:o=>{this.nodes=o,this.nodes.forEach(r=>{this.nodeService.updateNode(e,r).subscribe({next:a=>{this.nodesDataSource.update(a)},error:a=>{let c=a.error?.message||a.message||"Failed to update node";this.toaster.error(c),this.cdr.markForCheck()}})})},error:o=>{let r=o.error?.message||o.message||"Failed to load nodes";this.toaster.error(r),this.cdr.markForCheck()}}),this.projectServices.drawings(this.controller(),this.project().project_id).subscribe({next:o=>{this.drawing=o,this.drawing.forEach(r=>{this.drawingService.update(this.controller(),r).subscribe({next:a=>{this.drawingsDataSource.update(a)},error:a=>{let c=a.error?.message||a.message||"Failed to update drawing";this.toaster.error(c),this.cdr.markForCheck()}})})},error:o=>{let r=o.error?.message||o.message||"Failed to load drawings";this.toaster.error(r),this.cdr.markForCheck()}}))}changeLockValue(){this.dialog.open(Ek,{panelClass:["base-confirmation-dialog-panel","confirmation-warning-panel"],autoFocus:!1,disableClose:!0,data:{actionType:this.isLocked?"Unlock":"Lock"}}).afterClosed().subscribe(n=>{n&&n!=""&&(n.actionType=="Lock"&&n.isAction?(this.isLocked=!0,this.mapSettingsService.changeMapLockValue(this.isLocked),this.cdr.markForCheck(),this.lockAllNode()):(this.isLocked=!1,this.mapSettingsService.changeMapLockValue(this.isLocked),this.cdr.markForCheck(),this.unlockAllNode()))})}lockAllNode(){this.lock="lock",this.isLocked=!0,this.cdr.markForCheck(),this.drawingService.lockAllNodes(this.controller(),this.project()).subscribe({next:e=>{setTimeout(()=>{this.lock="lock",this.isLocked=!0,this.cdr.markForCheck()})},error:e=>{let n=e.error?.message||e.message||"Failed to lock nodes";this.toaster.error(n),this.cdr.markForCheck()}})}unlockAllNode(){this.lock="lock_open",this.isLocked=!1,this.cdr.markForCheck(),this.drawingService.unLockAllNodes(this.controller(),this.project()).subscribe({next:e=>{setTimeout(()=>{this.lock="lock_open",this.isLocked=!1,this.cdr.markForCheck()})},error:e=>{let n=e.error?.message||e.message||"Failed to unlock nodes";this.toaster.error(n),this.cdr.markForCheck()}})}uploadImageFile(e){this.readImageFile(e.target)}readImageFile(e){let n=e.files[0],o=new FileReader,r=new Image;o.onloadend=()=>{let a=o.result,c=this.createSvgFileForImage(a,r);this.drawingService.add(this.controller(),this.project().project_id,-(r.width/2),-(r.height/2),c).subscribe({next:()=>{},error:m=>{let p=m.error?.message||m.message||"Failed to add image";this.toaster.error(p),this.cdr.markForCheck()}})},r.onload=()=>{o.readAsDataURL(n)},r.src=window.URL.createObjectURL(n)}createSvgFileForImage(e,n){return`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="${n.height}"
|
||
width="${n.width}">
|
||
<image height="${n.height}" width="${n.width}" xlink:href="${e}"/>
|
||
</svg>`}ngOnDestroy(){this.projectSubscriptions.forEach(e=>e.unsubscribe()),this.aiChatStateSubscription&&this.aiChatStateSubscription.unsubscribe()}openAIChat(){!this.project()||!this.controller()||(this.isAIChatOpen?this.isAIMinimized?this.aiChatStore.restorePanel():this.aiChatStore.minimizePanel():this.aiChatOpened.emit())}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-project-map-menu"]],inputs:{project:[1,"project"],controller:[1,"controller"]},outputs:{aiChatOpened:"aiChatOpened"},decls:31,vars:23,consts:[["file",""],["matTooltip","Add a note","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"menu-button",3,"click"],[3,"ngClass"],["type","file","accept",".svg, .bmp, .jpeg, .jpg, .gif, .png",1,"non-visible",3,"change"],["matTooltip","Insert a picture","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"menu-button",3,"click"],["matTooltip","Draw a rectangle","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"menu-button",3,"click"],["matTooltip","Draw an ellipse","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"menu-button",3,"click"],["matTooltip","Draw a line","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"menu-button"],["matTooltip","Draw a curve","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"menu-button",3,"click"],["height","20","width","20","viewBox","0 0 20 20"],["transform","rotate(20, 10, 10)"],["d","M 6 3 C 12 3, 12 6, 10 6 C 8 6, 6 8, 6 10 C 6 12, 8 14, 10 14 C 12 14, 14 17, 14 17","fill","none","stroke-width","2","stroke","currentColor",1,"draw-line-icon",3,"ngClass"],["matTooltip","Lock or unlock all items","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"menu-button",3,"click"],["matTooltip","Take a screenshot","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"menu-button",3,"click"],["matTooltip","AI Assistant","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"menu-button","ai-chat-button",3,"click"],[1,"ai-icon"],[3,"drawingSaved","controller","project","selectedDrawing"],["id","crowbar-workspace"],["matTooltip","Draw a line","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"menu-button",3,"click"],["height","20","width","20"],["x1","15","y1","5","x2","5","y2","15",1,"draw-line-icon",2,"stroke-width","2",3,"ngClass"]],template:function(n,o){if(n&1){let r=j();s(0,"button",1),v("click",function(){return o.addDrawing("text")}),s(1,"mat-icon",2),d(2,"create"),l()(),s(3,"input",3,0),v("change",function(c){return o.uploadImageFile(c)}),l(),s(5,"button",4),v("click",function(){D(r);let c=Re(4);return P(c.click())}),s(6,"mat-icon"),d(7,"image"),l()(),s(8,"button",5),v("click",function(){return o.addDrawing("rectangle")}),s(9,"mat-icon",2),d(10,"crop_3_2"),l()(),s(11,"button",6),v("click",function(){return o.addDrawing("ellipse")}),s(12,"mat-icon",2),d(13,"panorama_fish_eye"),l()(),A(14,STe,3,3,"button",7),A(15,wTe,3,3,"button",7),s(16,"button",8),v("click",function(){return o.addDrawing("curve")}),Vn(),s(17,"svg",9)(18,"g",10),F(19,"path",11),l()()(),vr(),s(20,"button",12),v("click",function(){return o.changeLockValue()}),s(21,"mat-icon",2),d(22),l()(),s(23,"button",13),v("click",function(){return o.takeScreenshot()}),s(24,"mat-icon",2),d(25,"photo_camera"),l()(),s(26,"button",14),v("click",function(){return o.openAIChat()}),s(27,"span",15),d(28,"AI"),l()(),s(29,"app-drawing-added",16),v("drawingSaved",function(){return o.onDrawingSaved()}),l(),F(30,"div",17)}n&2&&(u(),x("ngClass",o.getCssClassForIcon("text")),u(8),x("ngClass",o.getCssClassForIcon("rectangle")),u(3),x("ngClass",o.getCssClassForIcon("ellipse")),u(2),O(o.isLightThemeEnabled?-1:14),u(),O(o.isLightThemeEnabled?15:-1),u(4),x("ngClass",ln(16,qN,o.drawTools.isCurveChosen)),u(2),x("ngClass",il(18,xTe,!o.isLocked&&o.isLightThemeEnabled,o.isLocked)),u(),U(o.lock),u(2),x("ngClass",ln(21,yTe,!o.isLocked&&o.isLightThemeEnabled)),u(2),je("ai-active",o.isAIChatOpen&&!o.isAIMinimized)("ai-minimized",o.isAIChatOpen&&o.isAIMinimized),u(3),x("controller",o.controller())("project",o.project())("selectedDrawing",o.selectedDrawing))},dependencies:[Z,Zi,Ce,$,ze,te,se,Gt,Kt,Ea,Qe,dU],styles:['[_nghost-%COMP%]{display:flex;flex-direction:column;align-items:center}button.mat-mdc-icon-button[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;--mdc-icon-button-icon-size: 20px;--mat-icon-button-icon-size: 20px;--mat-icon-button-state-layer-size: 40px;--mdc-icon-button-state-layer-size: 40px}button.mat-mdc-icon-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;font-size:20px;margin:0}button.mat-mdc-icon-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:20px;height:20px}.unmarked[_ngcontent-%COMP%], .unmarkedLight[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface)}.marked[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.draw-line-icon.selected[_ngcontent-%COMP%]{stroke:var(--mat-sys-primary)}.non-visible[_ngcontent-%COMP%]{display:none}.draw-line-icon[_ngcontent-%COMP%]{stroke:var(--mat-sys-on-surface)}.ai-chat-button[_ngcontent-%COMP%] .ai-icon[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;font-family:Roboto,sans-serif;letter-spacing:-.5px}.ai-chat-button.ai-active[_ngcontent-%COMP%]{position:relative}.ai-chat-button.ai-active[_ngcontent-%COMP%]:after{content:"";position:absolute;top:4px;right:4px;width:4px;height:4px;background-color:var(--mat-sys-primary-container);border-radius:50%;box-shadow:0 0 8px var(--mat-sys-primary-container)}.ai-chat-button.ai-minimized[_ngcontent-%COMP%]{position:relative;background-color:var(--mat-sys-primary-container)}.ai-chat-button.ai-minimized[_ngcontent-%COMP%] .ai-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary-container);font-weight:900}.menu-button[_ngcontent-%COMP%]{transition:transform .1s ease}.menu-button[_ngcontent-%COMP%]:hover{transform:scale(1.3)}'],changeDetection:0})}return t})();var MTe=["text"],Dk=(()=>{class t{text=Ut("text");dialogRef=f(Pe);projectService=f(Fi);sanitizer=f(lr);cdr=f(K);controller;project;readmeHtml="";ngAfterViewInit(){let e="";this.projectService.getReadmeFile(this.controller,this.project.project_id).subscribe(n=>{if(n){e=n;let o=ji(e);this.readmeHtml=this.sanitizer.bypassSecurityTrustHtml(o),this.cdr.markForCheck()}})}onNoClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-project-readme"]],viewQuery:function(n,o){n&1&&tn(o.text,MTe,5),n&2&&nn()},decls:6,vars:1,consts:[["mat-dialog-title",""],[1,"textWrapper","markdown-body",3,"innerHTML"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Project README"),l(),F(2,"div",1),s(3,"div",2)(4,"button",3),v("click",function(){return o.onNoClick()}),d(5,"Close"),l()()),n&2&&(u(2),x("innerHTML",o.readmeHtml,Zp))},dependencies:[Z,Ce,Ve,Be,$,le],styles:[".textWrapper[_ngcontent-%COMP%]{height:500px;overflow-y:scroll}"],changeDetection:0})}return t})();var Ch=typeof window>"u"?!1:"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0;function kTe(t){let i=t.cloneNode(!0),e=i.querySelectorAll("[id]"),n=t.nodeName.toLowerCase();return i.removeAttribute("id"),e.forEach(o=>{o.removeAttribute("id")}),n==="canvas"?fU(t,i):(n==="input"||n==="select"||n==="textarea")&&hU(t,i),uU("canvas",t,i,fU),uU("input, textarea, select",t,i,hU),i}function uU(t,i,e,n){let o=i.querySelectorAll(t);if(o.length){let r=e.querySelectorAll(t);for(let a=0;a<o.length;a++)n(o[a],r[a])}}var TTe=0;function hU(t,i){i.type!=="file"&&(i.value=t.value),i.type==="radio"&&i.name&&(i.name=`mat-clone-${i.name}-${TTe++}`)}function fU(t,i){let e=i.getContext("2d");if(e)try{e.drawImage(t,0,0)}catch{}}function CU(t){return t.type.startsWith("touch")}function gU(t,i,e,n){let o={top:t.top,bottom:t.bottom,left:t.left,right:t.right};return i.top&&(o.top+=n),i.bottom&&(o.bottom+=n),i.left&&(o.left+=e),i.right&&(o.right+=e),o.height=o.bottom-o.top,o.width=o.right-o.left,o}function ETe(t,i){let e=0,n=0,o=t.nativeElement.style,a=["transform","-ms-transform","-moz-transform","-o-transform"].map(c=>o[c]).find(c=>!!c);if(a&&a.includes("translate")&&(e=a.replace(/.*translate3?d?\((-?[0-9]*)px, (-?[0-9]*)px.*/,"$1"),n=a.replace(/.*translate3?d?\((-?[0-9]*)px, (-?[0-9]*)px.*/,"$2")),i==="absolute")return{height:t.nativeElement.offsetHeight,width:t.nativeElement.offsetWidth,top:t.nativeElement.offsetTop-n,bottom:t.nativeElement.offsetHeight+t.nativeElement.offsetTop-n,left:t.nativeElement.offsetLeft-e,right:t.nativeElement.offsetWidth+t.nativeElement.offsetLeft-e};{let c=t.nativeElement.getBoundingClientRect();return{height:c.height,width:c.width,top:c.top-n,bottom:c.bottom-n,left:c.left-e,right:c.right-e,scrollTop:t.nativeElement.scrollTop,scrollLeft:t.nativeElement.scrollLeft}}}var _U=Object.freeze({topLeft:"nw-resize",topRight:"ne-resize",bottomLeft:"sw-resize",bottomRight:"se-resize",leftOrRight:"col-resize",topOrBottom:"row-resize"});function vU(t,i){return t.left&&t.top?i.topLeft:t.right&&t.top?i.topRight:t.left&&t.bottom?i.bottomLeft:t.right&&t.bottom?i.bottomRight:t.left||t.right?i.leftOrRight:t.top||t.bottom?i.topOrBottom:""}function Pk({edges:t,initialRectangle:i,newRectangle:e}){let n={};return Object.keys(t).forEach(o=>{n[o]=(e[o]||0)-(i[o]||0)}),n}var bU="resize-active",DTe="resize-ghost-element",PTe=50,im=(()=>{class t{constructor(){this.enableGhostResize=!1,this.resizeSnapGrid={},this.resizeCursors=_U,this.ghostElementPositioning="fixed",this.allowNegativeResizes=!1,this.mouseMoveThrottleMS=PTe,this.resizeStart=new ve,this.resizing=new ve,this.resizeEnd=new ve,this.mouseup=new Le,this.mousedown=new Le,this.mousemove=new Le,this.destroy$=new Le,this.platformId=f(wh),this.renderer=f(ii),this.elm=f(Lt),this.zone=f(bi),this.rendererFactory=f(yd),this.document=f(Pi),this.pointerEventListeners=XN.getInstance(this.rendererFactory.createRenderer(this.document,null),this.zone)}ngOnInit(){let e=Dn(this.pointerEventListeners.pointerDown,this.mousedown),n=Dn(this.pointerEventListeners.pointerMove,this.mousemove).pipe(vi(({event:p})=>{r&&p.cancelable&&!CU(p)&&p.preventDefault()}),As()),o=Dn(this.pointerEventListeners.pointerUp,this.mouseup),r,a=()=>{r&&r.clonedNode&&(this.elm.nativeElement.parentElement.removeChild(r.clonedNode),this.renderer.setStyle(this.elm.nativeElement,"visibility","inherit"))},c=()=>H(H({},_U),this.resizeCursors);e.pipe(Er(p=>{function h(C){return{clientX:C.clientX-p.clientX,clientY:C.clientY-p.clientY}}let g=()=>{let C={x:1,y:1};return r&&(this.resizeSnapGrid.left&&r.edges.left?C.x=+this.resizeSnapGrid.left:this.resizeSnapGrid.right&&r.edges.right&&(C.x=+this.resizeSnapGrid.right),this.resizeSnapGrid.top&&r.edges.top?C.y=+this.resizeSnapGrid.top:this.resizeSnapGrid.bottom&&r.edges.bottom&&(C.y=+this.resizeSnapGrid.bottom)),C};function M(C,_){return{x:Math.ceil(C.clientX/_.x),y:Math.ceil(C.clientY/_.y)}}return Dn(n.pipe(wi(1)).pipe(yt(C=>[,C])),n.pipe(CC())).pipe(yt(([C,_])=>[C&&h(C),h(_)])).pipe(Pn(([C,_])=>{if(!C)return!0;let w=g(),S=M(C,w),y=M(_,w);return S.x!==y.x||S.y!==y.y})).pipe(yt(([,C])=>{let _=g();return{clientX:Math.round(C.clientX/_.x)*_.x,clientY:Math.round(C.clientY/_.y)*_.y}})).pipe(rt(Dn(o,e)))})).pipe(Pn(()=>!!r)).pipe(yt(({clientX:p,clientY:h})=>gU(r.startingRect,r.edges,p,h))).pipe(Pn(p=>this.allowNegativeResizes||!!(p.height&&p.width&&p.height>0&&p.width>0))).pipe(Pn(p=>this.validateResize?this.validateResize({rectangle:p,edges:Pk({edges:r.edges,initialRectangle:r.startingRect,newRectangle:p})}):!0),rt(this.destroy$)).subscribe(p=>{r&&r.clonedNode&&(this.renderer.setStyle(r.clonedNode,"height",`${p.height}px`),this.renderer.setStyle(r.clonedNode,"width",`${p.width}px`),this.renderer.setStyle(r.clonedNode,"top",`${p.top}px`),this.renderer.setStyle(r.clonedNode,"left",`${p.left}px`)),this.resizing.observers.length>0&&this.zone.run(()=>{this.resizing.emit({edges:Pk({edges:r.edges,initialRectangle:r.startingRect,newRectangle:p}),rectangle:p})}),r.currentRect=p}),e.pipe(yt(({edges:p})=>p||{}),Pn(p=>Object.keys(p).length>0),rt(this.destroy$)).subscribe(p=>{r&&a();let h=ETe(this.elm,this.ghostElementPositioning);r={edges:p,startingRect:h,currentRect:h};let g=c(),M=vU(r.edges,g);this.renderer.setStyle(document.body,"cursor",M),this.setElementClass(this.elm,bU,!0),this.enableGhostResize&&(r.clonedNode=kTe(this.elm.nativeElement),this.elm.nativeElement.parentElement.appendChild(r.clonedNode),this.renderer.setStyle(this.elm.nativeElement,"visibility","hidden"),this.renderer.setStyle(r.clonedNode,"position",this.ghostElementPositioning),this.renderer.setStyle(r.clonedNode,"left",`${r.startingRect.left}px`),this.renderer.setStyle(r.clonedNode,"top",`${r.startingRect.top}px`),this.renderer.setStyle(r.clonedNode,"height",`${r.startingRect.height}px`),this.renderer.setStyle(r.clonedNode,"width",`${r.startingRect.width}px`),this.renderer.setStyle(r.clonedNode,"cursor",vU(r.edges,g)),this.renderer.addClass(r.clonedNode,DTe),r.clonedNode.scrollTop=r.startingRect.scrollTop,r.clonedNode.scrollLeft=r.startingRect.scrollLeft),this.resizeStart.observers.length>0&&this.zone.run(()=>{this.resizeStart.emit({edges:Pk({edges:p,initialRectangle:h,newRectangle:h}),rectangle:gU(h,{},0,0)})})}),o.pipe(rt(this.destroy$)).subscribe(()=>{r&&(this.renderer.removeClass(this.elm.nativeElement,bU),this.renderer.setStyle(document.body,"cursor",""),this.renderer.setStyle(this.elm.nativeElement,"cursor",""),this.resizeEnd.observers.length>0&&this.zone.run(()=>{this.resizeEnd.emit({edges:Pk({edges:r.edges,initialRectangle:r.startingRect,newRectangle:r.currentRect}),rectangle:r.currentRect})}),a(),r=null)})}ngOnDestroy(){Rs(this.platformId)&&this.renderer.setStyle(document.body,"cursor",""),this.mousedown.complete(),this.mouseup.complete(),this.mousemove.complete(),this.destroy$.next()}setElementClass(e,n,o){o?this.renderer.addClass(e.nativeElement,n):this.renderer.removeClass(e.nativeElement,n)}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275dir=ft({type:t,selectors:[["","mwlResizable",""]],inputs:{validateResize:"validateResize",enableGhostResize:"enableGhostResize",resizeSnapGrid:"resizeSnapGrid",resizeCursors:"resizeCursors",ghostElementPositioning:"ghostElementPositioning",allowNegativeResizes:"allowNegativeResizes",mouseMoveThrottleMS:"mouseMoveThrottleMS"},outputs:{resizeStart:"resizeStart",resizing:"resizing",resizeEnd:"resizeEnd"},exportAs:["mwlResizable"]})}}return t})(),XN=class t{static getInstance(i,e){return t.instance||(t.instance=new t(i,e)),t.instance}constructor(i,e){this.pointerDown=new _r(n=>{let o,r;return e.runOutsideAngular(()=>{o=i.listen("document","mousedown",a=>{n.next({clientX:a.clientX,clientY:a.clientY,event:a})}),Ch&&(r=i.listen("document","touchstart",a=>{n.next({clientX:a.touches[0].clientX,clientY:a.touches[0].clientY,event:a})}))}),()=>{o(),Ch&&r()}}).pipe(As()),this.pointerMove=new _r(n=>{let o,r;return e.runOutsideAngular(()=>{o=i.listen("document","mousemove",a=>{n.next({clientX:a.clientX,clientY:a.clientY,event:a})}),Ch&&(r=i.listen("document","touchmove",a=>{n.next({clientX:a.targetTouches[0].clientX,clientY:a.targetTouches[0].clientY,event:a})}))}),()=>{o(),Ch&&r()}}).pipe(As()),this.pointerUp=new _r(n=>{let o,r,a;return e.runOutsideAngular(()=>{o=i.listen("document","mouseup",c=>{n.next({clientX:c.clientX,clientY:c.clientY,event:c})}),Ch&&(r=i.listen("document","touchend",c=>{n.next({clientX:c.changedTouches[0].clientX,clientY:c.changedTouches[0].clientY,event:c})}),a=i.listen("document","touchcancel",c=>{n.next({clientX:c.changedTouches[0].clientX,clientY:c.changedTouches[0].clientY,event:c})}))}),()=>{o(),Ch&&(r(),a())}}).pipe(As())}},Wp=(()=>{class t{constructor(){this.renderer=f(ii),this.element=f(Lt),this.zone=f(bi),this.resizableDirective=f(im,{optional:!0}),this.resizeEdges={},this.eventListeners={},this.destroy$=new Le}ngOnInit(){this.zone.runOutsideAngular(()=>{this.listenOnTheHost("mousedown").subscribe(e=>{this.onMousedown(e,e.clientX,e.clientY)}),this.listenOnTheHost("mouseup").subscribe(e=>{this.onMouseup(e.clientX,e.clientY)}),Ch&&(this.listenOnTheHost("touchstart").subscribe(e=>{this.onMousedown(e,e.touches[0].clientX,e.touches[0].clientY)}),Dn(this.listenOnTheHost("touchend"),this.listenOnTheHost("touchcancel")).subscribe(e=>{this.onMouseup(e.changedTouches[0].clientX,e.changedTouches[0].clientY)}))})}ngOnDestroy(){this.destroy$.next(),this.unsubscribeEventListeners()}onMousedown(e,n,o){e.cancelable&&!CU(e)&&e.preventDefault(),this.eventListeners.touchmove||(this.eventListeners.touchmove=this.renderer.listen(this.element.nativeElement,"touchmove",r=>{this.onMousemove(r,r.targetTouches[0].clientX,r.targetTouches[0].clientY)})),this.eventListeners.mousemove||(this.eventListeners.mousemove=this.renderer.listen(this.element.nativeElement,"mousemove",r=>{this.onMousemove(r,r.clientX,r.clientY)})),this.resizable.mousedown.next({clientX:n,clientY:o,edges:this.resizeEdges})}onMouseup(e,n){this.unsubscribeEventListeners(),this.resizable.mouseup.next({clientX:e,clientY:n,edges:this.resizeEdges})}get resizable(){return this.resizableDirective||this.resizableContainer}onMousemove(e,n,o){this.resizable.mousemove.next({clientX:n,clientY:o,edges:this.resizeEdges,event:e})}unsubscribeEventListeners(){Object.keys(this.eventListeners).forEach(e=>{this.eventListeners[e](),delete this.eventListeners[e]})}listenOnTheHost(e){return ua(this.element.nativeElement,e).pipe(rt(this.destroy$))}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275dir=ft({type:t,selectors:[["","mwlResizeHandle",""]],inputs:{resizeEdges:"resizeEdges",resizableContainer:"resizableContainer"}})}}return t})();var g_=(function(t){return t.NETWORK_ERROR="NETWORK_ERROR",t.PROJECT_NOT_OPENED="PROJECT_NOT_OPENED",t.LLM_NOT_CONFIGURED="LLM_NOT_CONFIGURED",t.SESSION_NOT_FOUND="SESSION_NOT_FOUND",t.UNAUTHORIZED="UNAUTHORIZED",t.UNKNOWN_ERROR="UNKNOWN_ERROR",t})(g_||{});var Ik=(()=>{class t{http;httpController;controllerService;currentProjectId=null;currentSessionId=null;isStreaming=new qt(!1);constructor(e,n,o){this.http=e,this.httpController=n,this.controllerService=o}streamChat(e,n,o){this.currentProjectId=n,this.isStreaming.next(!0);let r=`${this.getControllerUrl(e)}/v3/projects/${n}/chat/stream`,a=this.getAuthHeaders(e),c={"Content-Type":"application/json"};return a.keys().forEach(m=>{let p=a.get(m);p&&(c[m]=p)}),new _r(m=>(fetch(r,{method:"POST",headers:c,body:JSON.stringify(o)}).then(async p=>{if(!p.ok){let _=`HTTP error! status: ${p.status}`;try{let S=await p.json();S.message&&(_=S.message)}catch{p.statusText&&(_=p.statusText)}let w=new Error(_);throw w.status=p.status,w.statusText=p.statusText,w.error={message:_},w}if(!p.body)throw new Error("Response body is null");let h=p.body.getReader(),g=new TextDecoder,M="";(async()=>{try{for(;;){let{done:_,value:w}=await h.read();if(_){m.complete();break}M+=g.decode(w,{stream:!0});let S=M.split(`
|
||
`);M=S.pop()||"";for(let y of S)if(y.startsWith("data: ")){let k=y.slice(6).trim();if(k)try{let I=JSON.parse(k);if(I.type==="heartbeat")continue;if(I.session_id&&(this.currentSessionId=I.session_id),m.next(I),I.type==="done"||I.type==="error"){m.complete();break}}catch(I){console.error("Failed to parse SSE data:",k,I)}}if(m.closed)break}}catch(_){console.error("Stream processing error:",_),m.error(_)}finally{h.cancel()}})()}).catch(p=>{console.error("Fetch error:",p),m.error(p)}).finally(()=>{this.isStreaming.next(!1)}),()=>{this.isStreaming.next(!1)})).pipe(hi(m=>(this.isStreaming.next(!1),zi(()=>m))))}getSessions(e,n){return this.httpController.get(e,`/projects/${n}/chat/sessions`).pipe(hi(o=>(console.error("Failed to get sessions:",o),zi(()=>o))))}getSessionHistory(e,n,o,r=100){let a=r?{limit:r}:void 0;return this.httpController.get(e,`/projects/${n}/chat/sessions/${o}/history`).pipe(hi(c=>(console.error("Failed to get session history:",c),zi(()=>c))))}renameSession(e,n,o,r){let a={title:r};return this.httpController.patch(e,`/projects/${n}/chat/sessions/${o}`,a).pipe(hi(c=>(console.error("Failed to rename session:",c),zi(()=>c))))}deleteSession(e,n,o){return this.httpController.delete(e,`/projects/${n}/chat/sessions/${o}`).pipe(hi(r=>(console.error("Failed to delete session:",r),zi(()=>r))))}pinSession(e,n,o){return this.httpController.put(e,`/projects/${n}/chat/sessions/${o}/pin`,null).pipe(hi(r=>(console.error("Failed to pin session:",r),zi(()=>r))))}unpinSession(e,n,o){return this.httpController.delete(e,`/projects/${n}/chat/sessions/${o}/pin`).pipe(hi(r=>(console.error("Failed to unpin session:",r),zi(()=>r))))}getStreamingState(){return this.isStreaming.asObservable()}abortChat(e,n,o){return this.httpController.post(e,`/projects/${n}/chat/sessions/${o}/abort`,null).pipe(hi(r=>(console.error("Failed to abort chat:",r),zi(()=>r))))}getCurrentSessionId(){return this.currentSessionId}resetCurrentSession(){this.currentSessionId=null,this.currentProjectId=null}getControllerUrl(e){return`${e.protocol==="https:"?"https":"http"}://${e.host}:${e.port}`}getAuthHeaders(e){let n=new Ph;if(e.authToken)return n.set("Authorization",`Bearer ${e.authToken}`);if(e.username&&e.password){let o=btoa(`${e.username}:${e.password}`);return n.set("Authorization",`Basic ${o}`)}return n}createChatError(e){return e.status===401?{type:g_.UNAUTHORIZED,message:"Unauthorized access",details:e}:e.status===404?{type:g_.SESSION_NOT_FOUND,message:"Session not found",details:e}:e.message&&e.message.includes("fetch")?{type:g_.NETWORK_ERROR,message:"Network connection failed",details:e}:{type:g_.UNKNOWN_ERROR,message:e.message||"Unknown error",details:e}}static \u0275fac=function(n){return new(n||t)(ge(os),ge(an),ge(We))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var __=(()=>{class t{httpController;constructor(e){this.httpController=e}getConfigs(e,n){return this.httpController.get(e,`/access/users/${n}/llm-model-configs`).pipe(hi(o=>(console.error("Failed to get user configs:",o),zi(()=>o))))}getOwnConfigs(e,n){return this.httpController.get(e,`/access/users/${n}/llm-model-configs/own`).pipe(hi(o=>(console.error("Failed to get user own configs:",o),zi(()=>o))))}getDefaultConfig(e,n){return this.httpController.get(e,`/access/users/${n}/llm-model-configs/default`).pipe(hi(o=>(console.error("Failed to get default config:",o),zi(()=>o))))}createConfig(e,n,o){return this.httpController.post(e,`/access/users/${n}/llm-model-configs`,o).pipe(hi(r=>(console.error("Failed to create config:",r),zi(()=>r))))}updateConfig(e,n,o,r){return this.httpController.put(e,`/access/users/${n}/llm-model-configs/${o}`,r).pipe(hi(a=>(console.error("Failed to update config:",a),zi(()=>a))))}deleteConfig(e,n,o){return this.httpController.delete(e,`/access/users/${n}/llm-model-configs/${o}`).pipe(hi(r=>(console.error("Failed to delete config:",r),zi(()=>r))))}setDefaultConfig(e,n,o){return this.httpController.put(e,`/access/users/${n}/llm-model-configs/default/${o}`,{}).pipe(hi(r=>(console.error("Failed to set default config:",r),zi(()=>r))))}unsetDefaultConfig(e,n,o){return this.httpController.put(e,`/access/users/${n}/llm-model-configs/${o}`,{is_default:!1}).pipe(hi(r=>(console.error("Failed to unset default config:",r),zi(()=>r))))}getGroupConfigs(e,n){return this.httpController.get(e,`/access/groups/${n}/llm-model-configs`).pipe(hi(o=>(console.error("Failed to get group configs:",o),zi(()=>o))))}getDefaultGroupConfig(e,n){return this.httpController.get(e,`/access/groups/${n}/llm-model-configs/default`).pipe(hi(o=>(console.error("Failed to get default group config:",o),zi(()=>o))))}createGroupConfig(e,n,o){return this.httpController.post(e,`/access/groups/${n}/llm-model-configs`,o).pipe(hi(r=>(console.error("Failed to create group config:",r),zi(()=>r))))}updateGroupConfig(e,n,o,r){return this.httpController.put(e,`/access/groups/${n}/llm-model-configs/${o}`,r).pipe(hi(a=>(console.error("Failed to update group config:",a),zi(()=>a))))}deleteGroupConfig(e,n,o){return this.httpController.delete(e,`/access/groups/${n}/llm-model-configs/${o}`).pipe(hi(r=>(console.error("Failed to delete group config:",r),zi(()=>r))))}setDefaultGroupConfig(e,n,o){return this.httpController.put(e,`/access/groups/${n}/llm-model-configs/default/${o}`,{}).pipe(hi(r=>(console.error("Failed to set default group config:",r),zi(()=>r))))}unsetDefaultGroupConfig(e,n,o){return this.httpController.put(e,`/access/groups/${n}/llm-model-configs/${o}`,{is_default:!1}).pipe(hi(r=>(console.error("Failed to unset default group config:",r),zi(()=>r))))}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var qp=(()=>{class t{defaultConfig={minVisibleSize:100,minWidth:500,minHeight:400};config$=new qt(this.defaultConfig);constructor(){}getConfig(){return this.config$.asObservable()}getConfigValue(){return this.config$.value}setConfig(e){let n=this.config$.value;this.config$.next(H(H({},n),e))}resetConfig(){this.config$.next(this.defaultConfig)}constrainDragPosition(e,n,o){let r=this.config$.value,a=this.parsePx(e.width),c=this.parsePx(e.height),m={position:"fixed"};if(e.right!==void 0){let p=this.parsePx(e.right)-n,h=0,g=window.innerWidth-a;p=Math.max(h,Math.min(g,p)),m.right=`${p}px`}else if(e.left!==void 0){let p=this.parsePx(e.left)+n,h=window.innerWidth-a;p=Math.max(0,Math.min(h,p)),m.left=`${p}px`}if(e.top!==void 0){let p=this.parsePx(e.top)+o,h=r.topOffset||0,g=window.innerHeight-c;p=Math.max(h,Math.min(g,p)),m.top=`${p}px`}else if(e.bottom!==void 0){let p=this.parsePx(e.bottom)-o,h=0,g=window.innerHeight-c-(r.topOffset||0);p=Math.max(h,Math.min(g,p)),m.bottom=`${p}px`}return m.width=e.width,m.height=e.height,m}parsePx(e){if(!e)return 0;let n=this.parsePxCache.get(e);if(n!==void 0)return n;let o=Number(e.split("px")[0])||0;return this.parsePxCache.set(e,o),o}parsePxCache=new Map;constrainResizeSize(e,n,o,r){let a=this.config$.value,c=Math.max(a.minWidth,e),m=Math.max(a.minHeight,n);a.maxWidth&&(c=Math.min(a.maxWidth,c)),a.maxHeight&&(m=Math.min(a.maxHeight,m));let p=window.innerWidth-(o||0),h=window.innerHeight-(r||0);return c=Math.min(c,p),m=Math.min(m,h),{width:c,height:m,left:o,top:r}}constrainWindowPosition(e){let n=this.config$.value,o=Number(e.width?.split("px")[0])||0,r=Number(e.height?.split("px")[0])||0,a=H({},e);if(e.right!==void 0){let c=Number(e.right.split("px")[0]),m=0,p=window.innerWidth-o;a.right=`${Math.max(m,Math.min(p,c))}px`,delete a.left}else if(e.left!==void 0){let c=Number(e.left.split("px")[0]),m=window.innerWidth-o,p=0;a.left=`${Math.max(p,Math.min(m,c))}px`,delete a.right}if(e.top!==void 0){let c=Number(e.top.split("px")[0]),m=n.topOffset||0,p=window.innerHeight-r;a.top=`${Math.max(m,Math.min(p,c))}px`,delete a.bottom}else if(e.bottom!==void 0){let c=Number(e.bottom.split("px")[0]),m=0,p=window.innerHeight-r-(n.topOffset||0);a.bottom=`${Math.max(m,Math.min(p,c))}px`,delete a.top}return a}isValidSize(e,n){let o=typeof e=="number"?e:typeof e=="string"?parseFloat(e):0,r=typeof n=="number"?n:typeof n=="string"?parseFloat(n):0,a=this.config$.value,c=o>=a.minWidth,m=r>=a.minHeight;return a.maxWidth&&o>a.maxWidth||a.maxHeight&&r>a.maxHeight?!1:c&&m}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ak(t){let i=t.config.model,e=t.config.base_url,n=t.config.provider,o=n;if(e)try{o=new URL(e).hostname.replace(/^www\./,""),o=o.replace(/:\d+$/,"")}catch{o=n}return`${i} (${o})`}function sC(t){let i=t.split("/");return i[i.length-1].replace(/[-_]/g," ").replace(/\b\w/g,n=>n.toUpperCase())}var ITe=(t,i)=>i.thread_id;function ATe(t,i){t&1&&(Vn(),s(0,"svg",11),F(1,"path",25),l())}function OTe(t,i){if(t&1&&(s(0,"span",13),d(1),l()),t&2){let e=b().$implicit;u(),U(e.title||"New chat")}}function NTe(t,i){if(t&1){let e=j();s(0,"mat-form-field",29),v("click",function(o){return o.stopPropagation()}),s(1,"input",30,1),v("keydown.enter",function(){D(e);let o=Re(2),r=b().$implicit,a=b(2);return P(a.finishRename(r,o.value))})("keydown.escape",function(){D(e);let o=b().$implicit,r=b(2);return P(r.cancelRename(o))})("blur",function(){D(e);let o=Re(2),r=b().$implicit,a=b(2);return P(a.finishRename(r,o.value))}),l()()}if(t&2){let e=b().$implicit;u(),x("value",e.title)}}function RTe(t,i){if(t&1){let e=j();s(0,"div",10),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.selectSession(o.thread_id))}),A(1,ATe,2,0,":svg:svg",11),s(2,"div",12),A(3,OTe,2,1,"span",13),A(4,NTe,3,1,"mat-form-field",14),s(5,"span",15)(6,"span",16),d(7),l(),s(8,"span",17),d(9),l()()(),s(10,"button",18),v("click",function(o){return o.stopPropagation()}),Vn(),s(11,"svg",19),F(12,"path",20),l()(),vr(),s(13,"mat-menu",21,0),v("opened",function(){D(e);let o=b(2);return P(o.onMenuOpened())})("closed",function(){D(e);let o=b(2);return P(o.onMenuClosed())}),s(15,"button",22),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.renameSession(o))}),Vn(),s(16,"svg",23),F(17,"path",24),l(),vr(),s(18,"span"),d(19,"Rename"),l()(),s(20,"button",22),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.togglePinSession(o))}),Vn(),s(21,"svg",23),F(22,"path",25),l(),vr(),s(23,"span"),d(24),l()(),F(25,"mat-divider"),s(26,"button",26),v("click",function(o){let r=D(e).$implicit,a=b(2);return P(a.deleteSession(r,o))}),Vn(),s(27,"svg",27),F(28,"path",28),l(),vr(),s(29,"span"),d(30,"Delete"),l()()()()}if(t&2){let e=i.$implicit,n=Re(14),o=b(2);je("gns3-chat-session-list__session--active",e.thread_id===o.currentSessionId()),u(),O(e.pinned?1:-1),u(2),O(e.editing?-1:3),u(),O(e.editing?4:-1),u(3),X("",e.message_count," messages"),u(2),U(o.formatTime(e.updated_at)),u(),x("matMenuTriggerFor",n),u(14),U(e.pinned?"Unpin":"Pin")}}function FTe(t,i){if(t&1&&J(0,RTe,31,9,"div",9,ITe),t&2){let e=b();ee(e.sortedSessions)}}function LTe(t,i){t&1&&(s(0,"div",8),Vn(),s(1,"svg",31),F(2,"path",32),l(),vr(),s(3,"p",33),d(4,"No sessions"),l(),s(5,"p",34),d(6,"Click button above to create new session"),l()())}var Ok=(()=>{class t{dialog=f(Je);aiChatService=f(Ik);sessions=oe([]);currentSessionId=oe(null);controller=oe(void 0);projectId=oe(void 0);sessionSelected=new ve;sessionCreated=new ve;sessionRenamed=new ve;sessionDeleted=new ve;sessionPinned=new ve;sessionUnpinned=new ve;constructor(){}onMenuOpened(){}onMenuClosed(){}get sortedSessions(){let e=this.sessions().filter(r=>r.pinned),n=this.sessions().filter(r=>!r.pinned),o=(r,a)=>{let c=new Date(r.updated_at).getTime();return new Date(a.updated_at).getTime()-c};return[...e.sort(o),...n.sort(o)]}selectSession(e){this.sessionSelected.emit(e)}createNewSession(){this.sessionCreated.emit()}renameSession(e){e.editing=!0}finishRename(e,n){let o=n.trim();o&&this.sessionRenamed.emit({sessionId:e.thread_id,title:o}),e.editing=!1}cancelRename(e){e.editing=!1}togglePinSession(e){e.pinned?this.sessionUnpinned.emit(e.thread_id):this.sessionPinned.emit(e.thread_id)}deleteSession(e,n){let o=`Are you sure you want to delete "${e.title||"New chat"}"?`,r={};if(n){let c=n.clientX,m=n.clientY,p=360,h=180,g=c-p/2,M=m-h/2,C=window.innerWidth,_=window.innerHeight;g<10&&(g=10),g+p>C-10&&(g=C-p-10),M<10&&(M=10),M+h>_-10&&(M=_-h-10),r={top:`${M}px`,left:`${g}px`}}this.dialog.open(nb,{data:{message:o},position:r,autoFocus:!1,restoreFocus:!1,backdropClass:"delete-dialog-backdrop",panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"]}).afterClosed().subscribe(c=>{c&&this.delete(e)})}delete(e){this.aiChatService.deleteSession(this.controller(),this.projectId(),e.thread_id).subscribe({next:()=>{this.sessionDeleted.emit(e.thread_id)},error:n=>{console.error("[ChatSessionList] Delete failed:",n)}})}formatTime(e){if(!e)return"";let o=/[Z+-]\d{2}:?\d{2}$/.test(e)?e:e+"Z",r=new Date(o),c=new Date().getTime()-r.getTime(),m=Math.floor(c/6e4),p=Math.floor(m/60),h=Math.floor(p/24);return m<1?"Just now":m<60?`${m} minutes ago`:p<24?`${p} hours ago`:h<7?`${h} days ago`:r.toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}trackBySessionId(e,n){return n.thread_id}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-chat-session-list"]],inputs:{sessions:[1,"sessions"],currentSessionId:[1,"currentSessionId"],controller:[1,"controller"],projectId:[1,"projectId"]},outputs:{sessionSelected:"sessionSelected",sessionCreated:"sessionCreated",sessionRenamed:"sessionRenamed",sessionDeleted:"sessionDeleted",sessionPinned:"sessionPinned",sessionUnpinned:"sessionUnpinned"},decls:10,vars:1,consts:[["sessionMenu","matMenu"],["titleInput",""],[1,"gns3-chat-session-list"],[1,"gns3-chat-session-list__header"],["mat-button","",1,"gns3-chat-session-list__new-button",3,"click"],["xmlns","http://www.w3.org/2000/svg","height","20","width","20","viewBox","0 0 24 24",1,"gns3-chat-session-list__icon"],["d","M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"],[1,"gns3-chat-session-list__container"],[1,"gns3-chat-session-list__no-sessions"],[1,"gns3-chat-session-list__session",3,"gns3-chat-session-list__session--active"],[1,"gns3-chat-session-list__session",3,"click"],["xmlns","http://www.w3.org/2000/svg","height","16","width","16","viewBox","0 0 24 24",1,"gns3-chat-session-list__pin-icon","gns3-chat-session-list__pin-animation"],[1,"gns3-chat-session-list__text"],[1,"gns3-chat-session-list__title"],[1,"gns3-chat-session-list__edit-field"],[1,"gns3-chat-session-list__preview"],[1,"gns3-chat-session-list__stats"],[1,"gns3-chat-session-list__time"],["mat-icon-button","",1,"gns3-chat-session-list__menu-button",3,"click","matMenuTriggerFor"],["xmlns","http://www.w3.org/2000/svg","height","20","width","20","viewBox","0 0 24 24",1,"gns3-chat-session-list__menu-icon"],["d","M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],["xPosition","before","panelClass","gns3-chat-session-list__action-menu",3,"opened","closed"],["mat-menu-item","",3,"click"],["xmlns","http://www.w3.org/2000/svg","height","20","width","20","viewBox","0 0 24 24",1,"gns3-chat-session-list__menu-item-icon"],["d","M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"],["d","M16 12V4H17V2H7V4H8V12L6 14V16H11V22H13V16H18V14L16 12Z"],["mat-menu-item","",1,"gns3-chat-session-list__delete-action",3,"click"],["xmlns","http://www.w3.org/2000/svg","height","20","width","20","viewBox","0 0 24 24",1,"gns3-chat-session-list__menu-item-icon","gns3-chat-session-list__delete-icon"],["d","M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"],[1,"gns3-chat-session-list__edit-field",3,"click"],["matInput","",3,"keydown.enter","keydown.escape","blur","value"],["xmlns","http://www.w3.org/2000/svg","height","48","width","48","viewBox","0 0 24 24",1,"gns3-chat-session-list__no-sessions-icon"],["d","M21 6h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1zm-4 6V3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1z"],[1,"gns3-chat-session-list__no-sessions-text"],[1,"gns3-chat-session-list__no-sessions-hint"]],template:function(n,o){n&1&&(s(0,"div",2)(1,"div",3)(2,"button",4),v("click",function(){return o.createNewSession()}),Vn(),s(3,"svg",5),F(4,"path",6),l(),vr(),s(5,"span"),d(6,"New Chat"),l()()(),s(7,"div",7),A(8,FTe,2,0)(9,LTe,7,0,"div",8),l()()),n&2&&(u(8),O(o.sessions().length>0?8:9))},dependencies:[Z,te,we,Te,ke,Me,Qe,Fn,ot,kn,$,le,ze,Ce,Ea,ls],styles:[".gns3-chat-session-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;background-color:var(--mat-sys-surface-container);border-right:1px solid var(--mat-sys-outline-variant)}.gns3-chat-session-list__header[_ngcontent-%COMP%]{padding:12px;border-bottom:1px solid var(--mat-sys-outline-variant)}.gns3-chat-session-list__new-button[_ngcontent-%COMP%]{width:100%;display:flex;align-items:center;justify-content:center;gap:8px}.gns3-chat-session-list__icon[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;fill:var(--mat-sys-on-surface);transition:fill .2s ease}.gns3-chat-session-list__new-button[_ngcontent-%COMP%]:hover .gns3-chat-session-list__icon[_ngcontent-%COMP%]{fill:var(--mat-sys-primary)}.gns3-chat-session-list__container[_ngcontent-%COMP%]{flex:1;overflow-y:auto;padding:8px}.gns3-chat-session-list__session[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;padding:10px;border-radius:8px;cursor:pointer;transition:background-color .2s;position:relative}.gns3-chat-session-list__session[_ngcontent-%COMP%]:hover{background-color:var(--mat-sys-surface-container-high)}.gns3-chat-session-list__session--active[_ngcontent-%COMP%]{background-color:var(--mat-sys-primary-container);border-left:4px solid var(--mat-sys-primary);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent),inset 0 0 0 1px color-mix(in srgb,var(--mat-sys-primary) 10%,transparent);transform:translate(2px)}.gns3-chat-session-list__session--active[_ngcontent-%COMP%] .gns3-chat-session-list__title[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary-container);font-weight:700}.gns3-chat-session-list__session--active[_ngcontent-%COMP%] .gns3-chat-session-list__stats[_ngcontent-%COMP%], .gns3-chat-session-list__session--active[_ngcontent-%COMP%] .gns3-chat-session-list__time[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary-container);opacity:.9}.gns3-chat-session-list__session--active[_ngcontent-%COMP%] .gns3-chat-session-list__menu-icon[_ngcontent-%COMP%]{fill:var(--mat-sys-on-primary-container)}.gns3-chat-session-list__pin-icon[_ngcontent-%COMP%]{fill:var(--mat-sys-primary);filter:drop-shadow(0 2px 4px color-mix(in srgb,var(--mat-sys-primary) 40%,transparent))}.gns3-chat-session-list__pin-animation[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_pinBounce .5s cubic-bezier(.68,-.55,.265,1.55)}@keyframes _ngcontent-%COMP%_pinBounce{0%{transform:scale(0);opacity:0}50%{transform:scale(1.35)}to{transform:scale(1);opacity:1}}.gns3-chat-session-list__text[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.gns3-chat-session-list__title[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:var(--mat-sys-on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gns3-chat-session-list__preview[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.gns3-chat-session-list__stats[_ngcontent-%COMP%]{font-size:11px;color:var(--mat-sys-on-surface-variant)}.gns3-chat-session-list__time[_ngcontent-%COMP%]{font-size:11px;color:var(--mat-sys-on-surface-variant);opacity:.7}.gns3-chat-session-list__edit-field[_ngcontent-%COMP%]{width:100%;margin:0}.gns3-chat-session-list__edit-field[_ngcontent-%COMP%] .mat-mdc-form-field-infix[_ngcontent-%COMP%]{padding:0}.gns3-chat-session-list__edit-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{font-size:14px}.gns3-chat-session-list__menu-button[_ngcontent-%COMP%]{width:32px;height:32px;padding:0;opacity:0;transition:opacity .2s}.gns3-chat-session-list__session[_ngcontent-%COMP%]:hover .gns3-chat-session-list__menu-button[_ngcontent-%COMP%]{opacity:1}.gns3-chat-session-list__menu-icon[_ngcontent-%COMP%]{fill:var(--mat-sys-on-surface-variant);transition:fill .2s ease}.gns3-chat-session-list__menu-button[_ngcontent-%COMP%]:hover .gns3-chat-session-list__menu-icon[_ngcontent-%COMP%]{fill:var(--mat-sys-on-surface)}.gns3-chat-session-list__no-sessions[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.gns3-chat-session-list__no-sessions-icon[_ngcontent-%COMP%]{fill:var(--mat-sys-outline-variant);margin-bottom:12px}.gns3-chat-session-list__no-sessions-text[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:var(--mat-sys-on-surface);margin:0 0 4px}.gns3-chat-session-list__no-sessions-hint[_ngcontent-%COMP%]{font-size:12px;color:var(--mat-sys-on-surface-variant);margin:0}.gns3-chat-session-list__delete-action[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.gns3-chat-session-list__delete-icon[_ngcontent-%COMP%]{fill:var(--mat-sys-error)}.gns3-chat-session-list__menu-item-icon[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;margin-right:12px;flex-shrink:0;fill:var(--mat-sys-on-surface)}"],changeDetection:0})}return t})();var BTe=t=>["segment",t],VTe=(t,i)=>({"segment-main":!0,expandable:t,expanded:i});function zTe(t,i){t&1&&F(0,"div",9)}function jTe(t,i){if(t&1&&(s(0,"span",10),d(1),l()),t&2){let e=b().$implicit;u(),U(e.description)}}function $Te(t,i){if(t&1&&(s(0,"section",11),F(1,"ngx-json-viewer",12),l()),t&2){let e=b().$implicit,n=b();u(),x("json",e.value)("expanded",n.expanded)("depth",n.depth)("_currentDepth",n._currentDepth+1)}}function HTe(t,i){if(t&1){let e=j();s(0,"section",2)(1,"section",3),v("click",function(){let o=D(e).$implicit,r=b();return P(r.toggle(o))}),Ae(2,zTe,1,0,"div",4),s(3,"span",5),d(4),l(),s(5,"span",6),d(6,": "),l(),Ae(7,jTe,2,1,"span",7),l(),Ae(8,$Te,2,4,"section",8),l()}if(t&2){let e=i.$implicit,n=b();x("ngClass",ln(6,BTe,"segment-type-"+e.type)),u(),x("ngClass",il(8,VTe,n.isExpandable(e),e.expanded)),u(),x("ngIf",n.isExpandable(e)),u(2),U(e.key),u(3),x("ngIf",!e.expanded||!n.isExpandable(e)),u(),x("ngIf",e.expanded&&n.isExpandable(e))}}var xU=(()=>{class t{constructor(){this.expanded=!0,this.depth=-1,this._currentDepth=0,this.segments=[]}ngOnChanges(){this.segments=[],this.json=this.decycle(this.json),typeof this.json=="object"?Object.keys(this.json).forEach(e=>{this.segments.push(this.parseKeyValue(e,this.json[e]))}):this.segments.push(this.parseKeyValue(`(${typeof this.json})`,this.json))}isExpandable(e){return e.type==="object"||e.type==="array"}toggle(e){this.isExpandable(e)&&(e.expanded=!e.expanded)}parseKeyValue(e,n){let o={key:e,value:n,type:void 0,description:""+n,expanded:this.isExpanded()};switch(typeof o.value){case"number":{o.type="number";break}case"boolean":{o.type="boolean";break}case"function":{o.type="function";break}case"string":{o.type="string",o.description='"'+o.value+'"';break}case"undefined":{o.type="undefined",o.description="undefined";break}case"object":{o.value===null?(o.type="null",o.description="null"):Array.isArray(o.value)?(o.type="array",o.description="Array["+o.value.length+"] "+JSON.stringify(o.value)):o.value instanceof Date?o.type="date":(o.type="object",o.description="Object "+JSON.stringify(o.value));break}}return o}isExpanded(){return this.expanded&&!(this.depth>-1&&this._currentDepth>=this.depth)}decycle(e){let n=new WeakMap;return(function o(r,a){let c,m;return typeof r=="object"&&r!==null&&!(r instanceof Boolean)&&!(r instanceof Date)&&!(r instanceof Number)&&!(r instanceof RegExp)&&!(r instanceof String)?(c=n.get(r),c!==void 0?{$ref:c}:(n.set(r,a),Array.isArray(r)?(m=[],r.forEach(function(p,h){m[h]=o(p,a+"["+h+"]")})):(m={},Object.keys(r).forEach(function(p){m[p]=o(r[p],a+"["+JSON.stringify(p)+"]")})),m)):r})(e,"$")}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=L({type:t,selectors:[["ngx-json-viewer"]],inputs:{json:"json",expanded:"expanded",depth:"depth",_currentDepth:"_currentDepth"},standalone:!1,features:[un],decls:2,vars:1,consts:[[1,"ngx-json-viewer"],[3,"ngClass",4,"ngFor","ngForOf"],[3,"ngClass"],[3,"click","ngClass"],["class","toggler",4,"ngIf"],[1,"segment-key"],[1,"segment-separator"],["class","segment-value",4,"ngIf"],["class","children",4,"ngIf"],[1,"toggler"],[1,"segment-value"],[1,"children"],[3,"json","expanded","depth","_currentDepth"]],template:function(e,n){e&1&&(s(0,"section",0),Ae(1,HTe,9,11,"section",1),l()),e&2&&(u(),x("ngForOf",n.segments))},dependencies:[Zi,$5,H5,t],styles:['@charset "UTF-8";.ngx-json-viewer[_ngcontent-%COMP%]{font-family:var(--ngx-json-font-family, monospace);font-size:var(--ngx-json-font-size, 1em);width:100%;height:100%;overflow:hidden;position:relative}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%]{padding:2px;margin:1px 1px 1px 12px}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .segment-main[_ngcontent-%COMP%]{word-wrap:break-word}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .segment-main[_ngcontent-%COMP%] .toggler[_ngcontent-%COMP%]{position:absolute;margin-left:-14px;margin-top:3px;font-size:.8em;line-height:1.2em;vertical-align:middle;color:var(--ngx-json-toggler, #787878)}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .segment-main[_ngcontent-%COMP%] .toggler[_ngcontent-%COMP%]:after{display:inline-block;content:"\\25ba";transition:transform .1s ease-in}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .segment-main[_ngcontent-%COMP%] .segment-key[_ngcontent-%COMP%]{color:var(--ngx-json-key, #4E187C)}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .segment-main[_ngcontent-%COMP%] .segment-separator[_ngcontent-%COMP%]{color:var(--ngx-json-separator, #999)}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .segment-main[_ngcontent-%COMP%] .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-value, #000)}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .children[_ngcontent-%COMP%]{margin-left:12px}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-string[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-string, #FF6B6B)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-number[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-number, #009688)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-boolean[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-boolean, #B938A4)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-date[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-date, #05668D)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-array[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-array, #999)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-object[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-object, #999)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-function[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-function, #999)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-null[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-null, #fff)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-undefined[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-undefined, #fff)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-null[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{background-color:var(--ngx-json-null-bg, red)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-undefined[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-key[_ngcontent-%COMP%]{color:var(--ngx-json-undefined-key, #999)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-undefined[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{background-color:var(--ngx-json-undefined-key, #999)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-object[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%], .ngx-json-viewer[_ngcontent-%COMP%] .segment-type-array[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%]{white-space:nowrap}.ngx-json-viewer[_ngcontent-%COMP%] .expanded[_ngcontent-%COMP%] > .toggler[_ngcontent-%COMP%]:after{transform:rotate(90deg)}.ngx-json-viewer[_ngcontent-%COMP%] .expandable[_ngcontent-%COMP%], .ngx-json-viewer[_ngcontent-%COMP%] .expandable[_ngcontent-%COMP%] > .toggler[_ngcontent-%COMP%]{cursor:pointer}']}),t})(),yU=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=Bt({type:t}),t.\u0275inj=Ft({imports:[Z]}),t})();function GTe(t,i){if(t&1&&(s(0,"div",4)(1,"div",5),d(2,"Function:"),l(),s(3,"div",6),d(4),l()(),s(5,"div",4)(6,"div",5),d(7,"Arguments:"),l(),s(8,"div",7),F(9,"ngx-json-viewer",8),l()()),t&2){let e=b();u(4),U(e.toolCall().function.name),u(5),x("json",e.parsedArguments())("expanded",!0)}}function WTe(t,i){if(t&1&&(s(0,"div",4)(1,"div",5),d(2,"Tool:"),l(),s(3,"div",6),d(4),l()(),s(5,"div",4)(6,"div",5),d(7,"Output:"),l(),s(8,"div",7),F(9,"ngx-json-viewer",8),l()()),t&2){let e=b();u(4),U(e.toolName()),u(5),x("json",e.parsedOutput())("expanded",!1)}}var lC=(()=>{class t{dialogRef;data;type=me("tool_call");toolCall=me(void 0);toolName=me(void 0);toolOutput=me(void 0);parsedArguments=me(null);parsedOutput=me(null);constructor(e,n){this.dialogRef=e,this.data=n,this.type.set(n.type),this.toolCall.set(n.toolCall),this.toolName.set(n.toolName),this.toolOutput.set(n.toolOutput),this.parseJsonData()}get title(){return this.type()==="tool_call"?"Tool Call Details":"Execution Result Details"}parseJsonData(){let e=this.toolCall(),n=this.toolOutput();if(e?.function?.arguments)try{let o=e.function.arguments;typeof o=="string"?this.parsedArguments.set(JSON.parse(o)):o.tool_input&&typeof o.tool_input=="string"?this.parsedArguments.set(JSON.parse(o.tool_input)):this.parsedArguments.set(o)}catch{this.parsedArguments.set(e.function.arguments)}if(n)if(typeof n=="string")try{this.parsedOutput.set(JSON.parse(n))}catch{this.parsedOutput.set(n)}else this.parsedOutput.set(n)}closeDialog(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)(st(Pe),st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-tool-details-dialog"]],decls:8,vars:3,consts:[["mat-dialog-title",""],["mat-dialog-content",""],["mat-dialog-actions","","align","end"],["mat-button","",3,"click"],[1,"info-section"],[1,"info-label"],[1,"info-value"],[1,"json-container"],[3,"json","expanded"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1),l(),s(2,"div",1),A(3,GTe,10,3),A(4,WTe,10,3),l(),s(5,"div",2)(6,"button",3),v("click",function(){return o.closeDialog()}),d(7,"Close"),l()()),n&2&&(u(),U(o.title),u(2),O(o.type()==="tool_call"&&o.toolCall()?3:-1),u(),O(o.type()==="tool_result"?4:-1))},dependencies:[Z,Ce,Ve,Be,Wt,$,le,yU,xU],styles:[".info-section[_ngcontent-%COMP%]{margin-bottom:16px}.info-section[_ngcontent-%COMP%]:last-child{margin-bottom:0}.info-label[_ngcontent-%COMP%]{font-size:11px;font-weight:500;color:var(--mat-sys-on-surface-variant);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.info-value[_ngcontent-%COMP%]{font-family:Monaco,Menlo,Consolas,monospace;font-size:13px;color:var(--mat-sys-on-surface);background:var(--mat-sys-surface-container-low);padding:8px 12px;border-radius:6px;word-break:break-all}.json-container[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low);border-radius:6px;padding:12px;max-height:500px;overflow-y:auto;border:1px solid var(--mat-sys-outline-variant);white-space:pre-wrap;font-size:13px;font-family:Monaco,Menlo,Consolas,monospace}"],changeDetection:0})}return t})();function qTe(t,i){if(t&1&&(s(0,"span",3),d(1),l()),t&2){let e=b();u(),U(e.data.language)}}var SU=(()=>{class t{dialogRef;data;constructor(e,n){this.dialogRef=e,this.data=n}close(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)(st(Pe),st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-code-block-dialog"]],decls:15,vars:2,consts:[["mat-dialog-title","",1,"code-block-dialog__title"],[1,"code-block-dialog__icon"],[1,"code-block-dialog__title-text"],[1,"code-block-dialog__language"],[1,"code-block-dialog__content"],[1,"code-block-dialog__code"],[3,"innerHTML"],["align","end"],["mat-button","",1,"code-block-dialog__close-btn",3,"click"]],template:function(n,o){n&1&&(s(0,"h2",0)(1,"mat-icon",1),d(2,"code"),l(),s(3,"span",2),d(4,"Code Block"),l(),A(5,qTe,2,1,"span",3),l(),s(6,"mat-dialog-content",4)(7,"pre",5),F(8,"code",6),l()(),s(9,"mat-dialog-actions",7)(10,"button",8),v("click",function(){return o.close()}),s(11,"mat-icon"),d(12,"close"),l(),s(13,"span"),d(14,"Close"),l()()()),n&2&&(u(5),O(o.data.language?5:-1),u(3),x("innerHTML",o.data.code,Zp))},dependencies:[Ve,Wt,Be,$,le,te,se],styles:[".code-block-dialog__title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.code-block-dialog__icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);font-size:24px;width:24px;height:24px;flex-shrink:0}.code-block-dialog__title-text[_ngcontent-%COMP%]{font-size:18px;font-weight:500;color:var(--mat-sys-on-surface)}.code-block-dialog__language[_ngcontent-%COMP%]{margin-left:auto;font-size:11px;color:var(--mat-sys-primary);background:var(--mat-sys-primary-container);padding:4px 10px;border-radius:12px;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.code-block-dialog__content[_ngcontent-%COMP%]{padding:0;max-height:70vh;overflow:auto}.code-block-dialog__code[_ngcontent-%COMP%]{display:block;background-color:var(--mat-sys-surface-container-highest);color:var(--mat-sys-on-surface);padding:20px;margin:0;font-size:14px;line-height:1.6;border-radius:0;overflow-x:auto;white-space:pre}.code-block-dialog__code[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font-family:Consolas,Monaco,Courier New,monospace;font-size:14px}.code-block-dialog__close-btn[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;color:var(--mat-sys-on-surface-variant);font-weight:500}.code-block-dialog__close-btn[_ngcontent-%COMP%]:hover{background-color:var(--mat-sys-surface-container-low);color:var(--mat-sys-on-surface)}.code-block-dialog__close-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px}"],changeDetection:0})}return t})();var XTe=["messageContainer"],wU=(t,i)=>i.id;function QTe(t,i){if(t&1&&(s(0,"div",4)(1,"div",6)(2,"span",7),d(3,"Y"),l()(),s(4,"div",8)(5,"div",9),F(6,"markdown",10),l(),s(7,"div",11),d(8),l()()()),t&2){let e=b().$implicit,n=b();u(6),x("data",e.content),u(2),U(n.formatTime(e.created_at))}}function YTe(t,i){t&1&&(Vn(),s(0,"svg",15)(1,"defs")(2,"linearGradient",18),F(3,"stop",19)(4,"stop",20),l()(),s(5,"g",21),F(6,"path",22)(7,"path",23)(8,"path",24)(9,"path",25),l()())}function KTe(t,i){if(t&1){let e=j();s(0,"div",27),v("click",function(){let o=D(e).$implicit,r=b(4);return P(r.openToolCallDialog(o))}),s(1,"mat-icon",28),d(2,"build"),l(),s(3,"span",29),d(4),l(),s(5,"mat-icon",30),d(6,"open_in_new"),l()()}if(t&2){let e=i.$implicit;u(4),U(e.function.name)}}function ZTe(t,i){if(t&1&&(s(0,"div",16),J(1,KTe,7,1,"div",26,wU),l()),t&2){let e=b(2).$implicit;u(),ee(e.tool_calls)}}function JTe(t,i){if(t&1){let e=j();s(0,"div",32),v("click",function(){let o=D(e).$implicit,r=b(4);return P(r.openAssistantToolResultDialog(o))}),s(1,"mat-icon",28),d(2,"check_circle"),l(),s(3,"span",29),d(4),l(),s(5,"mat-icon",30),d(6,"open_in_new"),l()()}if(t&2){let e=i.$implicit;u(4),U(e.toolName)}}function eEe(t,i){if(t&1&&(s(0,"div",17),J(1,JTe,7,1,"div",31,Ii),l()),t&2){let e=b(2).$implicit;u(),ee(e.tool_result)}}function tEe(t,i){if(t&1&&(s(0,"div",5)(1,"div",12),F(2,"img",13),l(),s(3,"div",8)(4,"div",14),F(5,"markdown",10),A(6,YTe,10,0,":svg:svg",15),l(),A(7,ZTe,3,0,"div",16),A(8,eEe,3,0,"div",17),s(9,"div",11),d(10),l()()()),t&2){let e=b().$implicit,n=b();u(4),je("gns3-chat-message-list__bubble--streaming",n.isStreaming()&&e===n.lastAssistantMessage),u(),x("data",e.content),u(),O(n.isStreaming()&&e===n.lastAssistantMessage&&e.content?6:-1),u(),O(e.tool_calls&&e.tool_calls.length>0?7:-1),u(),O(e.tool_result&&e.tool_result.length>0?8:-1),u(2),U(n.formatTime(e.created_at))}}function nEe(t,i){if(t&1&&(s(0,"div",5)(1,"div",33),F(2,"markdown",10),l()()),t&2){let e=b().$implicit;u(2),x("data",e.content)}}function iEe(t,i){if(t&1&&(s(0,"div",5)(1,"div",34)(2,"mat-icon",35),d(3,"error"),l(),s(4,"div",36),d(5),l()()()),t&2){let e=b().$implicit;u(5),U(e.metadata.error)}}function oEe(t,i){if(t&1&&(A(0,QTe,9,2,"div",4),A(1,tEe,11,7,"div",5),A(2,nEe,3,1,"div",5),A(3,iEe,6,1,"div",5)),t&2){let e=i.$implicit;O(e.role==="user"?0:-1),u(),O(e.role==="assistant"?1:-1),u(),O(e.role==="system"?2:-1),u(),O(e.metadata!=null&&e.metadata.error?3:-1)}}function rEe(t,i){if(t&1){let e=j();s(0,"div",3)(1,"div",37)(2,"div",38),F(3,"img",39),l(),s(4,"h3",40),d(5,"Welcome to GNS3 AI Assistant"),l(),s(6,"p",41),d(7,"Ask me anything about network automation and GNS3"),l(),s(8,"div",42)(9,"div",43),v("click",function(){D(e);let o=b();return P(o.sendSuggestion("Help me understand this network topology"))}),s(10,"mat-icon"),d(11,"help_outline"),l(),s(12,"span"),d(13,"Explain network topology"),l()(),s(14,"div",43),v("click",function(){D(e);let o=b();return P(o.sendSuggestion("Analyze the network configuration"))}),s(15,"mat-icon"),d(16,"analytics"),l(),s(17,"span"),d(18,"Analyze configuration"),l()(),s(19,"div",43),v("click",function(){D(e);let o=b();return P(o.sendSuggestion("Find potential network issues"))}),s(20,"mat-icon"),d(21,"search"),l(),s(22,"span"),d(23,"Find network issues"),l()()()()()}}var Nk=(()=>{class t{messages=oe([]);isStreaming=oe(!1);autoScroll=oe(!0);scrollToEnd=new ve;suggestionClicked=new ve;messageContainer=Ut.required("messageContainer");shouldScrollToBottom=!1;dialog=f(Je);constructor(){}ngOnChanges(e){e.messages&&e.messages.previousValue!==e.messages.currentValue&&(this.shouldScrollToBottom=!0)}ngAfterViewChecked(){this.shouldScrollToBottom&&this.autoScroll()&&(this.scrollToBottom(),this.shouldScrollToBottom=!1)}ngAfterViewInit(){this.setupCodeBlockCollapse()}setupCodeBlockCollapse(){let e=this.messageContainer().nativeElement;new MutationObserver(()=>{this.processCodeBlocks(e),this.wrapTables(e)}).observe(e,{childList:!0,subtree:!0}),this.processCodeBlocks(e),this.wrapTables(e)}processCodeBlocks(e){e.querySelectorAll("markdown pre").forEach(o=>{if(o.hasAttribute("data-code-processed"))return;let r=o.querySelector("code");if(!r)return;let a=r.textContent?.split(`
|
||
`).length||0;o.setAttribute("data-code-processed","true"),a>50&&(o.classList.add("code-block-collapsible"),o.setAttribute("title",`Click to view full code (${a} lines)`),o.addEventListener("click",c=>{c.preventDefault(),c.stopPropagation(),this.openCodeBlockDialog(r.innerHTML,r.className)}))})}wrapTables(e){e.querySelectorAll("markdown table").forEach(o=>{if(o.parentElement?.classList.contains("markdown-table-wrapper"))return;let r=document.createElement("div");r.className="markdown-table-wrapper",o.parentNode?.insertBefore(r,o),r.appendChild(o)})}openCodeBlockDialog(e,n){let o=n.match(/language-(\w+)/)?.[1]||void 0,r={code:e,language:o};this.dialog.open(SU,{data:r,panelClass:["base-dialog-panel","code-block-dialog-panel"]})}get lastAssistantMessage(){let e=this.messages().filter(n=>n.role==="assistant");return e[e.length-1]}isToolCallExecuting(e){return!1}formatTime(e){if(!e)return"";let n=e;/(Z|[+-]\d{2}:\d{2})$/.test(e)||(n=e+"Z");let r=new Date(n),a=new Date;if(isNaN(r.getTime()))return"";let c=a.getTime()-r.getTime(),m=Math.floor(c/6e4);return m<1?"Just now":m<60?`${m} minutes ago`:m<1440?`${Math.floor(m/60)} hours ago`:r.toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}scrollToBottom(){let e=this.messageContainer();if(e?.nativeElement){let n=e.nativeElement;n.scrollTop=n.scrollHeight,this.scrollToEnd.emit()}}trackByMessageId(e,n){return n.id}openToolCallDialog(e,n){let o;n!==void 0?o=n:o=e;let r={type:"tool_call",toolCall:o};this.dialog.open(lC,{data:r,width:"800px",minWidth:"600px",maxWidth:"95vw",maxHeight:"85vh",panelClass:["tool-details-dialog"]})}openAssistantToolResultDialog(e){let n={type:"tool_result",toolName:e.toolName,toolOutput:e.toolOutput};this.dialog.open(lC,{data:n,width:"800px",minWidth:"600px",maxWidth:"95vw",maxHeight:"85vh",panelClass:["tool-details-dialog"]})}sendSuggestion(e){this.suggestionClicked.emit(e)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-chat-message-list"]],viewQuery:function(n,o){n&1&&tn(o.messageContainer,XTe,5),n&2&&nn()},inputs:{messages:[1,"messages"],isStreaming:[1,"isStreaming"],autoScroll:[1,"autoScroll"]},outputs:{scrollToEnd:"scrollToEnd",suggestionClicked:"suggestionClicked"},features:[un],decls:6,vars:3,consts:[["messageContainer",""],[1,"gns3-chat-message-list"],[1,"gns3-chat-message-list__messages-container"],[1,"gns3-chat-message-list__empty-state"],[1,"gns3-chat-message-list__message","gns3-chat-message-list__message--user"],[1,"gns3-chat-message-list__message"],[1,"gns3-chat-message-list__avatar","gns3-chat-message-list__avatar--user"],[1,"avatar-text"],[1,"gns3-chat-message-list__content"],[1,"gns3-chat-message-list__bubble","gns3-chat-message-list__bubble--user"],[1,"gns3-chat-message-list__text",3,"data"],[1,"gns3-chat-message-list__time"],[1,"gns3-chat-message-list__avatar","gns3-chat-message-list__avatar--assistant"],["src","assets/gns3_icon.svg","alt","GNS3",1,"gns3-chat-message-list__avatar-logo"],[1,"gns3-chat-message-list__bubble","gns3-chat-message-list__bubble--assistant"],["viewBox","0 0 256 256","xmlns","http://www.w3.org/2000/svg",1,"gns3-chat-message-list__streaming-logo"],[1,"gns3-chat-message-list__tool-calls-container"],[1,"gns3-chat-message-list__tool-results-container"],["id","gns3LoadingGradient","x1","0%","y1","0%","x2","100%","y2","100%"],["offset","0%",2,"stop-color","var(--mat-sys-primary)","stop-opacity","1"],["offset","100%",2,"stop-color","var(--mat-sys-primary)","stop-opacity","0.6"],["transform","translate(0,-356)"],["d","m 147.99093,422.62227 c 0,6.34 -5.13717,11.47729 -11.47726,11.47729 -6.33986,0 -11.47761,-5.13729 -11.47761,-11.47729 0,-6.34019 5.13775,-11.47804 11.47761,-11.47804 6.34009,0 11.47726,5.13785 11.47726,11.47804 z M 22.394349,480.3376 c -6.886487,37.71152 2.514172,64.92952 17.161614,84.38707 26.124988,36.83736 64.492517,43.28645 64.492517,43.28645 44.81704,8.52584 78.92153,-6.99569 99.36233,-26.23425 25.68784,-24.37577 24.81373,-48.53334 24.92311,-48.86119 0.21851,-11.25931 -3.49797,-19.34782 -10.05651,-24.92306 -11.0404,-9.29128 -24.4855,-5.68414 -24.4855,-5.68414 -23.2827,5.46564 -19.457,26.67165 -19.457,26.67165 1.31155,6.33984 4.59052,10.49362 8.30733,12.89839 7.10497,4.37239 14.64752,3.49799 14.64752,3.49799 11.14958,-1.31129 14.42894,-11.80519 13.77292,-17.05238 -1.09318,-8.30719 -8.63562,-9.83784 -8.63562,-9.83784 -2.84184,-0.54643 -5.02802,-0.10925 -6.66791,0.76517 -2.40425,0.98433 -3.38861,2.62342 -3.38861,2.62342 -1.74868,2.95142 -0.65568,4.59143 0.43749,5.24736 0.65611,0.43714 1.42132,0.43714 1.42132,0.43714 0.87411,0 1.42053,-0.2185 2.07653,-0.54638 1.53057,-0.8745 2.73256,-2.29597 5.02855,-1.42145 3.3886,1.31184 2.514,4.91929 2.514,4.91929 -0.76536,3.93499 -3.06079,5.79343 -5.57488,6.44908 -3.3886,0.8745 -6.88644,-0.21851 -6.88644,-0.21851 -12.02422,-4.9193 -6.66794,-16.943 -6.66794,-16.943 3.71635,-7.54269 12.02432,-8.41719 12.02432,-8.41719 13.00749,-2.07647 21.64316,6.6679 20.22168,21.42461 -1.63939,18.36446 -15.73999,30.49734 -30.82506,38.14961 -56.51289,29.07595 -98.706503,-7.76156 -98.706503,-7.76156 -15.740625,-14.97516 -12.024098,-30.82515 -10.275137,-35.853 0.655867,-1.85856 2.404853,-2.18667 3.279285,-2.18667 12.898528,-1.09269 23.610725,22.73676 24.703825,26.01608 2.2955,5.46552 5.90259,8.52567 9.29119,10.49354 7.65184,4.2631 15.74104,2.18631 15.74104,2.18631 11.14918,-3.82574 7.32358,-12.89835 7.32358,-12.89835 -1.31154,-3.60724 -3.27936,-4.5916 -4.80941,-4.48175 -1.42153,0 -2.51417,1.09316 -2.51417,1.09316 -0.54659,0.65552 -1.20277,1.09252 -1.74915,1.63926 -7.10531,6.01193 -10.6033,-0.32811 -10.6033,-0.32811 -2.51397,-4.04423 1.31224,-6.23061 1.31224,-6.23061 0.76515,-0.43697 1.53004,-0.65583 2.07635,-0.87447 2.84229,-0.874 2.40529,-3.27934 2.40529,-3.27934 -0.43714,-4.4811 -5.46562,-2.62337 -5.46562,-2.62337 -4.9188,1.74936 -6.44941,5.79346 -6.88681,7.54276 -0.10925,0.54665 -0.21864,0.9838 -0.9834,1.09305 -1.42087,0.2185 -1.42087,-2.2956 -1.42087,-2.2956 -0.43766,-17.92675 -5.3563,-25.90628 -7.65197,-28.74817 -0.65595,-0.87508 -1.748963,-1.42143 -2.076703,-1.6399 -5.137765,-2.29543 -10.821818,-6.7772 -10.821818,-6.7772 -10.821645,-7.76093 -6.55856,-14.75663 -6.55856,-14.75663 6.449253,-16.1782 11.696148,-21.75305 11.696148,-21.75305 4.372228,-4.15383 8.963563,-0.43707 8.963563,-0.43707 -3.388589,4.154 -6.012231,8.19861 -6.012231,8.19861 -7.760984,12.35148 -9.072721,17.38012 -9.072721,17.38012 -0.109308,0.43699 -0.109308,1.2022 0.54656,2.0769 7.979631,13.66362 29.513532,15.74023 29.622792,15.74023 5.903,0.87439 10.71217,0.10925 10.71217,0.10925 2.84217,-0.5464 3.27932,1.31202 3.27932,1.31202 0.32816,1.09313 1.53073,4.15392 1.53073,4.15392 2.07675,4.37191 5.24645,2.07639 5.24645,2.07639 1.2029,-0.87441 1.74925,-2.07639 1.74925,-3.06023 0,-0.98427 -0.54635,-1.63992 -0.54635,-1.63992 -1.42154,-2.07704 -1.85853,-4.04413 -1.85853,-4.04413 -0.65564,-2.40529 2.07709,-3.38858 2.07709,-3.38858 5.35574,-2.40531 8.3072,2.18559 8.3072,2.18559 2.84233,3.3886 8.52646,-0.87441 8.52646,-0.87441 4.59089,-3.49785 -1.09323,-8.96303 -1.09323,-8.96303 -11.80522,-10.82192 -25.68768,2.84173 -25.68768,2.84173 -0.76544,0.98401 -1.53071,0.98401 -1.53071,0.98401 -11.47697,0.32817 -22.40799,-8.08903 -22.40799,-8.52636 4.37237,-7.32359 12.78893,-20.11308 12.78893,-20.11308 l 44.48933,17.16181 c 1.74859,0.54637 3.60712,0.10928 3.60712,0.10928 l 69.30196,-13.99174 c 1.53069,-0.21862 1.3122,-2.07653 1.3122,-2.07653 0,-1.53068 -0.10984,-1.74919 -1.42146,-1.96769 -1.42085,-0.21851 -67.44413,-5.35634 -67.44413,-5.35634 -3.6071,-0.21853 -3.6071,-5.13719 0.10925,-5.46498 l 48.53404,-4.04469 c 1.09314,-0.10926 1.31163,-1.20245 1.31163,-1.20245 1.31159,-6.44938 0.87399,-14.86588 0.87399,-14.86588 14.10125,-15.7411 7.32407,-31.26273 7.32407,-31.26273 -8.63521,-21.4247 -27.65565,-21.75286 -27.65565,-21.75286 -31.26208,-34.54162 -72.36236,-30.49735 -72.36236,-30.49735 -1.85878,0 -1.96813,1.53056 -1.96813,1.53056 l -4.69982,29.73201 c -0.21882,1.63996 -1.09349,2.07694 -1.09349,2.07694 l -6.23028,4.91872 c -0.76548,0.76538 -0.98406,0.76538 -2.07708,0.76538 -0.98378,0.10951 -4.04425,0.54685 -4.04425,0.54685 C 32.997429,414.53283 22.394349,480.3376 22.394349,480.3376 z M 220.90065,409.94185 c 2.95154,9.40107 -5.13786,12.35249 -5.13786,12.35249 -1.53006,-7.3239 -6.88645,-17.59894 -6.88645,-17.59894 9.07316,-2.84204 12.02431,5.24645 12.02431,5.24645 z m -45.47307,16.7245 c 0,17.27084 -13.99154,31.37192 -31.3715,31.37192 -17.27088,0 -31.37183,-13.99182 -31.37183,-31.37192 0,-17.37995 14.10095,-31.37147 31.37183,-31.37147 17.37996,0 31.3715,14.10077 31.3715,31.37147 z",2,"fill","url(#gns3LoadingGradient)"],["d","m 29.510681,104.95541 c 0,-1.72767 4.629168,-10.485938 8.922862,-16.881827 9.532205,-14.199177 22.127061,-25.580674 36.840478,-33.291355 8.695245,-4.556811 24.61103,-10.609516 25.516669,-9.70388 0.28263,0.282631 0.95772,0.239563 1.50019,-0.09571 0.54248,-0.33527 4.99436,-0.803063 9.89307,-1.039541 4.89871,-0.236478 10.63286,-0.684969 12.74256,-0.996646 l 3.83581,-0.566686 -2.87686,2.434668 c -1.58227,1.339067 -3.14795,2.450186 -3.47929,2.469154 -1.68705,0.09658 -7.68618,10.854586 -9.04972,16.228519 -2.62183,10.333096 0.5702,21.528346 8.42889,29.562183 2.78528,2.847349 3.5502,4.164777 2.58845,4.458047 -0.75085,0.22896 -20.13669,1.997905 -43.079643,3.930994 -22.942952,1.93308 -43.979985,3.76225 -46.748962,4.06482 -3.520186,0.38465 -5.034504,0.21238 -5.034504,-0.57274 z","transform","translate(0,356)",2,"fill","url(#gns3LoadingGradient)"],["d","m 20.883753,139.13783 c 0.0085,-5.02746 2.975045,-19.84783 5.322913,-26.59244 2.494665,-7.1663 2.58356,-7.27734 5.55674,-6.94098 3.274726,0.37048 78.714134,-5.943709 88.732764,-7.426826 5.48582,-0.8121 6.52647,-0.68727 10.069,1.207818 3.317,1.774438 5.48939,2.113528 13.5404,2.113528 10.7302,0 14.442,-1.34017 21.58487,-7.793315 4.3645,-3.943066 9.57454,-13.722604 9.59579,-18.011849 0.008,-1.629888 0.33172,-3.448849 0.71921,-4.042136 0.42463,-0.650131 10.03894,-1.890095 24.19889,-3.120944 30.29526,-2.633408 27.88976,-2.729233 27.18798,1.083051 -0.8022,4.357824 -3.80236,11.080064 -6.55677,14.691283 -1.92557,2.524555 -2.37472,4.35005 -2.60835,10.601279 l -0.28223,7.551581 -24.80503,2.09802 c -13.64277,1.15391 -25.40194,2.32707 -26.13147,2.60703 -1.54574,0.59315 -1.78171,4.01045 -0.33852,4.90238 0.68162,0.42127 59.31288,5.63597 69.73487,6.20227 0.13185,0.007 0.23973,0.63124 0.23973,1.38683 0,1.51563 -0.90249,1.86399 -8.63057,3.33139 -5.68832,1.08009 -69.10668,6.80224 -75.38896,6.80224 -2.3662,0 -9.42164,-2.17638 -18.63036,-5.74688 -8.15202,-3.16078 -15.04629,-5.74995 -15.32061,-5.75372 -0.27431,-0.004 -2.64772,3.43055 -5.27424,7.63179 -3.47938,5.56542 -5.42616,7.76216 -7.17287,8.09378 -4.64405,0.88171 -17.261159,1.68518 -17.261159,1.09921 0,-1.35251 4.978919,-10.2667 9.080733,-16.25801 2.418926,-3.53321 4.144786,-6.83378 3.835256,-7.33462 -0.30953,-0.50083 -2.009311,-0.91061 -3.777284,-0.91061 -4.301856,0 -7.201623,3.5265 -13.207838,16.06246 -2.590162,5.4061 -5.017616,9.82927 -5.394342,9.82927 -0.376727,0 -12.749895,1.07386 -27.49593,2.38635 -33.117257,2.94765 -31.127147,2.93162 -31.122613,0.25077 z","transform","translate(0,356)",2,"fill","url(#gns3LoadingGradient)"],["d","m 22.776215,171.26276 c -0.588994,-1.97784 -1.316927,-9.52959 -1.61763,-16.78168 l -0.546734,-13.1856 h 4.41742 c 4.272458,0 45.974498,-3.38285 52.084903,-4.2251 2.729171,-0.37619 3.068349,-0.13433 3.610054,2.57419 0.747297,3.73649 7.88306,10.75622 15.175011,14.92825 4.051489,2.31803 5.884641,4.10484 7.379631,7.19308 1.09401,2.25992 1.9891,4.55758 1.9891,5.10593 0,1.13043 -9.626814,2.21632 -19.738447,2.22647 -3.735922,0.004 -7.090412,0.30464 -7.454422,0.66866 -0.364011,0.36401 -2.701459,0.81187 -5.19433,0.99524 -2.492869,0.18337 -14.079003,1.18013 -25.746961,2.21502 -11.667959,1.03489 -21.680722,1.88162 -22.250585,1.88162 -0.569862,0 -1.518017,-1.61824 -2.10701,-3.59608 z","transform","translate(0,356)",2,"fill","url(#gns3LoadingGradient)"],[1,"gns3-chat-message-list__tool-call"],[1,"gns3-chat-message-list__tool-call",3,"click"],[1,"gns3-chat-message-list__tool-icon"],[1,"gns3-chat-message-list__tool-name-text"],[1,"gns3-chat-message-list__expand-icon"],[1,"gns3-chat-message-list__tool-result"],[1,"gns3-chat-message-list__tool-result",3,"click"],[1,"gns3-chat-message-list__bubble","gns3-chat-message-list__bubble--system"],[1,"gns3-chat-message-list__bubble","gns3-chat-message-list__bubble--error"],[1,"gns3-chat-message-list__error-icon"],[1,"gns3-chat-message-list__text"],[1,"gns3-chat-message-list__empty-content"],[1,"gns3-chat-message-list__empty-icon-wrapper"],["src","assets/gns3_icon.svg","alt","GNS3",1,"gns3-chat-message-list__empty-logo"],[1,"gns3-chat-message-list__empty-title"],[1,"gns3-chat-message-list__empty-description"],[1,"gns3-chat-message-list__empty-suggestions"],[1,"gns3-chat-message-list__suggestion-chip",3,"click"]],template:function(n,o){n&1&&(s(0,"div",1,0)(2,"div",2),J(3,oEe,4,4,null,null,wU),A(5,rEe,24,0,"div",3),l()()),n&2&&(je("gns3-chat-message-list--auto-scroll",o.autoScroll()),u(3),ee(o.messages()),u(2),O(o.messages().length===0?5:-1))},dependencies:[Z,te,se,Ce,Kg,tM],styles:['.gns3-chat-message-list[_ngcontent-%COMP%]{height:100%;overflow-y:auto;padding:16px;background-color:var(--mat-sys-surface);scrollbar-width:thin;scrollbar-color:var(--mat-sys-primary) transparent}.gns3-chat-message-list__messages-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.gns3-chat-message-list__message[_ngcontent-%COMP%]{display:flex;gap:8px;animation:_ngcontent-%COMP%_fadeIn .2s ease-out}.gns3-chat-message-list__message--user[_ngcontent-%COMP%]{flex-direction:row-reverse}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.gns3-chat-message-list__avatar[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.gns3-chat-message-list__avatar--user[_ngcontent-%COMP%]{background:linear-gradient(135deg,var(--mat-sys-primary),var(--mat-sys-primary));color:var(--mat-sys-on-primary)}.gns3-chat-message-list__avatar--assistant[_ngcontent-%COMP%]{background:linear-gradient(135deg,var(--mat-sys-primary),var(--mat-sys-primary-container));color:var(--mat-sys-on-primary);overflow:hidden}.gns3-chat-message-list__avatar--tool[_ngcontent-%COMP%]{background:linear-gradient(135deg,var(--mat-sys-tertiary),var(--mat-sys-tertiary-container));color:var(--mat-sys-on-tertiary)}.gns3-chat-message-list__avatar[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:20px;height:20px;font-size:20px;color:inherit}.gns3-chat-message-list__avatar[_ngcontent-%COMP%] .avatar-text[_ngcontent-%COMP%]{font-size:12px;font-weight:700;font-family:system-ui,-apple-system,sans-serif;letter-spacing:-.5px}.gns3-chat-message-list__avatar-logo[_ngcontent-%COMP%]{width:24px;height:24px;object-fit:contain}.gns3-chat-message-list__content[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:4px;max-width:80%}.gns3-chat-message-list__message--user[_ngcontent-%COMP%] .gns3-chat-message-list__content[_ngcontent-%COMP%]{align-items:flex-end}.gns3-chat-message-list__bubble[_ngcontent-%COMP%]{padding:10px 14px;border-radius:16px;position:relative}.gns3-chat-message-list__bubble--user[_ngcontent-%COMP%]{background:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container);border-bottom-right-radius:4px;box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent)}.gns3-chat-message-list__bubble--assistant[_ngcontent-%COMP%]{background:linear-gradient(135deg,var(--mat-sys-surface-container),var(--mat-sys-surface-container-high));color:var(--mat-sys-on-surface);border-bottom-left-radius:4px;box-shadow:0 1px 3px color-mix(in srgb,var(--mat-sys-shadow) 12%,transparent);border:1px solid var(--mat-sys-outline-variant);position:relative;overflow:hidden}.gns3-chat-message-list__bubble--assistant[_ngcontent-%COMP%]:after{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--mat-sys-primary) 50%,transparent),transparent);opacity:0;transition:opacity .2s ease}.gns3-chat-message-list__bubble--assistant[_ngcontent-%COMP%]:hover:after{opacity:1}.gns3-chat-message-list__bubble--system[_ngcontent-%COMP%]{background:linear-gradient(135deg,color-mix(in srgb,var(--mat-sys-primary) 10%,transparent),color-mix(in srgb,var(--mat-sys-primary) 10%,transparent));color:var(--mat-sys-on-surface-variant);text-align:center;font-size:12px;padding:8px 16px;border-radius:20px;margin:0 auto;border:1px solid color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.gns3-chat-message-list__bubble--error[_ngcontent-%COMP%]{background-color:var(--mat-sys-error-container);color:var(--mat-sys-on-error-container);display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:8px}@keyframes _ngcontent-%COMP%_blink{0%,50%{opacity:1}51%,to{opacity:0}}.gns3-chat-message-list__error-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-error-container)}.gns3-chat-message-list__time[_ngcontent-%COMP%]{font-size:12px;color:var(--mat-sys-on-surface-variant);opacity:.7;padding:0 4px}.gns3-chat-message-list__streaming-logo[_ngcontent-%COMP%]{flex-shrink:0;margin-top:4px;width:16px;height:16px;opacity:.9;animation:_ngcontent-%COMP%_rotate 1s linear infinite}@keyframes _ngcontent-%COMP%_rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.gns3-chat-message-list__tool-calls-container[_ngcontent-%COMP%], .gns3-chat-message-list__tool-results-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;margin-top:8px}.gns3-chat-message-list__tool-call-message[_ngcontent-%COMP%], .gns3-chat-message-list__tool-result-message[_ngcontent-%COMP%]{margin-left:40px;margin-bottom:8px}.gns3-chat-message-list__tool-call-wrapper[_ngcontent-%COMP%], .gns3-chat-message-list__tool-result-wrapper[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.gns3-chat-message-list__tool-call[_ngcontent-%COMP%], .gns3-chat-message-list__tool-result[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;background:var(--mat-sys-surface-container-low);border:1px solid var(--mat-sys-outline-variant);border-radius:8px;cursor:pointer;transition:all .1s ease;user-select:none;font-size:12px}.gns3-chat-message-list__tool-call[_ngcontent-%COMP%]{border-left:3px solid var(--mat-sys-primary-container)}.gns3-chat-message-list__tool-call[_ngcontent-%COMP%]:hover{background:var(--mat-sys-primary-container);border-color:var(--mat-sys-primary-container);transform:translateY(-1px);box-shadow:0 2px 6px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.gns3-chat-message-list__tool-result[_ngcontent-%COMP%]{border-left:3px solid var(--mat-sys-tertiary)}.gns3-chat-message-list__tool-result[_ngcontent-%COMP%]:hover{background:var(--mat-sys-tertiary-container);border-color:var(--mat-sys-tertiary);transform:translateY(-1px);box-shadow:0 2px 6px color-mix(in srgb,var(--mat-sys-tertiary) 30%,transparent)}.gns3-chat-message-list__tool-icon[_ngcontent-%COMP%]{width:16px;height:16px;font-size:16px}.gns3-chat-message-list__tool-call[_ngcontent-%COMP%] .gns3-chat-message-list__tool-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary-container)}.gns3-chat-message-list__tool-result[_ngcontent-%COMP%] .gns3-chat-message-list__tool-icon[_ngcontent-%COMP%]{color:var(--mat-sys-tertiary)}.gns3-chat-message-list__tool-name-text[_ngcontent-%COMP%]{font-family:monospace;font-size:12px;font-weight:500;color:var(--mat-sys-on-surface)}.gns3-chat-message-list__expand-icon[_ngcontent-%COMP%]{width:14px;height:14px;font-size:14px;color:var(--mat-sys-on-surface-variant);opacity:.5}.gns3-chat-message-list__empty-state[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;height:100%;padding:48px 16px}.gns3-chat-message-list__empty-content[_ngcontent-%COMP%]{text-align:center;max-width:500px}.gns3-chat-message-list__empty-icon-wrapper[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:80px;height:80px;margin:0 auto 24px;background:linear-gradient(135deg,color-mix(in srgb,var(--mat-sys-tertiary) 10%,transparent),color-mix(in srgb,var(--mat-sys-tertiary) 10%,transparent));border-radius:50%;animation:_ngcontent-%COMP%_pulse 2s ease-in-out infinite}@keyframes _ngcontent-%COMP%_pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}.gns3-chat-message-list__empty-logo[_ngcontent-%COMP%]{width:48px;height:48px;object-fit:contain}.gns3-chat-message-list__empty-title[_ngcontent-%COMP%]{font-size:18px;font-weight:500;color:var(--mat-sys-on-surface);margin:0 0 8px}.gns3-chat-message-list__empty-description[_ngcontent-%COMP%]{font-size:12px;color:var(--mat-sys-on-surface-variant);margin:0 0 24px}.gns3-chat-message-list__empty-suggestions[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;align-items:center}.gns3-chat-message-list__suggestion-chip[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--mat-sys-surface-container-low);border:1px solid var(--mat-sys-outline-variant);border-radius:16px;cursor:pointer;transition:all .1s ease;max-width:280px;width:100%;justify-content:center}.gns3-chat-message-list__suggestion-chip[_ngcontent-%COMP%]:hover{background:var(--mat-sys-primary-container);border-color:var(--mat-sys-primary);transform:translateY(-2px);box-shadow:0 4px 6px color-mix(in srgb,var(--mat-sys-shadow) 15%,transparent)}.gns3-chat-message-list__suggestion-chip[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:18px;height:18px;font-size:18px;color:var(--mat-sys-primary)}.gns3-chat-message-list__suggestion-chip[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:12px;color:var(--mat-sys-on-surface)}.gns3-chat-message-list--auto-scroll[_ngcontent-%COMP%]{scroll-behavior:smooth}'],changeDetection:0})}return t})();var aEe=["messageInput"],sEe=["menuTrigger"],lEe=(t,i)=>i.config_id;function cEe(t,i){t&1&&(s(0,"mat-icon",7),d(1,"stop"),l())}function dEe(t,i){t&1&&(s(0,"mat-icon"),d(1,"send"),l())}function mEe(t,i){t&1&&(s(0,"mat-icon",7),d(1,"refresh"),l())}function pEe(t,i){if(t&1&&(s(0,"div",12)(1,"span",16),d(2),l(),s(3,"span",17),d(4," / "),l(),s(5,"span",18),d(6),l()()),t&2){let e=b();u(),je("gns3-chat-input-area__char-count--warning",e.isNearLimit),u(),U(e.message().length),u(4),U(e.maxLength())}}function uEe(t,i){t&1&&(s(0,"span",21),d(1,"Group"),l())}function hEe(t,i){if(t&1){let e=j();s(0,"button",19),v("click",function(){let o=D(e).$implicit,r=b();return P(r.selectModel(o))}),s(1,"mat-icon"),d(2),l(),s(3,"span",20),d(4),l(),A(5,uEe,2,0,"span",21),l()}if(t&2){let e=i.$implicit,n=b();je("selected",e.config_id===n.currentModelId()),u(2),U(e.config_id===n.currentModelId()?"check_circle":"radio_button_unchecked"),u(2),U(n.getModelDisplayName(e)),u(),O(e.source==="group"?5:-1)}}function fEe(t,i){t&1&&(F(0,"mat-divider"),s(1,"button",22)(2,"mat-icon"),d(3,"error_outline"),l(),s(4,"span"),d(5,"No models configured"),l()())}function gEe(t,i){if(t&1){let e=j();F(0,"mat-divider"),s(1,"div",23)(2,"div",24),d(3,"Copilot Mode"),l(),s(4,"button",25),v("click",function(){D(e);let o=b();return P(o.selectCopilotMode("teaching_assistant"))}),s(5,"mat-icon"),d(6),l(),s(7,"div",26)(8,"span",27),d(9,"Teaching Assistant"),l(),s(10,"span",28),d(11,"Diagnostics only"),l()()(),s(12,"button",25),v("click",function(){D(e);let o=b();return P(o.selectCopilotMode("lab_automation_assistant"))}),s(13,"mat-icon"),d(14),l(),s(15,"div",26)(16,"span",27),d(17,"Lab Automation"),l(),s(18,"span",28),d(19,"Full configuration access"),l()()()()}if(t&2){let e=b();u(4),je("selected",e.currentCopilotMode()==="teaching_assistant"),u(2),U(e.currentCopilotMode()==="teaching_assistant"?"check_circle":"radio_button_unchecked"),u(6),je("selected",e.currentCopilotMode()==="lab_automation_assistant"),u(2),U(e.currentCopilotMode()==="lab_automation_assistant"?"check_circle":"radio_button_unchecked")}}var Rk=(()=>{class t{placeholder=oe("Message (Ctrl+Enter to send)");disabled=oe(!1);isStreaming=oe(!1);maxLength=oe(4e3);showCharCount=oe(!1);warningThreshold=oe(.9);modelConfigs=oe([]);currentModelId=oe(null);currentCopilotMode=oe("teaching_assistant");messageSent=new ve;inputChanged=new ve;modelSelected=new ve;copilotModeSelected=new ve;abortClicked=new ve;messageInput=Ut.required("messageInput");menuTrigger=Ut.required("menuTrigger");message=ae("");textareaHeight=48;destroy$=new Le;previousMessageLength=0;currentTheme="";themeService=f(yi);cdr=f(K);overlayContainer=f(gm);constructor(){this.currentTheme=this.themeService.savedTheme}ngOnInit(){setTimeout(()=>{this.adjustTextareaHeight()},0),this.themeService.themeChanged.pipe(rt(this.destroy$)).subscribe(e=>{this.currentTheme=e;let n=this.menuTrigger();n&&n.menuOpen&&n.closeMenu()})}ensureMenuTheme(){requestAnimationFrame(()=>{let e=this.overlayContainer.getContainerElement();e.classList.remove("theme-deeppurple-amber","theme-indigo-pink","theme-magenta-violet","theme-rose-red","theme-pink-bluegrey","theme-purple-green","theme-azure-blue","theme-cyan-orange"),e.classList.add(`theme-${this.currentTheme}`)})}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}get canSend(){return this.message().trim().length>0&&this.message().length<=this.maxLength()}get isNearLimit(){return this.message().length>=this.maxLength()*this.warningThreshold()}handleKeyDown(e){e.key==="Enter"&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),this.canSend&&!this.disabled()&&this.sendMessage())}onInputChange(e){this.message.set(e),this.inputChanged.emit(this.message()),setTimeout(()=>{this.adjustTextareaHeight()},0)}adjustTextareaHeight(){let e=this.messageInput();if(!e||!e.nativeElement)return;let n=e.nativeElement;n.style.height="auto";let o=n.scrollHeight,r=Math.min(Math.max(o,48),200);this.textareaHeight=r,this.previousMessageLength!==this.message().length&&(n.style.height=`${r}px`,this.previousMessageLength=this.message().length)}sendMessage(){if(this.isStreaming()){this.abortClicked.emit();return}if(!this.canSend||this.disabled())return;let e=this.message().trim();e&&(this.messageSent.emit(e),this.message.set(""),setTimeout(()=>{this.adjustTextareaHeight()},0))}focus(){let e=this.messageInput();e&&e.nativeElement&&e.nativeElement.focus()}clear(){this.message.set(""),setTimeout(()=>{this.adjustTextareaHeight()},0)}getCurrentModelDisplayName(){let e=this.modelConfigs();if(!e||e.length===0)return"Model";let n=e.find(o=>o.config_id===this.currentModelId());return n?sC(n.config.model):sC(e[0].config.model)}getFullModelDisplayName(){let e=this.modelConfigs();if(!e||e.length===0)return"No model configured";let n=e.find(o=>o.config_id===this.currentModelId());return n?Ak(n):Ak(e[0])}getModelDisplayName(e){return Ak(e)}selectModel(e){this.modelSelected.emit(e)}selectCopilotMode(e){this.copilotModeSelected.emit(e)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-chat-input-area"]],viewQuery:function(n,o){n&1&&tn(o.messageInput,aEe,5)(o.menuTrigger,sEe,5),n&2&&nn(2)},inputs:{placeholder:[1,"placeholder"],disabled:[1,"disabled"],isStreaming:[1,"isStreaming"],maxLength:[1,"maxLength"],showCharCount:[1,"showCharCount"],warningThreshold:[1,"warningThreshold"],modelConfigs:[1,"modelConfigs"],currentModelId:[1,"currentModelId"],currentCopilotMode:[1,"currentCopilotMode"],message:[1,"message"]},outputs:{messageSent:"messageSent",inputChanged:"inputChanged",modelSelected:"modelSelected",copilotModeSelected:"copilotModeSelected",abortClicked:"abortClicked",message:"messageChange"},decls:26,vars:18,consts:[["messageInput",""],["menuTrigger","matMenuTrigger"],["modelMenu","matMenu"],[1,"gns3-chat-input-area"],[1,"gns3-chat-input-area__input-wrapper"],[1,"gns3-chat-input-area__textarea",3,"input","keydown","placeholder","disabled","value","rows","maxLength"],["matRipple","",1,"gns3-chat-input-area__send-button",3,"click","disabled"],[1,"gns3-chat-input-area__loading-spinner"],["matRipple","",1,"gns3-chat-input-area__model-chip",3,"menuOpened","matMenuTriggerFor","disabled","title"],[1,"gns3-chat-input-area__chip-icon"],[1,"gns3-chat-input-area__chip-text"],[1,"gns3-chat-input-area__chip-arrow"],[1,"gns3-chat-input-area__input-footer"],["xPosition","before"],[1,"gns3-chat-input-area__model-menu-header"],["mat-menu-item","",3,"selected"],[1,"gns3-chat-input-area__char-count"],[1,"gns3-chat-input-area__char-separator"],[1,"gns3-chat-input-area__char-max"],["mat-menu-item","",3,"click"],[1,"gns3-chat-input-area__model-name"],[1,"gns3-chat-input-area__model-source"],["mat-menu-item","","disabled",""],[1,"gns3-chat-input-area__copilot-mode-section"],[1,"gns3-chat-input-area__copilot-mode-header"],["mat-menu-item","",1,"gns3-chat-input-area__copilot-mode-item",3,"click"],[1,"gns3-chat-input-area__mode-info"],[1,"gns3-chat-input-area__mode-name"],[1,"gns3-chat-input-area__mode-description"]],template:function(n,o){if(n&1&&(s(0,"div",3)(1,"div",4)(2,"textarea",5,0),v("input",function(a){return o.onInputChange(a.target.value)})("keydown",function(a){return o.handleKeyDown(a)}),l(),s(4,"button",6),v("click",function(){return o.sendMessage()}),A(5,cEe,2,0,"mat-icon",7)(6,dEe,2,0,"mat-icon")(7,mEe,2,0,"mat-icon",7),l(),s(8,"button",8,1),v("menuOpened",function(){return o.ensureMenuTheme()}),s(10,"mat-icon",9),d(11,"psychology"),l(),s(12,"span",10),d(13),l(),s(14,"mat-icon",11),d(15,"expand_more"),l()()(),A(16,pEe,7,4,"div",12),l(),s(17,"mat-menu",13,2)(19,"div",14),d(20,"Select AI Model"),l(),F(21,"mat-divider"),J(22,hEe,6,5,"button",15,lEe),A(24,fEe,6,0),A(25,gEe,20,6),l()),n&2){let r=Re(18);u(2),yn("height",o.textareaHeight,"px"),x("placeholder",o.placeholder())("disabled",o.disabled())("value",o.message())("rows",1)("maxLength",o.maxLength()),u(2),je("gns3-chat-input-area__send-button--abort",o.isStreaming()),x("disabled",(!o.canSend||o.disabled())&&!o.isStreaming()),u(),O(o.isStreaming()?5:o.disabled()?7:6),u(3),x("matMenuTriggerFor",r)("disabled",o.disabled()||!o.modelConfigs()||o.modelConfigs().length===0)("title",o.getFullModelDisplayName()),u(5),U(o.getCurrentModelDisplayName()),u(3),O(o.showCharCount()?16:-1),u(6),ee(o.modelConfigs()),u(2),O(!o.modelConfigs()||o.modelConfigs().length===0?24:-1),u(),O(o.modelConfigs()&&o.modelConfigs().length>0?25:-1)}},dependencies:[Z,te,se,ss,as,Qe,Fn,ot,kn,Ea,ls],styles:['.gns3-chat-input-area[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding:16px;background:transparent;border-top:1px solid transparent}.gns3-chat-input-area__input-wrapper[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:center;width:100%}.gns3-chat-input-area__textarea[_ngcontent-%COMP%]{flex:1;min-width:0;min-height:48px;max-height:200px;padding:12px 16px;border:2px solid var(--mat-sys-outline-variant);border-radius:24px;background:transparent;color:var(--mat-sys-on-surface);font-family:inherit;font-size:16px;line-height:1.5;resize:none;outline:none;transition:all .2s ease;box-sizing:border-box;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.gns3-chat-input-area__textarea[_ngcontent-%COMP%]::-webkit-scrollbar{display:none}.gns3-chat-input-area__textarea[_ngcontent-%COMP%]:focus{border-color:var(--mat-sys-primary);background:var(--mat-sys-surface-container-low);box-shadow:0 0 0 4px color-mix(in srgb,var(--mat-sys-primary) 10%,transparent)}.gns3-chat-input-area__textarea[_ngcontent-%COMP%]:hover{border-color:var(--mat-sys-outline)}.gns3-chat-input-area__textarea[_ngcontent-%COMP%]::placeholder{color:var(--mat-sys-on-surface-variant);opacity:.6}.gns3-chat-input-area__textarea[_ngcontent-%COMP%]:disabled{background-color:var(--mat-sys-surface-container-high);cursor:not-allowed;opacity:.6}.gns3-chat-input-area__model-chip[_ngcontent-%COMP%]{flex-shrink:0;height:36px;min-width:100px;max-width:200px;padding:0 12px;border:none;border-radius:18px;background:linear-gradient(135deg,var(--mat-sys-primary),var(--mat-sys-primary-container));color:var(--mat-sys-on-primary);display:flex;align-items:center;gap:6px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent);position:relative;overflow:hidden;font-family:inherit;font-size:13px;font-weight:500}.gns3-chat-input-area__model-chip[_ngcontent-%COMP%]:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,color-mix(in srgb,var(--mat-sys-on-primary) 20%,transparent),transparent);opacity:0;transition:opacity .3s ease;border-radius:18px}.gns3-chat-input-area__model-chip[_ngcontent-%COMP%]:hover:not(:disabled){box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-primary) 50%,transparent);background:linear-gradient(135deg,var(--mat-sys-primary),color-mix(in srgb,var(--mat-sys-primary-container) 80%,black));transform:translateY(-1px)}.gns3-chat-input-area__model-chip[_ngcontent-%COMP%]:hover:not(:disabled):before{opacity:1}.gns3-chat-input-area__model-chip[_ngcontent-%COMP%]:active:not(:disabled){transform:translateY(0);box-shadow:0 2px 6px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.gns3-chat-input-area__model-chip[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed;transform:none}.gns3-chat-input-area__chip-icon[_ngcontent-%COMP%]{width:16px;height:16px;font-size:16px;color:var(--mat-sys-on-primary);flex-shrink:0}.gns3-chat-input-area__chip-text[_ngcontent-%COMP%]{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--mat-sys-on-primary);line-height:1}.gns3-chat-input-area__chip-arrow[_ngcontent-%COMP%]{width:18px;height:18px;font-size:18px;color:var(--mat-sys-on-primary);flex-shrink:0}.gns3-chat-input-area__send-button[_ngcontent-%COMP%]{flex-shrink:0;width:48px;height:48px;border:none;border-radius:50%;background:linear-gradient(135deg,var(--mat-sys-primary),var(--mat-sys-tertiary));color:var(--mat-sys-on-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-tertiary) 30%,transparent);position:relative;overflow:hidden}.gns3-chat-input-area__send-button[_ngcontent-%COMP%]:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,color-mix(in srgb,var(--mat-sys-on-surface) 20%,transparent),transparent);opacity:0;transition:opacity .3s ease;border-radius:50%}.gns3-chat-input-area__send-button[_ngcontent-%COMP%]:hover:not(:disabled){transform:scale(1.15);box-shadow:0 8px 24px color-mix(in srgb,var(--mat-sys-tertiary) 50%,transparent);background:linear-gradient(135deg,var(--mat-sys-tertiary),color-mix(in srgb,var(--mat-sys-tertiary) 80%,black))}.gns3-chat-input-area__send-button[_ngcontent-%COMP%]:hover:not(:disabled):before{opacity:1}.gns3-chat-input-area__send-button[_ngcontent-%COMP%]:active:not(:disabled){transform:scale(1.05);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-tertiary) 30%,transparent)}.gns3-chat-input-area__send-button[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed;transform:none}.gns3-chat-input-area__send-button--abort[_ngcontent-%COMP%]:not(:disabled){background:linear-gradient(135deg,var(--mat-sys-error),var(--mat-sys-error-container));box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-error) 30%,transparent)}.gns3-chat-input-area__send-button--abort[_ngcontent-%COMP%]:not(:disabled):hover{box-shadow:0 8px 24px color-mix(in srgb,var(--mat-sys-error) 50%,transparent);background:linear-gradient(135deg,var(--mat-sys-error),color-mix(in srgb,var(--mat-sys-error) 80%,black))}.gns3-chat-input-area__send-button--abort[_ngcontent-%COMP%]:not(:disabled):active{box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-error) 30%,transparent)}.gns3-chat-input-area__send-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:20px;height:20px;font-size:20px;color:var(--mat-sys-on-primary)}.gns3-chat-input-area__loading-spinner[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spin 1s linear infinite}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.gns3-chat-input-area__input-footer[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;align-items:center;margin-top:8px;padding:0 4px}.gns3-chat-input-area__char-count[_ngcontent-%COMP%]{font-size:11px;font-weight:500;color:var(--mat-sys-on-surface-variant);transition:color .2s ease}.gns3-chat-input-area__char-count--warning[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.gns3-chat-input-area__char-separator[_ngcontent-%COMP%], .gns3-chat-input-area__char-max[_ngcontent-%COMP%]{font-size:11px;color:var(--mat-sys-on-surface-variant);opacity:.7;margin:0 2px}.gns3-chat-input-area__model-menu-header[_ngcontent-%COMP%]{padding:12px 16px;font-size:14px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.gns3-chat-input-area__model-name[_ngcontent-%COMP%]{flex:1;font-size:14px}.gns3-chat-input-area__model-source[_ngcontent-%COMP%]{font-size:11px;color:var(--mat-sys-primary);background:color-mix(in srgb,var(--mat-sys-primary) 10%,transparent);padding:2px 8px;border-radius:12px;margin-left:8px}.gns3-chat-input-area__model-menu-item.selected[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--mat-sys-primary) 10%,transparent)}.gns3-chat-input-area__copilot-mode-section[_ngcontent-%COMP%]{padding:0}.gns3-chat-input-area__copilot-mode-header[_ngcontent-%COMP%]{padding:12px 16px 8px;font-size:12px;font-weight:500;color:var(--mat-sys-on-surface-variant);letter-spacing:.5px}.gns3-chat-input-area__copilot-mode-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:8px 16px;min-height:48px}.gns3-chat-input-area__copilot-mode-item[_ngcontent-%COMP%] .gns3-chat-input-area__mode-info[_ngcontent-%COMP%]{display:flex;flex-direction:column}.gns3-chat-input-area__mode-name[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:var(--mat-sys-on-surface)}.gns3-chat-input-area__mode-description[_ngcontent-%COMP%]{font-size:11px;color:var(--mat-sys-on-surface-variant);opacity:.8;line-height:1.2;margin-top:1px}'],changeDetection:0})}return t})();var _Ee=()=>({top:!0}),vEe=()=>({right:!0}),bEe=()=>({bottom:!0}),CEe=()=>({left:!0}),xEe=()=>({top:!0,left:!0}),yEe=()=>({top:!0,right:!0}),SEe=()=>({bottom:!0,left:!0}),wEe=()=>({bottom:!0,right:!0});function MEe(t,i){if(t&1){let e=j();s(0,"div",2),v("mousemove",function(o){D(e);let r=b();return P(r.dragWidget(o))},Mh)("mouseup",function(){D(e);let o=b();return P(o.toggleDragging(!1))},Mh),l()}}function kEe(t,i){t&1&&F(0,"div",3)(1,"div",4)(2,"div",5)(3,"div",6)(4,"div",7)(5,"div",8)(6,"div",9)(7,"div",10),t&2&&(x("resizeEdges",Jt(8,_Ee)),u(),x("resizeEdges",Jt(9,vEe)),u(),x("resizeEdges",Jt(10,bEe)),u(),x("resizeEdges",Jt(11,CEe)),u(),x("resizeEdges",Jt(12,xEe)),u(),x("resizeEdges",Jt(13,yEe)),u(),x("resizeEdges",Jt(14,SEe)),u(),x("resizeEdges",Jt(15,wEe)))}function TEe(t,i){t&1&&(s(0,"span",15),d(1,"Assistant"),l())}function EEe(t,i){if(t&1){let e=j();s(0,"div",16)(1,"button",33),v("click",function(){D(e);let o=b(2);return P(o.onSessionCreated())}),s(2,"mat-icon"),d(3,"add"),l()()()}}function DEe(t,i){if(t&1){let e=j();s(0,"div",16)(1,"app-chat-session-list",34),v("sessionSelected",function(o){D(e);let r=b(2);return P(r.onSessionSelected(o))})("sessionCreated",function(){D(e);let o=b(2);return P(o.onSessionCreated())})("sessionRenamed",function(o){D(e);let r=b(2);return P(r.onSessionRenamed(o))})("sessionDeleted",function(o){D(e);let r=b(2);return P(r.onSessionDeleted(o))})("sessionPinned",function(o){D(e);let r=b(2);return P(r.onSessionPinned(o))})("sessionUnpinned",function(o){D(e);let r=b(2);return P(r.onSessionUnpinned(o))}),l()()}if(t&2){let e=b(2);u(),x("sessions",e.sessions)("currentSessionId",e.currentSessionId)("controller",e.controller)("projectId",e.project().project_id)}}function PEe(t,i){t&1&&(Vn(),F(0,"path",25))}function IEe(t,i){t&1&&(Vn(),F(0,"path",26))}function AEe(t,i){if(t&1){let e=j();s(0,"div",11)(1,"div",12)(2,"h3",13),v("mousedown",function(o){return o.stopPropagation()})("click",function(){D(e);let o=b();return P(o.toggleSidebar())}),s(3,"span",14),d(4,"AI"),l(),A(5,TEe,2,0,"span",15),l()(),A(6,EEe,4,0,"div",16),A(7,DEe,2,4,"div",16),l(),s(8,"div",17)(9,"div",18),v("mousedown",function(){D(e);let o=b();return P(!o.isMaximized&&o.toggleDragging(!0))}),s(10,"div",19)(11,"span"),d(12),l()(),s(13,"div",20)(14,"button",21),v("mousedown",function(o){return o.stopPropagation()})("click",function(o){D(e);let r=b();return o.stopPropagation(),P(r.minimizeChat())}),Vn(),s(15,"svg",22),F(16,"path",23),l()(),vr(),s(17,"button",24),v("mousedown",function(o){return o.stopPropagation()})("click",function(o){D(e);let r=b();return o.stopPropagation(),P(r.maximizeChat())}),Vn(),s(18,"svg",22),A(19,PEe,1,0,":svg:path",25),A(20,IEe,1,0,":svg:path",26),l()(),vr(),s(21,"button",27),v("mousedown",function(o){return o.stopPropagation()})("click",function(o){D(e);let r=b();return o.stopPropagation(),P(r.closeChat())}),Vn(),s(22,"svg",22),F(23,"path",28),l()()()(),vr(),s(24,"div",29)(25,"app-chat-message-list",30),v("scrollToEnd",function(){D(e);let o=b();return P(o.onScrollToEnd())})("suggestionClicked",function(o){D(e);let r=b();return P(r.onSuggestionClicked(o))}),l()(),s(26,"div",31)(27,"app-chat-input-area",32),v("messageSent",function(o){D(e);let r=b();return P(r.onMessageSent(o))})("modelSelected",function(o){D(e);let r=b();return P(r.onModelSelected(o))})("copilotModeSelected",function(o){D(e);let r=b();return P(r.onCopilotModeSelected(o))})("abortClicked",function(){D(e);let o=b();return P(o.onAbortClicked())}),l()()()}if(t&2){let e=b();je("gns3-ai-chat__sidebar--collapsed",e.sidebarCollapsed),u(2),je("gns3-ai-chat__sidebar-title--clickable",!0),u(3),O(e.sidebarCollapsed?-1:5),u(),O(e.sidebarCollapsed?6:-1),u(),O(e.sidebarCollapsed?-1:7),u(5),U(e.currentSessionTitle),u(7),O(e.isMaximized?-1:19),u(),O(e.isMaximized?20:-1),u(5),x("messages",e.currentMessages)("isStreaming",e.isStreaming),u(2),x("disabled",e.isStreaming)("isStreaming",e.isStreaming)("modelConfigs",e.modelConfigs)("currentModelId",e.currentModelId)("currentCopilotMode",e.currentCopilotMode)}}var Fk=(()=>{class t{static TOOLBAR_HEIGHT_DESKTOP=64;static TOOLBAR_HEIGHT_MOBILE=56;static MOBILE_BREAKPOINT=768;static MIN_PANEL_WIDTH=500;static MIN_PANEL_HEIGHT=400;project=oe.required();controller;zIndex=oe(1e3);closed=new ve;windowFocused=new ve;sidebarCollapsed=!0;isStreaming=!1;isDraggingEnabled=!1;isMaximized=!1;isMinimized=!1;style={};previousStyle={};resizedWidth=0;resizedHeight=0;sessions=[];currentSessionId=null;currentMessages=[];modelConfigs=[];currentModelId=null;currentCopilotMode="teaching_assistant";isLoadingModels=!1;currentToolCalls=new Map;currentAssistantMessage=null;destroy$=new Le;saveStateTimer=null;dragRafId=null;aiChatService=f(Ik);controllerService=f(We);aiProfilesService=f(__);loginService=f(Ml);aiChatStore=f(h_);snackBar=f(Qr);cdr=f(K);boundaryService=f(qp);constructor(){}logError(...e){console.error("[AI Chat Error]",...e)}ngOnInit(){let e=window.innerWidth<=t.MOBILE_BREAKPOINT?t.TOOLBAR_HEIGHT_MOBILE:t.TOOLBAR_HEIGHT_DESKTOP;this.boundaryService.setConfig({topOffset:e}),this.initializeChat(),this.subscribeToStateChanges()}ngOnChanges(e){(e.project||e.controller)&&this.initializeChat()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete(),this.cleanup()}onWindowResize(){this.isMinimized||this.isMaximized||(this.style=this.boundaryService.constrainWindowPosition(this.style),this.cdr.markForCheck())}initializeChat(){let e=this.project();!e||!this.controller||(this.aiChatService.resetCurrentSession(),this.aiChatStore.setCurrentProjectId(e.project_id),this.loadPanelState(),this.loadSessions(),this.loadModelConfigs())}loadPanelState(){let e=this.aiChatStore.getPanelStateValue();this.isMaximized=e.isMaximized||!1,this.isMinimized=e.isMinimized||!1;let n=e.width||800,o=e.height||900,r=e.position;this.style={position:"fixed",top:r?.top!==void 0?`${r.top}px`:"80px",right:r?.right!==void 0?`${r.right}px`:void 0,left:r?.left!==void 0?`${r.left}px`:void 0,width:`${n}px`,height:`${o}px`},this.previousStyle=H({},this.style),this.resizedWidth=n,this.resizedHeight=o,this.isMaximized?this.applyMaximizedStyle():this.isMinimized&&this.applyMinimizedStyle()}subscribeToStateChanges(){this.aiChatStore.getSessions().pipe(rt(this.destroy$)).subscribe(e=>{this.sessions=e,this.cdr.markForCheck()}),this.aiChatStore.getCurrentSessionId().pipe(rt(this.destroy$)).subscribe(e=>{this.currentSessionId=e,e&&!this.isStreaming&&this.loadSessionMessages(e),this.cdr.markForCheck()}),this.aiChatStore.getStreamingState().pipe(rt(this.destroy$)).subscribe(e=>{this.isStreaming=e,this.cdr.markForCheck()}),this.aiChatStore.getPanelState().pipe(rt(this.destroy$)).subscribe(e=>{let n=this.isMinimized,o=this.isMaximized;if(this.isMinimized=e.isMinimized,this.isMaximized=e.isMaximized,n&&!e.isMinimized?(Object.keys(this.previousStyle).length>0&&(this.style=H({},this.previousStyle)),this.cdr.markForCheck()):!n&&e.isMinimized&&(this.previousStyle=H({},this.style),this.style={position:"fixed",left:"-9999px",top:"-9999px",width:"0px",height:"0px"},this.cdr.markForCheck()),o&&!e.isMaximized&&!e.isMinimized){if(Object.keys(this.previousStyle).length>0){let r=this.boundaryService.constrainWindowPosition(this.previousStyle);this.style=r;let a=r.width,c=r.height;a&&(this.resizedWidth=Number(a.split("px")[0])),c&&(this.resizedHeight=Number(c.split("px")[0]))}this.cdr.markForCheck()}})}loadSessions(){this.controller&&this.controllerService.get(this.controller.id).then(e=>{this.controller=e,this.aiChatService.getSessions(this.controller,this.project().project_id).pipe(vi(n=>{this.aiChatStore.setSessions(n)}),rt(this.destroy$)).subscribe({error:n=>{this.logError("Failed to load sessions:",n),this.showError(n||"Failed to load sessions")}})})}loadSessionMessages(e){this.controller&&this.controllerService.get(this.controller.id).then(n=>{this.controller=n,this.aiChatService.getSessionHistory(this.controller,this.project().project_id,e).pipe(vi(o=>{let r=this.convertLegacyToolMessages(o.messages);this.aiChatStore.setMessages(e,r),this.currentMessages=r,this.cdr.markForCheck()}),rt(this.destroy$)).subscribe({error:o=>{this.logError("Failed to load session history:",o),this.showError("Failed to load session history")}})})}onSessionSelected(e){this.aiChatStore.setCurrentSessionId(e)}onSessionCreated(){this.aiChatStore.setCurrentSessionId(null),this.aiChatService.resetCurrentSession(),this.currentMessages=[],this.currentToolCalls.clear(),this.cdr.markForCheck()}onSessionRenamed(e){this.controller&&this.controllerService.get(this.controller.id).then(n=>{this.controller=n,this.aiChatService.renameSession(this.controller,this.project().project_id,e.sessionId,e.title).pipe(vi(o=>{this.aiChatStore.updateSession(o)}),rt(this.destroy$)).subscribe({error:o=>{this.logError("Failed to rename session:",o),this.showError("Failed to rename session")}})})}onSessionDeleted(e){this.aiChatStore.deleteSession(e),this.currentSessionId===e&&(this.currentSessionId=null)}onSessionPinned(e){this.controller&&this.controllerService.get(this.controller.id).then(n=>{this.controller=n,this.aiChatService.pinSession(this.controller,this.project().project_id,e).pipe(vi(o=>{this.aiChatStore.updateSession(o)}),rt(this.destroy$)).subscribe({error:o=>{this.logError("Failed to pin session:",o),this.showError("Failed to pin session")}})})}onSessionUnpinned(e){this.controller&&this.controllerService.get(this.controller.id).then(n=>{this.controller=n,this.aiChatService.unpinSession(this.controller,this.project().project_id,e).pipe(vi(o=>{this.aiChatStore.updateSession(o)}),rt(this.destroy$)).subscribe({error:o=>{this.logError("Failed to unpin session:",o),this.showError("Failed to unpin session")}})})}onMessageSent(e){if(!this.controller||this.isStreaming)return;let n={id:this.generateMessageId(),role:"user",content:e,created_at:new Date().toISOString()},o=[...this.currentMessages,n];this.currentMessages=o;let r=this.currentSessionId||this.aiChatService.getCurrentSessionId();r?(this.isStreaming=!0,this.aiChatStore.setStreamingState(!0)):(r=this.generateUUID(),this.isStreaming=!0,this.aiChatStore.setStreamingState(!0),this.aiChatStore.setCurrentSessionId(r)),this.aiChatStore.addMessage(r,n),this.cdr.markForCheck(),this.startChatStream(e,r)}startChatStream(e,n){this.controller&&(this.currentAssistantMessage=null,this.controllerService.get(this.controller.id).then(o=>{this.controller=o,this.aiChatStore.setStreamingState(!0),this.aiChatStore.clearError(),this.aiChatService.streamChat(this.controller,this.project().project_id,{message:e,session_id:n,stream:!0}).pipe(rt(this.destroy$)).subscribe({next:r=>{this.handleChatEvent(r)},error:r=>{this.logError("Chat stream error:",r),this.aiChatStore.setStreamingState(!1),this.showError(r||"Chat error occurred")},complete:()=>{this.aiChatStore.setStreamingState(!1),this.currentToolCalls.clear(),this.currentAssistantMessage=null}})}).catch(o=>{this.logError("Failed to get fresh controller:",o),this.showError("Failed to authenticate")}))}handleChatEvent(e){switch(e.type){case"content":this.handleContentEvent(e);break;case"tool_call":this.handleToolCallEvent(e);break;case"tool_start":this.handleToolStartEvent(e);break;case"tool_end":this.handleToolEndEvent(e);break;case"error":this.showError(e.error||"An error occurred");break;case"done":this.loadSessions();break}}handleContentEvent(e){this.currentAssistantMessage?(this.currentAssistantMessage.content+=e.content||"",this.currentMessages=[...this.currentMessages],this.cdr.markForCheck()):(this.currentAssistantMessage={id:e.message_id||this.generateMessageId(),role:"assistant",content:e.content||"",created_at:new Date().toISOString()},this.currentMessages=[...this.currentMessages,this.currentAssistantMessage],this.cdr.markForCheck())}handleToolCallEvent(e){if(!e.tool_call)return;let n=e.tool_call;this.currentToolCalls.set(n.id,n),this.currentAssistantMessage||(this.currentAssistantMessage={id:e.message_id||this.generateMessageId(),role:"assistant",content:"",created_at:new Date().toISOString(),tool_calls:[]},this.currentMessages=[...this.currentMessages,this.currentAssistantMessage]),this.currentAssistantMessage.tool_calls||(this.currentAssistantMessage.tool_calls=[]);let o=this.currentAssistantMessage.tool_calls.find(r=>r.id===n.id);o?(o.function.arguments=n.function.arguments,o.function.complete=n.function.complete):this.currentAssistantMessage.tool_calls.push(H({},n)),this.aiChatStore.addOrUpdateToolCall(n),this.cdr.markForCheck()}handleToolStartEvent(e){if(e.tool_call_id&&this.currentAssistantMessage?.tool_calls){let n=this.currentAssistantMessage.tool_calls.find(o=>o.id===e.tool_call_id);n&&(n.isExecuting=!0,this.currentMessages=[...this.currentMessages],this.cdr.markForCheck())}}handleToolEndEvent(e){let n=null;if(e.tool_call_id)for(let o=this.currentMessages.length-1;o>=0;o--){let r=this.currentMessages[o];if(r.role==="assistant"&&r.tool_calls&&r.tool_calls.find(c=>c.id===e.tool_call_id)){n=r;break}}if(n||(n=this.currentAssistantMessage),n)n.tool_result||(n.tool_result=[]),n.tool_result.push({toolName:e.tool_name||"",toolOutput:e.tool_output||"",tool_call_id:e.tool_call_id}),this.currentMessages=[...this.currentMessages],this.cdr.markForCheck(),this.currentAssistantMessage=null;else{let o={id:this.generateMessageId(),role:"assistant",content:"",created_at:new Date().toISOString(),tool_result:[{toolName:e.tool_name||"",toolOutput:e.tool_output||"",tool_call_id:e.tool_call_id}]};this.currentMessages=[...this.currentMessages,o]}this.cdr.markForCheck()}get currentSessionTitle(){return this.sessions.find(n=>n.thread_id===this.currentSessionId)?.title||"New chat"}toggleSidebar(){this.sidebarCollapsed=!this.sidebarCollapsed}closeChat(){this.aiChatStore.closePanel(),this.cleanup(),this.closed.emit()}onWindowFocus(){this.windowFocused.emit()}maximizeChat(){if(this.isMaximized){this.restoreChat();return}this.previousStyle=H({},this.style),this.isMaximized=!0,this.isMinimized=!1,this.aiChatStore.maximizePanel(),this.applyMaximizedStyle()}minimizeChat(){if(this.isMinimized){this.restoreChat();return}this.previousStyle=H({},this.style),this.isMaximized=!1,this.aiChatStore.minimizePanel()}restoreChat(){this.aiChatStore.restorePanel()}applyMaximizedStyle(){this.style={position:"fixed",top:"0",right:"0",left:"0",width:"100vw",height:"100vh"}}applyMinimizedStyle(){this.style={position:"fixed",left:"-9999px",top:"-9999px",width:"0px",height:"0px"}}onScrollToEnd(){}onSuggestionClicked(e){this.onMessageSent(e)}showError(e){let n;typeof e=="string"?n=e:e.error?.message?n=e.error.message:e.message?n=e.message:e.statusText?n=e.statusText:n="An unknown error occurred";let o=300,r=n;r.length>o&&(r=r.substring(0,o)+"..."),this.aiChatStore.setError(n);let a=this.parseErrorMessage(r);this.snackBar.open(a,"Close",{duration:6e3,panelClass:["ai-chat-snack-error"],horizontalPosition:"center",verticalPosition:"bottom",politeness:"assertive"})}parseErrorMessage(e){if(!e)return"An unknown error occurred";let n=e.match(/Error code:\s*(\d+)\s*-\s*{.*?['"]message['"]:\s*['"]([^'"]+)['"]/);if(n){let a=n[1],c=n[2];return{401:"Authentication failed. Please check your API key or login again.",403:"Access denied. You don't have permission to perform this action.",404:"Resource not found. The requested resource may have been deleted.",429:"Too many requests. Please wait a moment and try again.",500:"Server error. Please try again later.",503:"Service temporarily unavailable. Please try again later."}[a]||c}if(e.includes("{")&&e.includes("}"))try{let a=JSON.parse(e.replace(/'/g,'"'));if(a.error?.message)return this.parseErrorMessage(a.error.message)}catch{}let o=e.match(/Error code:\s*(\d+)\s*-\s*(.+)/);if(o){let a=o[1],c=o[2];return`Error (${a}): ${c}`}let r={AuthenticationError:"Authentication failed. Please check your credentials.",PermissionDenied:"You don't have permission to access this resource.",ConnectionError:"Failed to connect to the server. Please check your network.",TimeoutError:"Request timed out. Please try again.",ValidationError:"Invalid input. Please check your data and try again."};for(let[a,c]of Object.entries(r))if(e.includes(a))return c;return e}clearError(){this.aiChatStore.clearError()}generateMessageId(){let e=new Uint8Array(4);if(typeof crypto<"u"&&crypto.getRandomValues)crypto.getRandomValues(e);else for(let o=0;o<e.length;o++)e[o]=Math.floor(Math.random()*256);let n=Array.from(e,o=>o.toString(16).padStart(2,"0")).join("");return`msg_${Date.now()}_${n}`}convertLegacyToolMessages(e){let n=[],o=-1;for(let r of e)if(r.role==="tool")if(o>=0){let a=n[o];a.tool_result||(a.tool_result=[]),a.tool_result.push({toolName:r.name||"",toolOutput:r.content||"",tool_call_id:r.tool_call_id})}else{let a={id:this.generateMessageId(),role:"assistant",content:"",created_at:r.created_at,tool_result:[{toolName:r.name||"",toolOutput:r.content||"",tool_call_id:r.tool_call_id}]};n.push(a),o=n.length-1}else n.push(H({},r)),r.role==="assistant"&&(o=n.length-1);return n}generateUUID(){let e=new Uint8Array(16);if(typeof crypto<"u"&&crypto.getRandomValues)crypto.getRandomValues(e);else for(let o=0;o<e.length;o++)e[o]=Math.floor(Math.random()*256);e[6]=e[6]&15|64,e[8]=e[8]&63|128;let n=Array.from(e,o=>o.toString(16).padStart(2,"0")).join("");return[n.substring(0,8),n.substring(8,12),n.substring(12,16),n.substring(16,20),n.substring(20,32)].join("-")}toggleDragging(e){this.isDraggingEnabled=e,e||this.debouncedSavePanelState()}dragWidget(e){this.dragRafId!==null&&cancelAnimationFrame(this.dragRafId),this.dragRafId=requestAnimationFrame(()=>{this.style=this.boundaryService.constrainDragPosition(this.style,e.movementX,e.movementY),this.cdr.markForCheck()})}validate(e){return!(e.rectangle.width&&e.rectangle.height&&(e.rectangle.width<t.MIN_PANEL_WIDTH||e.rectangle.height<t.MIN_PANEL_HEIGHT))}onResizeEnd(e){let n=this.boundaryService.constrainResizeSize(e.rectangle.width||this.resizedWidth,e.rectangle.height||this.resizedHeight,e.rectangle.left,e.rectangle.top),o=this.style.left!==void 0,r={position:"fixed",top:n.top!==void 0?`${n.top}px`:this.style.top};if(o)r.left=n.left!==void 0?`${n.left}px`:this.style.left;else{let a=window.innerWidth-(n.left||0)-n.width;r.right=`${a}px`}this.style=tt(H({},r),{width:`${n.width}px`,height:`${n.height}px`}),this.resizedWidth=n.width,this.resizedHeight=n.height,this.debouncedSavePanelState()}debouncedSavePanelState(){this.saveStateTimer&&clearTimeout(this.saveStateTimer),this.saveStateTimer=setTimeout(()=>{let e=Number(this.style.top?.split("px")[0]),n=Number(this.style.right?.split("px")[0]),o=Number(this.style.width?.split("px")[0]),r=Number(this.style.height?.split("px")[0]);!isNaN(o)&&!isNaN(r)&&this.aiChatStore.updatePanelSize(o,r),!isNaN(e)&&!isNaN(n)&&this.aiChatStore.updatePanelPosition({top:e,right:n})},300)}cleanup(){this.aiChatStore.resetSessionState(),this.saveStateTimer&&(clearTimeout(this.saveStateTimer),this.saveStateTimer=null),this.dragRafId!==null&&(cancelAnimationFrame(this.dragRafId),this.dragRafId=null)}loadModelConfigs(){this.controller&&(this.isLoadingModels=!0,this.cdr.markForCheck(),this.loginService.getLoggedUser(this.controller).then(e=>{if(!e){this.isLoadingModels=!1,this.cdr.markForCheck();return}this.aiProfilesService.getConfigs(this.controller,e.user_id).pipe(rt(this.destroy$)).subscribe({next:n=>{this.modelConfigs=n.configs||[],this.currentModelId=n.default_config?.config_id||null,this.currentCopilotMode=n.default_config?.config?.copilot_mode||"teaching_assistant",this.isLoadingModels=!1,this.cdr.markForCheck()},error:n=>{this.logError("Failed to load model configs:",n),this.modelConfigs=[],this.currentModelId=null,this.isLoadingModels=!1,this.cdr.markForCheck()}})}).catch(e=>{this.logError("Failed to get logged user:",e),this.isLoadingModels=!1,this.cdr.markForCheck()}))}onModelSelected(e){this.controller&&this.loginService.getLoggedUser(this.controller).then(n=>{if(!n){this.showError("Failed to get user information");return}this.aiProfilesService.setDefaultConfig(this.controller,n.user_id,e.config_id).pipe(rt(this.destroy$)).subscribe({next:o=>{this.currentModelId=o.config_id,this.currentCopilotMode=o.config?.copilot_mode||"teaching_assistant",this.cdr.markForCheck();let r=sC(e.config.model);this.snackBar.open(`Switched to ${r}`,"Close",{duration:3e3,horizontalPosition:"center",verticalPosition:"bottom"})},error:o=>{this.logError("Failed to set default model:",o),this.showError("Failed to switch model")}})}).catch(n=>{this.logError("Failed to get logged user:",n),this.showError("Failed to get user information")})}onCopilotModeSelected(e){!this.controller||!this.currentModelId||this.loginService.getLoggedUser(this.controller).then(n=>{if(!n){this.showError("Failed to get user information");return}this.aiProfilesService.updateConfig(this.controller,n.user_id,this.currentModelId,{copilot_mode:e}).pipe(rt(this.destroy$)).subscribe({next:o=>{this.currentCopilotMode=o.config?.copilot_mode||"teaching_assistant",this.cdr.markForCheck();let r=e==="teaching_assistant"?"Teaching Assistant":"Lab Automation";this.snackBar.open(`Switched to ${r} mode`,"Close",{duration:3e3,horizontalPosition:"center",verticalPosition:"bottom"})},error:o=>{this.logError("Failed to update copilot mode:",o),this.showError("Failed to switch copilot mode")}})}).catch(n=>{this.logError("Failed to get logged user:",n),this.showError("Failed to get user information")})}onAbortClicked(){if(!this.controller||!this.isStreaming)return;let e=this.currentSessionId||this.aiChatService.getCurrentSessionId();if(!e){this.logError("No session ID to abort");return}this.controllerService.get(this.controller.id).then(n=>{this.controller=n,this.aiChatService.abortChat(this.controller,this.project().project_id,e).pipe(rt(this.destroy$)).subscribe({next:()=>{this.logError("Chat aborted successfully")},error:o=>{this.logError("Failed to abort chat:",o),this.showError("Failed to abort chat")}})})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-ai-chat"]],hostBindings:function(n,o){n&1&&v("resize",function(){return o.onWindowResize()},br)},inputs:{project:[1,"project"],controller:"controller",zIndex:[1,"zIndex"]},outputs:{closed:"closed",windowFocused:"windowFocused"},features:[un],decls:4,vars:12,consts:[[1,"gns3-ai-chat__drag-overlay"],["mwlResizable","",1,"gns3-ai-chat",3,"mousedown","resizeStart","resizeEnd","ngStyle","validateResize","enableGhostResize"],[1,"gns3-ai-chat__drag-overlay",3,"mousemove","mouseup"],["mwlResizeHandle","",1,"resize-handle","resize-handle-top",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-right",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-bottom",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-left",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-top-left",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-top-right",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-bottom-left",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-bottom-right",3,"resizeEdges"],[1,"gns3-ai-chat__sidebar"],[1,"gns3-ai-chat__sidebar-header"],["title","Click to toggle sidebar",1,"gns3-ai-chat__sidebar-title",3,"mousedown","click"],[1,"gns3-ai-chat__logo"],[1,"sidebar-text"],[1,"gns3-ai-chat__sidebar-content"],[1,"gns3-ai-chat__main"],[1,"gns3-ai-chat__header",3,"mousedown"],[1,"gns3-ai-chat__title"],[1,"gns3-ai-chat__header-actions"],["mat-icon-button","",1,"minimize-button",3,"mousedown","click"],["xmlns","http://www.w3.org/2000/svg","height","20","width","20","viewBox","0 0 24 24",1,"gns3-ai-chat__header-icon"],["d","M19 13H5v-2h14v2z"],["mat-icon-button","",1,"maximize-button",3,"mousedown","click"],["d","M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"],["d","M5 5h14v14H5z"],["mat-icon-button","",1,"close-button",3,"mousedown","click"],["d","M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"],[1,"gns3-ai-chat__messages"],[3,"scrollToEnd","suggestionClicked","messages","isStreaming"],[1,"gns3-ai-chat__input"],[3,"messageSent","modelSelected","copilotModeSelected","abortClicked","disabled","isStreaming","modelConfigs","currentModelId","currentCopilotMode"],["mat-icon-button","",1,"gns3-ai-chat__new-chat-btn",3,"click"],[3,"sessionSelected","sessionCreated","sessionRenamed","sessionDeleted","sessionPinned","sessionUnpinned","sessions","currentSessionId","controller","projectId"]],template:function(n,o){n&1&&(A(0,MEe,1,0,"div",0),s(1,"div",1),v("mousedown",function(){return o.onWindowFocus()})("resizeStart",function(){return o.toggleDragging(!1)})("resizeEnd",function(a){return o.onResizeEnd(a)}),A(2,kEe,8,16),A(3,AEe,28,17),l()),n&2&&(O(o.isDraggingEnabled&&!o.isMaximized&&!o.isMinimized?0:-1),u(),yn("z-index",o.zIndex()),je("gns3-ai-chat--maximized",o.isMaximized)("gns3-ai-chat--minimized",o.isMinimized),x("ngStyle",o.style)("validateResize",o.validate)("enableGhostResize",!0),u(),O(o.isMinimized?-1:2),u(),O(o.isMinimized?-1:3))},dependencies:[Z,pm,im,Wp,Zc,te,se,$,ze,Ok,Nk,Rk],styles:['.gns3-ai-chat[_ngcontent-%COMP%]{position:fixed;background-color:var(--mat-sys-surface-container-low);border-radius:16px;overflow:hidden;display:flex;z-index:1000;color:var(--mat-sys-on-surface);border:1px solid var(--mat-sys-outline-variant);transition:box-shadow .2s ease,border-color .2s ease}.gns3-ai-chat[_ngcontent-%COMP%]:before{content:"";position:absolute;inset:0;border-radius:16px;padding:1px;background:linear-gradient(135deg,color-mix(in srgb,var(--mat-sys-primary) 40%,transparent),color-mix(in srgb,var(--mat-sys-primary) 20%,transparent),color-mix(in srgb,var(--mat-sys-primary) 40%,transparent));-webkit-mask:linear-gradient(var(--mat-sys-white) 0 0) content-box,linear-gradient(var(--mat-sys-white) 0 0);mask:linear-gradient(var(--mat-sys-white) 0 0) content-box,linear-gradient(var(--mat-sys-white) 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.8;transition:opacity .2s ease}.gns3-ai-chat[_ngcontent-%COMP%]:hover:before{opacity:1}.gns3-ai-chat--minimized[_ngcontent-%COMP%]{border-radius:50%;border:none;box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 0 8px var(--mat-sys-primary);backdrop-filter:none}.gns3-ai-chat--minimized[_ngcontent-%COMP%]:before{display:none}.gns3-ai-chat--maximized[_ngcontent-%COMP%]{border-radius:0}.gns3-ai-chat--maximized[_ngcontent-%COMP%] .gns3-ai-chat__sidebar[_ngcontent-%COMP%]{height:100vh}.gns3-ai-chat--maximized[_ngcontent-%COMP%] .gns3-ai-chat__header[_ngcontent-%COMP%], .gns3-ai-chat--maximized[_ngcontent-%COMP%] .gns3-ai-chat__sidebar-header[_ngcontent-%COMP%]{cursor:default}.gns3-ai-chat[_ngcontent-%COMP%]{background-color:var(--mat-sys-surface)}.gns3-ai-chat__drag-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background-color:transparent;z-index:1001;cursor:grabbing}.gns3-ai-chat__sidebar[_ngcontent-%COMP%]{width:280px;background-color:color-mix(in srgb,var(--mat-sys-surface-container) 70%,transparent);display:flex;flex-direction:column;transition:width .2s ease;flex-shrink:0}.gns3-ai-chat__sidebar--collapsed[_ngcontent-%COMP%]{width:60px}.gns3-ai-chat__sidebar-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:16px;cursor:grab;user-select:none;height:56px;box-sizing:border-box}.gns3-ai-chat__sidebar-header[_ngcontent-%COMP%]:active{cursor:grabbing}.gns3-ai-chat__new-chat-btn[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:100%;height:56px;background:transparent;border-radius:0;transition:all .2s ease;margin:8px 0}.gns3-ai-chat__new-chat-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:24px;width:24px;height:24px;color:var(--mat-sys-primary);transition:all .2s ease}.gns3-ai-chat__new-chat-btn[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{transform:scale(1.2);filter:drop-shadow(0 0 6px var(--mat-sys-primary))}.gns3-ai-chat__new-chat-btn[_ngcontent-%COMP%]:active mat-icon[_ngcontent-%COMP%]{transform:scale(.95)}.gns3-ai-chat__sidebar--collapsed[_ngcontent-%COMP%] .gns3-ai-chat__new-chat-btn[_ngcontent-%COMP%]{display:flex}.gns3-ai-chat__sidebar[_ngcontent-%COMP%]:not(--collapsed) .gns3-ai-chat__new-chat-btn[_ngcontent-%COMP%]{display:none}.gns3-ai-chat__sidebar-title[_ngcontent-%COMP%]{margin:0;font-size:14px;font-weight:500;color:var(--mat-sys-on-surface);display:flex;align-items:center;gap:8px;width:100%;justify-content:center}.gns3-ai-chat__sidebar-title--clickable[_ngcontent-%COMP%]{cursor:pointer;transition:all .1s ease}.gns3-ai-chat__sidebar-title--clickable[_ngcontent-%COMP%]:hover{opacity:.9}.gns3-ai-chat__sidebar-title--clickable[_ngcontent-%COMP%]:active{opacity:.8}.gns3-ai-chat__logo[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;font-family:system-ui,-apple-system,sans-serif;letter-spacing:-.5px;background:linear-gradient(135deg,var(--mat-sys-primary),var(--mat-sys-primary));color:var(--mat-sys-on-primary);padding:6px 10px;border-radius:4px;transition:all .2s ease;flex-shrink:0;box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent);position:relative;overflow:hidden}.gns3-ai-chat__logo[_ngcontent-%COMP%]:after{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(45deg,transparent 30%,color-mix(in srgb,var(--mat-sys-surface) 10%,transparent) 50%,transparent 70%);transform:translate(-100%);transition:transform .2s ease}.gns3-ai-chat__sidebar-title--clickable[_ngcontent-%COMP%]:hover .gns3-ai-chat__logo[_ngcontent-%COMP%]{transform:scale(1.08);box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-primary) 40%,transparent)}.gns3-ai-chat__sidebar-title--clickable[_ngcontent-%COMP%]:hover .gns3-ai-chat__logo[_ngcontent-%COMP%]:after{transform:translate(100%)}.gns3-ai-chat__sidebar-title--clickable[_ngcontent-%COMP%]:active .gns3-ai-chat__logo[_ngcontent-%COMP%]{transform:scale(.95)}.gns3-ai-chat__sidebar-content[_ngcontent-%COMP%]{flex:1;overflow:hidden}.gns3-ai-chat__main[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;background-color:color-mix(in srgb,var(--mat-sys-surface) 60%,transparent);min-width:0}.gns3-ai-chat__header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:16px;flex-shrink:0;cursor:grab;user-select:none;transition:background .2s ease;position:relative;height:56px;box-sizing:border-box}.gns3-ai-chat__header[_ngcontent-%COMP%]:active{cursor:grabbing}.gns3-ai-chat__title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:var(--mat-sys-on-surface)}.gns3-ai-chat__messages[_ngcontent-%COMP%]{flex:1;overflow:hidden;min-height:0}.gns3-ai-chat__input[_ngcontent-%COMP%]{border-top:1px solid transparent;flex-shrink:0;position:relative;transition:border-color .2s ease,box-shadow .2s ease}.gns3-ai-chat__input[_ngcontent-%COMP%]:focus-within{border-top-color:var(--mat-sys-primary);box-shadow:0 -2px 10px color-mix(in srgb,var(--mat-sys-primary) 20%,transparent)}.gns3-ai-chat__header-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.gns3-ai-chat__header-actions[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface);transition:all .2s ease;width:40px;height:40px;min-width:40px;min-height:40px;padding:0;display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.gns3-ai-chat__header-actions[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%]:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:var(--mat-sys-primary);transform:translate(-50%,-50%);transition:width .2s ease,height .2s ease}.gns3-ai-chat__header-actions[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 15%,transparent);border-radius:50%;transform:scale(1.15);box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent)}.gns3-ai-chat__header-actions[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%]:hover:before{width:100%;height:100%}.gns3-ai-chat__header-actions[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%]:active{transform:scale(.95)}.gns3-ai-chat__header-actions[_ngcontent-%COMP%] .gns3-ai-chat__header-icon[_ngcontent-%COMP%]{fill:var(--mat-sys-on-surface);transition:all .2s ease;width:24px;height:24px;position:relative;z-index:1}.gns3-ai-chat__header-actions[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%]:hover .gns3-ai-chat__header-icon[_ngcontent-%COMP%]{fill:var(--mat-sys-primary);filter:drop-shadow(0 0 3px var(--mat-sys-primary))}.gns3-ai-chat__header-actions[_ngcontent-%COMP%] .close-button[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-error) 20%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--mat-sys-error) 40%,transparent)}.gns3-ai-chat__header-actions[_ngcontent-%COMP%] .close-button[_ngcontent-%COMP%]:hover .gns3-ai-chat__header-icon[_ngcontent-%COMP%]{fill:var(--mat-sys-error)}.gns3-ai-chat__minimized-bar[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;cursor:pointer;user-select:none;border-radius:50%;background:linear-gradient(135deg,var(--mat-sys-surface),var(--mat-sys-surface));box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 0 10px var(--mat-sys-primary);transition:all .2s ease;position:relative;overflow:hidden}.gns3-ai-chat__minimized-bar[_ngcontent-%COMP%]:hover{transform:scale(1.15);box-shadow:0 8px 24px color-mix(in srgb,var(--mat-sys-surface) 60%,transparent),0 0 15px var(--mat-sys-primary)}.gns3-ai-chat__minimized-bar[_ngcontent-%COMP%]:hover:before{background:radial-gradient(circle,var(--mat-sys-primary) 0%,transparent 70%);opacity:.5}.gns3-ai-chat__minimized-bar[_ngcontent-%COMP%]:active{transform:scale(1.05)}.gns3-ai-chat__minimized-bar[_ngcontent-%COMP%]:before{content:"";position:absolute;top:50%;left:50%;width:100%;height:100%;border-radius:50%;background:radial-gradient(circle,var(--mat-sys-primary) 0%,transparent 70%);opacity:0;transform:translate(-50%,-50%);transition:opacity .2s ease}.gns3-ai-chat__minimized-icon[_ngcontent-%COMP%]{font-size:28px;width:28px;height:28px;color:var(--mat-sys-outline);position:relative;z-index:1}.gns3-ai-chat__snack-error[_ngcontent-%COMP%]{background-color:var(--mat-sys-error);color:var(--mat-sys-on-error);font-weight:500}.gns3-ai-chat__snack-error[_ngcontent-%COMP%] .mat-simple-snackbar-action[_ngcontent-%COMP%]{color:var(--mat-sys-on-error);font-weight:600}@media(max-width:768px){.gns3-ai-chat__sidebar[_ngcontent-%COMP%]{position:absolute;z-index:100;height:100%}.gns3-ai-chat__sidebar--collapsed[_ngcontent-%COMP%]{width:0}}.resize-handle[_ngcontent-%COMP%]{position:absolute;z-index:100;opacity:0;transition:opacity .15s ease}.gns3-ai-chat[_ngcontent-%COMP%]:hover .resize-handle[_ngcontent-%COMP%]{opacity:1}.resize-handle.resize-handle-top[_ngcontent-%COMP%]{top:-4px;left:12px;right:12px;height:12px;cursor:ns-resize;background:transparent}.resize-handle.resize-handle-right[_ngcontent-%COMP%]{top:12px;right:-4px;bottom:12px;width:12px;cursor:ew-resize;background:transparent}.resize-handle.resize-handle-bottom[_ngcontent-%COMP%]{bottom:-4px;left:12px;right:12px;height:12px;cursor:ns-resize;background:transparent}.resize-handle.resize-handle-left[_ngcontent-%COMP%]{top:12px;left:-4px;bottom:12px;width:12px;cursor:ew-resize;background:transparent}.resize-handle.resize-handle-top-left[_ngcontent-%COMP%]{top:-6px;left:-6px;width:20px;height:20px;cursor:nwse-resize;background:transparent}.resize-handle.resize-handle-top-right[_ngcontent-%COMP%]{top:-6px;right:-6px;width:20px;height:20px;cursor:nesw-resize;background:transparent}.resize-handle.resize-handle-bottom-left[_ngcontent-%COMP%]{bottom:-6px;left:-6px;width:20px;height:20px;cursor:nesw-resize;background:transparent}.resize-handle.resize-handle-bottom-right[_ngcontent-%COMP%]{bottom:-6px;right:-6px;width:20px;height:20px;cursor:nwse-resize;background:transparent}'],changeDetection:0})}return t})();var MU=t=>({lightTheme:t}),OEe=(t,i)=>i.node_id;function NEe(t,i){t&1&&(s(0,"span",4),d(1,"Devices"),l())}function REe(t,i){if(t&1){let e=j();s(0,"div",8),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.onDeviceClick(o))}),s(1,"div",9),F(2,"div",10),s(3,"div",11)(4,"div",12),d(5),l()()(),s(6,"mat-icon",13),d(7," terminal "),l()()}if(t&2){let e=i.$implicit,n=b(2);je("started",n.isDeviceStarted(e)),u(2),yn("background-color",n.getStatusColor(e.status)),u(3),U(e.name),u(),je("disabled",!n.isDeviceStarted(e))}}function FEe(t,i){t&1&&(s(0,"div",7)(1,"mat-icon",14),d(2,"devices"),l(),s(3,"div",15),d(4,"No console devices available"),l()())}function LEe(t,i){if(t&1&&(s(0,"div",5),J(1,REe,8,7,"div",6,OEe),A(3,FEe,5,0,"div",7),l()),t&2){let e=b();u(),ee(e.nodes()),u(2),O(e.nodes().length===0?3:-1)}}var Lk=(()=>{class t{nodesDataSource=f(ci);cdr=f(K);deviceSelected=new ve;isLightTheme=oe(!1);nodes=me([]);collapsed=me(!0);destroy$=new Le;constructor(){}ngOnInit(){this.nodesDataSource.changes.pipe(rt(this.destroy$)).subscribe(e=>{let n=e.filter(o=>{let r=o.console_type==="none"||!o.console_type,a=o.console_type==="vnc",c=o.console_type&&o.console_type.startsWith("http");return!r&&!a&&!c});this.nodes.set(n),this.sortNodes(),this.cdr.markForCheck()}),this.nodesDataSource.itemChanged.pipe(rt(this.destroy$)).subscribe(e=>{let n=this.nodes(),o=n.findIndex(r=>r.node_id===e.node_id);o>=0&&(n[o]=e,this.nodes.set([...n]),this.sortNodes(),this.cdr.markForCheck())})}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}isDeviceStarted(e){return e.status==="started"}sortNodes(){let e=this.nodes();e.sort((n,o)=>{let r=n.status==="started",a=o.status==="started";return r&&!a?-1:!r&&a?1:n.name.localeCompare(o.name)}),this.nodes.set([...e])}getStatusColor(e){return{started:"var(--mat-sys-primary)",starting:"var(--mat-sys-tertiary)",stopped:"var(--mat-sys-outline)",suspended:"var(--mat-sys-secondary)",errored:"var(--mat-sys-error)"}[e]||"var(--mat-sys-outline)"}onDeviceClick(e){this.deviceSelected.emit(e)}togglePanel(){this.collapsed.set(!this.collapsed()),this.cdr.markForCheck()}getStatusLabel(e){return{started:"Running",starting:"Starting",stopped:"Stopped",suspended:"Suspended",errored:"Error"}[e]||"Unknown"}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-console-devices-panel"]],inputs:{isLightTheme:[1,"isLightTheme"]},outputs:{deviceSelected:"deviceSelected"},decls:7,vars:12,consts:[[1,"console-devices-panel",3,"ngClass"],["title","Click to toggle panel",1,"panel-header",3,"mousedown","click","ngClass"],[1,"header-title"],[1,"panel-icon"],[1,"header-text"],[1,"device-list"],[1,"device-item",3,"started"],[1,"empty-state"],[1,"device-item",3,"click"],[1,"device-info"],[1,"device-status-indicator"],[1,"device-details"],[1,"device-name"],[1,"device-icon"],[1,"empty-icon"],[1,"empty-text"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1),v("mousedown",function(a){return a.stopPropagation()})("click",function(){return o.togglePanel()}),s(2,"div",2)(3,"mat-icon",3),d(4,"devices"),l(),A(5,NEe,2,0,"span",4),l()(),A(6,LEe,4,1,"div",5),l()),n&2&&(je("collapsed",o.collapsed()),x("ngClass",ln(8,MU,o.isLightTheme())),u(),je("clickable",!0),x("ngClass",ln(10,MU,o.isLightTheme())),u(4),O(o.collapsed()?-1:5),u(),O(o.collapsed()?-1:6))},dependencies:[Z,Zi,te,se],styles:[".console-devices-panel[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:200px;height:100%;background-color:var(--mat-sys-surface);border-right:1px solid var(--mat-sys-outline-variant);transition:width .1s ease}.console-devices-panel.collapsed[_ngcontent-%COMP%]{width:48px}.panel-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;height:48px;padding:0 12px;border-bottom:1px solid var(--mat-sys-outline-variant);background-color:var(--mat-sys-surface-container-low);flex-shrink:0}.panel-header.clickable[_ngcontent-%COMP%]{cursor:pointer;transition:all .1s ease}.panel-header[_ngcontent-%COMP%]:hover.clickable{background-color:var(--mat-sys-surface-container)}.panel-header[_ngcontent-%COMP%]:active.clickable{background-color:var(--mat-sys-surface-container-high)}.header-title[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:4px;margin:0;font-size:12px;font-weight:500;color:var(--mat-sys-on-surface)}.panel-icon[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px;color:var(--mat-sys-primary)}.header-text[_ngcontent-%COMP%]{font-size:12px;font-weight:500;white-space:nowrap}.device-list[_ngcontent-%COMP%]{flex:1;overflow-y:auto;padding:4px}.device-item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:8px;margin-bottom:4px;border-radius:4px;cursor:pointer;transition:background-color .1s ease;background:var(--mat-sys-surface-container-low)}.device-item[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container)}.device-item.started[_ngcontent-%COMP%]{border-left:3px solid var(--mat-sys-primary)}.device-info[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;flex:1;min-width:0}.device-status-indicator[_ngcontent-%COMP%]{width:4px;height:4px;border-radius:50%;flex-shrink:0}.device-details[_ngcontent-%COMP%]{flex:1;min-width:0}.device-name[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--mat-sys-on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-status[_ngcontent-%COMP%]{font-size:12px;margin-top:2px;opacity:.8}.device-icon[_ngcontent-%COMP%]{font-size:12px;width:12px;height:12px;color:var(--mat-sys-primary);flex-shrink:0;opacity:.8}.device-icon.disabled[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);opacity:.4}.empty-state[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 8px;text-align:center}.empty-icon[_ngcontent-%COMP%]{font-size:24px;width:24px;height:24px;color:var(--mat-sys-on-surface-variant);opacity:.4;margin-bottom:8px}.empty-text[_ngcontent-%COMP%]{font-size:12px;color:var(--mat-sys-on-surface-variant);opacity:.8}@media(max-width:768px){.console-devices-panel[_ngcontent-%COMP%]{position:absolute;height:100%}.console-devices-panel.collapsed[_ngcontent-%COMP%]{width:0}}"],changeDetection:0})}return t})();var TU=nl(YN()),EU=nl(ZN()),DU=nl(e5());var jk=(()=>{class t{toaster=f(fe);currentMenu=null;attachContextMenu(e,n){let o=r=>{r.preventDefault(),this.showContextMenu(r,e)};return n.addEventListener("contextmenu",o),()=>{n.removeEventListener("contextmenu",o)}}showContextMenu(e,n){this.dismissCurrentMenu();let o=!1;try{if(typeof n.hasSelection=="function")o=n.hasSelection();else{let m=n.getSelection();o=m!=null&&m.trim().length>0}}catch(m){console.error("Error checking selection:",m);let p=n.getSelection();o=p!=null&&p.trim().length>0}let r=document.createElement("div");r.className="xterm-context-menu",this.currentMenu=r;let{left:a,top:c}=this.calculateMenuPosition(e);r.style.left=`${a}px`,r.style.top=`${c}px`,this.createMenuItems(r,n,o),document.body.appendChild(r),this.setupMenuCleanup(r,n)}dismissCurrentMenu(){this.currentMenu&&this.currentMenu.parentNode&&this.currentMenu.remove(),this.currentMenu=null}calculateMenuPosition(e){let n=e.clientX,o=e.clientY,r=180,a=120;return n+r>window.innerWidth&&(n=window.innerWidth-r-10),o+a>window.innerHeight&&(o=window.innerHeight-a-10),n=Math.max(10,n),o=Math.max(10,o),{left:n,top:o}}createMenuItems(e,n,o){if(o){let m=this.createMenuItem("Copy","Ctrl+Shift+C",()=>{try{let p=n.getSelection();p&&navigator.clipboard.writeText(p).then(()=>{this.toaster.success("Copied to clipboard"),n.clearSelection()}).catch(h=>{console.error("Failed to copy:",h),h.name==="NotAllowedError"?this.toaster.error("Clipboard permission denied. Please allow clipboard access."):this.toaster.error("Failed to copy. Please try again.")})}catch(p){console.error("Error copying:",p),this.toaster.error("Failed to copy. Please try again.")}});e.appendChild(m)}let r=this.createMenuItem("Paste","Ctrl+Shift+V",()=>{try{navigator.clipboard.readText().then(m=>{m?n.paste(m):this.toaster.warning("Nothing to paste. Clipboard is empty.")}).catch(m=>{console.error("Failed to paste:",m),m.name==="NotAllowedError"?this.toaster.error("Clipboard permission denied. Please allow clipboard access."):this.toaster.error("Failed to paste. Please try again.")})}catch(m){console.error("Error pasting:",m),this.toaster.error("Failed to paste. Please try again.")}});e.appendChild(r);let a=document.createElement("div");a.className="xterm-context-menu-separator",e.appendChild(a);let c=this.createMenuItem("Select All","",()=>{try{n.selectAll()}catch(m){console.error("Error selecting all:",m)}});if(e.appendChild(c),o){let m=this.createMenuItem("Clear Selection","",()=>{try{n.clearSelection()}catch(p){console.error("Error clearing selection:",p)}});e.appendChild(m)}}createMenuItem(e,n,o){let r=document.createElement("div");return r.className="xterm-context-menu-item",r.textContent=e,r.setAttribute("role","menuitem"),r.setAttribute("tabindex","0"),n&&r.setAttribute("data-shortcut",n),r.addEventListener("click",()=>{o(),this.dismissCurrentMenu()}),r.addEventListener("keydown",a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),r.click())}),r}setupMenuCleanup(e,n){let o=!1,r=()=>{o||(o=!0,this.currentMenu===e&&(this.currentMenu=null),e.remove(),document.removeEventListener("click",a),document.removeEventListener("keydown",c),n.focus())},a=p=>{e.contains(p.target)||r()},c=p=>{p.key==="Escape"&&(p.preventDefault(),r())},m=new MutationObserver(p=>{for(let h of p)if(h.type==="childList"&&h.removedNodes.length>0){let g=Array.from(h.removedNodes);for(let M of g)if(M===e){document.removeEventListener("click",a),document.removeEventListener("keydown",c),m.disconnect();return}}});m.observe(document.body,{childList:!0,subtree:!1}),setTimeout(()=>{o||(document.addEventListener("click",a),document.addEventListener("keydown",c))},0)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var $k=(()=>{class t{themeService;constructor(e){this.themeService=e}getCssVar(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}buildTerminalTheme(e){let n={background:this.getCssVar("--mat-sys-surface"),foreground:this.getCssVar("--mat-sys-on-surface"),cursor:this.getCssVar("--mat-sys-on-surface"),cursorAccent:this.getCssVar("--mat-sys-surface"),selectionBackground:this.getCssVar("--mat-sys-primary"),selectionForeground:this.getCssVar("--mat-sys-on-primary"),black:this.getCssVar("--mat-sys-on-surface"),red:this.getCssVar("--mat-sys-error"),green:this.getCssVar("--mat-sys-primary"),yellow:this.getCssVar("--mat-sys-tertiary"),blue:this.getCssVar("--mat-sys-primary"),magenta:this.getCssVar("--mat-sys-error"),cyan:this.getCssVar("--mat-sys-primary"),brightBlack:this.getCssVar("--mat-sys-outline"),brightRed:this.getCssVar("--mat-sys-error"),brightGreen:this.getCssVar("--mat-sys-primary"),brightYellow:this.getCssVar("--mat-sys-tertiary"),brightBlue:this.getCssVar("--mat-sys-primary"),brightMagenta:this.getCssVar("--mat-sys-error"),brightCyan:this.getCssVar("--mat-sys-primary")};return e?(n.white=this.getCssVar("--mat-sys-surface-variant"),n.brightWhite=this.getCssVar("--mat-sys-surface")):(n.white=this.getCssVar("--mat-sys-on-surface"),n.brightWhite=this.getCssVar("--mat-sys-surface")),n}updateTerminalTheme(e,n){let o=this.themeService.getActualTheme()==="light";e.options.theme=this.buildTerminalTheme(o),n?.markForCheck()}getDefaultTerminalOptions(){return{cursorBlink:!0,cursorStyle:"block",fontSize:15,fontFamily:"courier-new, courier, monospace",rightClickSelectsWord:!0,altClickMovesCursor:!0,scrollback:1e3}}initTerminal(e,n){e.loadAddon(n),n.activate(e)}calculateTerminalDimensions(e,n,o){let r=e._core;if(r){let m=r._charMeasure;if(m&&m.width&&m.height){let p=Math.floor(n/m.width),h=Math.floor(o/m.height);return{cols:p,rows:h}}}return{cols:Math.floor(n/9),rows:Math.floor(o/17)}}static \u0275fac=function(n){return new(n||t)(ge(yi))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var BEe=["terminal"],v_=(()=>{class t{controller=oe(void 0);project=oe(void 0);node=oe(void 0);consoleService=f(gr);themeService=f(yi);cdr=f(K);contextMenuService=f(jk);xtermService=f($k);term=new TU.Terminal(H({cols:100,rows:32},this.xtermService.getDefaultTerminalOptions()));fitAddon=new DU.FitAddon;socket=null;isLightThemeEnabled=!1;resizeObserver=null;contextMenuCleanup=null;destroy$=new Le;isDestroying=!1;terminal=Ut("terminal");constructor(){}ngOnInit(){this.isLightThemeEnabled=this.themeService.getActualTheme()==="light",this.cdr.markForCheck(),this.themeService.themeChanged.pipe(rt(this.destroy$)).subscribe(()=>{this.xtermService.updateTerminalTheme(this.term,this.cdr),this.isLightThemeEnabled=this.themeService.getActualTheme()==="light"}),this.consoleService.consoleResized.pipe(rt(this.destroy$)).subscribe(()=>{setTimeout(()=>{this.fitTerminal()},50)}),this.consoleService.getNumberOfColumns()&&this.consoleService.getNumberOfRows()&&this.term.resize(this.consoleService.getNumberOfColumns(),this.consoleService.getNumberOfRows())}ngAfterViewInit(){let e=this.terminal();this.term.open(e.nativeElement),this.xtermService.updateTerminalTheme(this.term,this.cdr),this.socket=new WebSocket(this.consoleService.getUrl(this.controller(),this.node())),this.socket.onerror=()=>{console.error("[WebConsole] Socket connection error"),this.term.write(`\r
|
||
\x1B[31mConnection lost. Please check if the node is still running.\x1B[0m\r
|
||
`)},this.socket.onclose=()=>{if(!this.isDestroying){console.log("[WebConsole] Socket closed unexpectedly"),this.term.write(`\r
|
||
\x1B[33mConnection closed.\x1B[0m\r
|
||
`);let o=this.node();o&&this.consoleService.closeConsoleForNode(o)}};let n=new EU.AttachAddon(this.socket);this.term.loadAddon(n),this.xtermService.initTerminal(this.term,this.fitAddon),this.fitAddon.fit(),this.term.focus(),this.term.attachCustomKeyEventHandler(o=>{if(o.altKey&&o.key>="1"&&o.key<="9"){let r=new CustomEvent("consoleTabShortcut",{detail:{key:o.key},bubbles:!0});return this.term.element.dispatchEvent(r),!1}return!((o.code==="KeyC"||o.code==="KeyV")&&o.ctrlKey&&o.shiftKey)}),this.setupResizeObserver(),this.contextMenuCleanup=this.contextMenuService.attachContextMenu(this.term,e.nativeElement)}setupResizeObserver(){let e=this.terminal();e?.nativeElement&&(this.resizeObserver=new ResizeObserver(n=>{for(let o of n){let{width:r,height:a}=o.contentRect;r===0||a===0||requestAnimationFrame(()=>{try{this.fitTerminal()}catch{}})}}),this.resizeObserver.observe(e.nativeElement))}fitTerminal(){this.fitAddon.fit();let e=this.term.cols,n=this.term.rows;this.consoleService.setNumberOfColumns(e),this.consoleService.setNumberOfRows(n),this.term.resize(e,n)}focusTerminal(){this.term&&this.term.focus()}ngOnDestroy(){this.isDestroying=!0,this.destroy$.next(),this.destroy$.complete(),this.socket&&(this.socket.close(),this.socket=null),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),this.contextMenuCleanup&&(this.contextMenuCleanup(),this.contextMenuCleanup=null),this.term.dispose()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-web-console"]],viewQuery:function(n,o){n&1&&tn(o.terminal,BEe,5),n&2&&nn()},inputs:{controller:[1,"controller"],project:[1,"project"],node:[1,"node"]},decls:2,vars:0,consts:[["terminal",""],[1,"terminal"]],template:function(n,o){n&1&&jr(0,"div",1,0)},dependencies:[Z],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;flex:1;min-height:0;width:100%;height:100%}.lightTheme[_nghost-%COMP%]{background:var(--mat-sys-surface);color:var(--mat-sys-on-surface)}.terminal[_ngcontent-%COMP%]{width:100%;height:100%}"],changeDetection:0})}return t})();var b_="3.1.0.dev1";var Hk=(()=>{class t extends ym{getItemKey(e){return e}static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var PU=nl($N());var VEe=["console"],zEe=["commandInput"],Uk=t=>({lightTheme:t});function jEe(t,i){if(t&1&&(s(0,"span",9),d(1),F(2,"br"),l()),t&2){let e=i.$implicit;u(),X(" ",e.message," ")}}var C_=(()=>{class t{projectWebServiceHandler=f(Xg);nodeService=f(wt);nodesDataSource=f(ci);protocolHandlerService=f(Gp);logEventsDataSource=f(Hk);httpService=f(an);themeService=f(yi);cd=f(K);nodeConsoleService=f(gr);controller;project=oe(void 0);console=Ut("console");commandInput=Ut("commandInput");focusInput(){let e=this.commandInput();e?.nativeElement&&e.nativeElement.focus()}version=b_;nodeSubscription;linkSubscription;drawingSubscription;controllerRequestsSubscription;errorSubscription;warningSubscription;infoSubscription;command=ae("");filters=["all","errors","warnings","info","map updates","controller requests"];selectedFilter="all";filteredEvents=[];regexStart=/^start (.*?)$/;regexStop=/^stop (.*?)$/;regexSuspend=/^suspend (.*?)$/;regexReload=/^reload (.*?)$/;regexShow=/^show (.*?)$/;regexConsole=/^console (.*?)$/;style={};isDraggingEnabled=!1;isLightThemeEnabled=!1;selected=new re(0);constructor(){}ngOnInit(){this.nodeConsoleService.consoleResized.subscribe(e=>{this.style={width:`${e.width}px`,height:`${e.height-70}px`},this.cd.detectChanges()}),this.themeService.getActualTheme()==="light"?this.isLightThemeEnabled=!0:this.isLightThemeEnabled=!1,this.style={width:"848px",height:"477px"},this.nodeSubscription=this.projectWebServiceHandler.nodeNotificationEmitter.subscribe(e=>{let n=e.event,o="";n.label?o=`Event received: ${e.action} - ${this.printNode(n)}.`:o=`Event received: ${e.action} - ${n.name}.`,this.showMessage({type:"map update",message:o})}),this.linkSubscription=this.projectWebServiceHandler.linkNotificationEmitter.subscribe(e=>{let n=e.event,o=`Event received: ${e.action} - ${this.printLink(n)}.`;this.showMessage({type:"map update",message:o})}),this.drawingSubscription=this.projectWebServiceHandler.drawingNotificationEmitter.subscribe(e=>{let n=e.event,o=`Event received: ${e.action} - ${this.printDrawing(n)}.`;this.showMessage({type:"map update",message:o})}),this.controllerRequestsSubscription=this.httpService.requestsNotificationEmitter.subscribe(e=>{this.showMessage({type:"controller request",message:e})}),this.errorSubscription=this.projectWebServiceHandler.errorNotificationEmitter.subscribe(e=>{this.showMessage({type:"error",message:e})}),this.warningSubscription=this.projectWebServiceHandler.warningNotificationEmitter.subscribe(e=>{this.showMessage({type:"warning",message:e})}),this.infoSubscription=this.projectWebServiceHandler.infoNotificationEmitter.subscribe(e=>{this.showMessage({type:"info",message:e})})}ngAfterViewInit(){let e=this.console();e.nativeElement&&(e.nativeElement.scrollTop=e.nativeElement.scrollHeight)}ngOnDestroy(){this.nodeSubscription.unsubscribe(),this.linkSubscription.unsubscribe(),this.drawingSubscription.unsubscribe(),this.controllerRequestsSubscription.unsubscribe(),this.errorSubscription.unsubscribe(),this.warningSubscription.unsubscribe(),this.infoSubscription.unsubscribe()}applyFilter(e){this.selectedFilter=e,this.filteredEvents=this.getFilteredEvents(),this.cd.detectChanges()}onKeyDown(e){e.key==="Enter"&&this.handleCommand()}handleCommand(){if(this.command()==="help"||this.command()==="")this.showCommand("Available commands: help, version, console {node name}, start all, start {node name}, stop all, stop {node name}, suspend all, suspend {node name}, reload all, reload {node name}, show {node name}.");else if(this.command()==="version")this.showCommand("Current version: "+this.version);else if(this.command()==="start all")this.showCommand("Starting all nodes..."),this.nodeService.startAll(this.controller,this.project()).subscribe(()=>{this.showCommand("All nodes started.")});else if(this.command()==="stop all")this.showCommand("Stopping all nodes..."),this.nodeService.stopAll(this.controller,this.project()).subscribe(()=>{this.showCommand("All nodes stopped.")});else if(this.command()==="suspend all")this.showCommand("Suspending all nodes..."),this.nodeService.suspendAll(this.controller,this.project()).subscribe(()=>{this.showCommand("All nodes suspended.")});else if(this.command()==="reload all")this.showCommand("Reloading all nodes..."),this.nodeService.reloadAll(this.controller,this.project()).subscribe(()=>{this.showCommand("All nodes reloaded.")});else if(this.regexStart.test(this.command())||this.regexStop.test(this.command())||this.regexSuspend.test(this.command())||this.regexReload.test(this.command())||this.regexShow.test(this.command())||this.regexConsole.test(this.command())){let n=this.command().split(/[ ,]+/),o=this.nodesDataSource.getItems().find(r=>r.name.valueOf()===n[1].valueOf());if(o)if(this.regexStart.test(this.command()))this.showCommand(`Starting node ${n[1]}...`),this.nodeService.start(this.controller,o).subscribe(()=>this.showCommand(`Node ${o.name} started.`));else if(this.regexStop.test(this.command()))this.showCommand(`Stopping node ${n[1]}...`),this.nodeService.stop(this.controller,o).subscribe(()=>this.showCommand(`Node ${o.name} stopped.`));else if(this.regexSuspend.test(this.command()))this.showCommand(`Suspending node ${n[1]}...`),this.nodeService.suspend(this.controller,o).subscribe(()=>this.showCommand(`Node ${o.name} suspended.`));else if(this.regexReload.test(this.command()))this.showCommand(`Reloading node ${n[1]}...`),this.nodeService.reload(this.controller,o).subscribe(()=>this.showCommand(`Node ${o.name} reloaded.`));else if(this.regexConsole.test(this.command()))if(o.status==="started"){this.showCommand(`Launching console for node ${n[1]}...`);var e=o.console_host;PU.IPv6.isValid(e)&&(e=`[${e}]`),o.console_type==="telnet"?this.protocolHandlerService.open(`gns3+telnet://${e}:${o.console}?name=${o.name}&project_id=${o.project_id}&node_id=${o.node_id}`):o.console_type==="vnc"?this.protocolHandlerService.open(`gns3+vnc://${e}:${o.console}?name=${o.name}&project_id=${o.project_id}&node_id=${o.node_id}`):o.console_type&&o.console_type.startsWith("spice")?this.protocolHandlerService.open(`gns3+spice://${e}:${o.console}?name=${o.name}&project_id=${o.project_id}&node_id=${o.node_id}`):o.console_type&&o.console_type.startsWith("http")?window.open(`${o.console_type}://${e}:${o.console}`):this.showCommand("Supported console types are: telnet, vnc, spice and spice+agent")}else this.showCommand("This node must be started before a console can be opened.");else this.regexShow.test(this.command())&&(this.showCommand(`Information about node ${o.name}:`),this.showCommand(this.printNode(o)));else this.showCommand(`Node with ${n[1]} name was not found.`)}else this.showCommand(`Unknown syntax: ${this.command()}`);this.command.set(""),this.cd.detectChanges()}clearConsole(){this.filteredEvents=[],this.console().nativeElement.scrollTop=this.console().nativeElement.scrollHeight}showCommand(e){this.showMessage({type:"command",message:e})}showMessage(e){this.logEventsDataSource.add(e),this.filteredEvents=this.getFilteredEvents(),this.console().nativeElement.scrollTop=this.console().nativeElement.scrollHeight,setTimeout(()=>{this.console().nativeElement.scrollTop=this.console().nativeElement.scrollHeight},100),this.cd.detectChanges()}getFilteredEvents(){return this.selectedFilter==="controller requests"?this.logEventsDataSource.getItems().filter(e=>e.type==="controller request"):this.selectedFilter==="errors"?this.logEventsDataSource.getItems().filter(e=>e.type==="error"):this.selectedFilter==="warnings"?this.logEventsDataSource.getItems().filter(e=>e.type==="warning"):this.selectedFilter==="info"?this.logEventsDataSource.getItems().filter(e=>e.type==="info"):this.selectedFilter==="map updates"?this.logEventsDataSource.getItems().filter(e=>e.type==="map update"||e.type==="command"):this.logEventsDataSource.getItems()}printNode(e){return`command_line: ${e.command_line},
|
||
compute_id: ${e.compute_id},
|
||
console: ${e.console},
|
||
console_host: ${e.console_host},
|
||
console_type: ${e.console_type},
|
||
first_port_name: ${e.first_port_name},
|
||
height: ${e.height},
|
||
label: ${e.label.text},
|
||
name: ${e.name},
|
||
node_directory: ${e.node_directory},
|
||
node_id: ${e.node_id},
|
||
node_type: ${e.node_type},
|
||
port_name_format: ${e.port_name_format},
|
||
port_segment_size: ${e.port_segment_size}, `+this.printPorts(e.ports)+`project_id: ${e.project_id},
|
||
status: ${e.status},
|
||
symbol: ${e.symbol},
|
||
symbol_url: ${e.symbol_url},
|
||
width: ${e.width},
|
||
x: ${e.x},
|
||
y: ${e.y},
|
||
z: ${e.z}`}printPorts(e){let n="ports: ";return e.forEach(o=>{n=n+`adapter_number: ${o.adapter_number},
|
||
link_type: ${o.link_type},
|
||
name: ${o.name},
|
||
port_number: ${o.port_number},
|
||
short_name: ${o.short_name}, `}),n}printLink(e){return`capture_file_name: ${e.capture_file_name},
|
||
capture_file_path: ${e.capture_file_path},
|
||
capturing: ${e.capturing},
|
||
link_id: ${e.link_id},
|
||
link_type: ${e.link_type},
|
||
project_id: ${e.project_id},
|
||
suspend: ${e.suspend}, `}printDrawing(e){return`drawing_id: ${e.drawing_id},
|
||
project_id: ${e.project_id},
|
||
rotation: ${e.rotation},
|
||
x: ${e.x},
|
||
y: ${e.y},
|
||
z: ${e.z}`}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-log-console"]],viewQuery:function(n,o){n&1&&tn(o.console,VEe,5)(o.commandInput,zEe,5),n&2&&nn(2)},inputs:{controller:"controller",project:[1,"project"],command:[1,"command"]},outputs:{command:"commandChange"},decls:27,vars:15,consts:[["filterMenu","matMenu"],["console",""],["commandInput",""],[1,"consoleHeader"],[1,"consoleFiltering"],[1,"filterButton",3,"ngClass","matMenuTriggerFor"],["xPosition","after"],["mat-menu-item","",3,"click"],[1,"console",3,"ngClass","ngStyle"],[1,"console-item"],[1,"consoleInput",3,"ngClass"],[1,"inputIcon"],["autofocus","","type","text",1,"commandLine",3,"keydown","input","ngClass","value"]],template:function(n,o){if(n&1&&(s(0,"div",3)(1,"div",4)(2,"button",5),d(3," Apply filter "),l(),s(4,"mat-menu",6,0)(6,"button",7),v("click",function(){return o.applyFilter("all")}),d(7,"all"),l(),s(8,"button",7),v("click",function(){return o.applyFilter("errors")}),d(9,"errors"),l(),s(10,"button",7),v("click",function(){return o.applyFilter("warnings")}),d(11,"warnings"),l(),s(12,"button",7),v("click",function(){return o.applyFilter("info")}),d(13,"info"),l(),s(14,"button",7),v("click",function(){return o.applyFilter("map updates")}),d(15,"map updates"),l(),s(16,"button",7),v("click",function(){return o.applyFilter("controller requests")}),d(17,"controller requests"),l()()()(),s(18,"div",8,1),J(20,jEe,3,1,"span",9,Fe),l(),s(22,"div",10)(23,"mat-icon",11),d(24,"keyboard_arrow_right"),l(),s(25,"input",12,2),v("keydown",function(a){return o.onKeyDown(a)})("input",function(a){return o.command.set(a.target.value)}),l()()),n&2){let r=Re(5);u(2),x("ngClass",ln(7,Uk,o.isLightThemeEnabled))("matMenuTriggerFor",r),u(16),x("ngClass",ln(9,Uk,o.isLightThemeEnabled))("ngStyle",o.style),u(2),ee(o.filteredEvents),u(2),x("ngClass",ln(11,Uk,o.isLightThemeEnabled)),u(3),x("ngClass",ln(13,Uk,o.isLightThemeEnabled))("value",o.command())}},dependencies:[Z,Zi,pm,te,se,$,Qe,Fn,ot,kn],styles:[".consoleWrapper[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%;height:100%;background:var(--mat-sys-surface);color:var(--mat-sys-on-surface);overflow:hidden;font-size:12px}.filterButton[_ngcontent-%COMP%]{background:transparent;color:var(--mat-sys-on-surface-variant);border:none;margin-top:0;outline:none;font-weight:700;padding:0}.consoleFiltering[_ngcontent-%COMP%]{display:flex}.consoleHeader[_ngcontent-%COMP%]{width:100%;height:32px;font-size:12px;overflow:hidden;display:flex;padding:4px 8px;justify-content:space-between;background:var(--mat-sys-surface);flex-shrink:0}.console[_ngcontent-%COMP%]{flex:1;overflow-y:auto;padding:8px;color:var(--mat-sys-on-surface);font-family:Menlo,Monaco,Courier New,monospace;font-size:12px;line-height:1.4;scrollbar-color:var(--mat-sys-on-surface-variant) var(--mat-sys-surface);scrollbar-width:thin;background:var(--mat-sys-surface)}.consoleInput[_ngcontent-%COMP%]{width:100%;height:32px;padding:4px 8px;display:flex;background:var(--mat-sys-surface);flex-shrink:0}.commandLine[_ngcontent-%COMP%]{background-color:transparent;color:var(--mat-sys-on-surface);border:none;font-family:Menlo,Monaco,Courier New,monospace;font-size:12px}.inputIcon[_ngcontent-%COMP%]{margin-top:2px}mat-icon[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px}input[_ngcontent-%COMP%]:focus{outline:none}.closeButton[_ngcontent-%COMP%]{cursor:pointer}"],changeDetection:0})}return t})();var $Ee=["consoleWrapper"],HEe=(t,i,e,n)=>({lightTheme:t,"console-active":i,"is-minimized":e,"is-dragging":n}),UEe=t=>({lightThemeConsoleHeader:t}),GEe=()=>({top:!0}),WEe=()=>({right:!0}),qEe=()=>({bottom:!0}),XEe=()=>({left:!0}),QEe=()=>({top:!0,left:!0}),YEe=()=>({top:!0,right:!0}),KEe=()=>({bottom:!0,left:!0}),ZEe=()=>({bottom:!0,right:!0});function JEe(t,i){t&1&&F(0,"div",15)(1,"div",16)(2,"div",17)(3,"div",18)(4,"div",19)(5,"div",20)(6,"div",21)(7,"div",22),t&2&&(x("resizeEdges",Jt(8,GEe)),u(),x("resizeEdges",Jt(9,WEe)),u(),x("resizeEdges",Jt(10,qEe)),u(),x("resizeEdges",Jt(11,XEe)),u(),x("resizeEdges",Jt(12,QEe)),u(),x("resizeEdges",Jt(13,YEe)),u(),x("resizeEdges",Jt(14,KEe)),u(),x("resizeEdges",Jt(15,ZEe)))}function eDe(t,i){if(t&1){let e=j();s(0,"span",23),d(1),l(),s(2,"button",12),v("mousedown",function(o){return o.stopPropagation()})("click",function(){D(e);let o=b().$index,r=b();return P(r.removeTab(o))}),s(3,"mat-icon"),d(4,"close"),l()()}if(t&2){let e=b().$implicit;u(),U(e.name)}}function tDe(t,i){if(t&1&&(s(0,"mat-tab",7),Ae(1,eDe,5,1,"ng-template",8),l()),t&2){let e=b();x("label",e.tab)}}function nDe(t,i){t&1&&(s(0,"span",23),d(1,"GNS3 console"),l())}function iDe(t,i){if(t&1){let e=j();s(0,"button",24),v("mousedown",function(o){return o.stopPropagation()})("click",function(){D(e);let o=b();return P(o.toggleMaximize())}),s(1,"mat-icon"),d(2,"fullscreen"),l()()}}function oDe(t,i){if(t&1){let e=j();s(0,"button",25),v("mousedown",function(o){return o.stopPropagation()})("click",function(){D(e);let o=b();return P(o.toggleMaximize())}),s(1,"mat-icon"),d(2,"fullscreen_exit"),l()()}}function rDe(t,i){if(t&1&&F(0,"app-web-console",14),t&2){let e=i.$index,n=b();x("hidden",n.selected.value!==e)("controller",n.controller())("node",n.nodes[e])}}var Gk=(()=>{class t{CONSOLE_HEADER_HEIGHT=53;DEFAULT_WIDTH=848;DEFAULT_HEIGHT=600;DEFAULT_LEFT="80px";DEFAULT_BOTTOM="100px";destroy$=new Le;themeSubscription=null;controller=oe(void 0);project=oe(void 0);zIndex=oe(1e3);closeConsole=new ve;deviceSelected=new ve;consoleDeactivated=new ve;windowFocused=new ve;windowMinimized=new ve;filters=["all","errors","warnings","info","map updates","controller requests"];selectedFilter="all";style={};styleInside={height:"120px"};isDraggingSignal=me(!1);isMinimizedSignal=me(!1);isMaximizedSignal=me(!1);isConsoleActiveSignal=me(!1);isLightThemeEnabledSignal=me(!1);isDragging=this.isDraggingSignal.asReadonly();isMinimized=this.isMinimizedSignal.asReadonly();isMaximized=this.isMaximizedSignal.asReadonly();isConsoleActive=this.isConsoleActiveSignal.asReadonly();isLightThemeEnabled=this.isLightThemeEnabledSignal.asReadonly();resizedWidth=this.DEFAULT_WIDTH;resizedHeight=this.DEFAULT_HEIGHT;consoleService=f(gr);themeService=f(yi);mapSettingsService=f(To);boundaryService=f(qp);windowManagement=f($p);cdr=f(K);renderer=f(ii);dragStartX=0;dragStartY=0;dragStartLeft=0;dragStartBottom=0;preMinimizeStyle=null;constructor(){Ns(()=>{let n=this.windowManagement.minimizedWindows().some(o=>o.id==="console");n&&!this.isMinimizedSignal()?this.isMinimizedSignal.set(!0):!n&&this.isMinimizedSignal()&&this.isMinimizedSignal.set(!1)})}nodes=[];selected=new re(0);isInitialized=!1;webConsoleComponents=L5(v_);logConsoleComponent=Ut(C_);consoleWrapper=Ut("consoleWrapper");ngOnInit(){this.isLightThemeEnabledSignal.set(this.themeService.getActualTheme()==="light"),this.themeSubscription=this.themeService.themeChanged.subscribe(()=>{this.isLightThemeEnabledSignal.set(this.themeService.getActualTheme()==="light"),this.cdr.markForCheck()}),this.loadWindowState();let e=window.innerWidth<=768?56:64;this.boundaryService.setConfig({topOffset:e}),this.consoleService.nodeConsoleTrigger.pipe(rt(this.destroy$)).subscribe(n=>{this.addTab(n,!0)}),this.consoleService.closeNodeConsoleTrigger.pipe(rt(this.destroy$)).subscribe(n=>{let o=this.nodes.findIndex(r=>r.node_id===n.node_id);this.removeTab(o)}),this.selected.valueChanges.pipe(rt(this.destroy$)).subscribe(n=>{n>=0&&n<this.nodes.length&&this.deviceSelected.emit(this.nodes[n].node_id)})}minimize(e){if(this.isMinimizedSignal.set(e),e?this.windowManagement.minimizeWindow("console","console"):this.windowManagement.restoreWindow("console"),e)this.preMinimizeStyle=H({},this.style);else{if(this.preMinimizeStyle){let o=this.preMinimizeStyle.left||this.DEFAULT_LEFT,r=this.preMinimizeStyle.bottom||this.DEFAULT_BOTTOM;if(this.isMaximizedSignal()){let a=window.innerWidth<=768?56:64,m=window.innerHeight-a-20;this.updateStyle({bottom:"0px",left:o,width:`${this.resizedWidth}px`,height:`${m}px`})}else this.updateStyle({bottom:r,left:o,width:`${this.resizedWidth}px`,height:`${this.resizedHeight}px`});this.preMinimizeStyle=null}else{let o=this.style.left||this.DEFAULT_LEFT,r=this.style.bottom||this.DEFAULT_BOTTOM;this.updateStyle({bottom:r,left:o,width:`${this.resizedWidth}px`,height:`${this.resizedHeight}px`})}let n=this.selected.value;n<this.nodes.length?this.focusTerminalAfterRender(n):n===this.nodes.length&&this.focusGns3ConsoleInput()}}toggleMinimize(){this.minimize(!this.isMinimizedSignal())}toggleMaximize(){if(this.isMaximizedSignal.set(!this.isMaximizedSignal()),this.isMaximizedSignal()){let e=window.innerWidth<=768?56:64,o=window.innerHeight-e-20,r=this.style.left||this.DEFAULT_LEFT;this.updateStyle({bottom:"0px",left:r,width:`${this.resizedWidth}px`,height:`${o}px`}),this.consoleService.consoleResized.next({width:this.resizedWidth,height:o-this.CONSOLE_HEADER_HEIGHT}),setTimeout(()=>{this.consoleService.consoleResized.next({width:this.resizedWidth,height:o-this.CONSOLE_HEADER_HEIGHT})},50)}else{let e=this.style.left||this.DEFAULT_LEFT;this.updateStyle({bottom:this.DEFAULT_BOTTOM,left:e,width:`${this.resizedWidth}px`,height:`${this.resizedHeight}px`}),this.consoleService.consoleResized.next({width:this.resizedWidth,height:this.resizedHeight-this.CONSOLE_HEADER_HEIGHT}),setTimeout(()=>{this.consoleService.consoleResized.next({width:this.resizedWidth,height:this.resizedHeight-this.CONSOLE_HEADER_HEIGHT})},50)}this.cdr.markForCheck(),this.saveWindowState()}addTab(e,n){if(e.console_type==="vnc")return;this.minimize(!1);let o=this.nodes.findIndex(r=>r.node_id===e.node_id);if(o>=0)n&&(this.selected.setValue(o),this.cdr.markForCheck());else if(this.nodes.push(e),this.consoleService.openConsoles++,n){let r=this.nodes.length-1;this.selected.setValue(-1),this.cdr.markForCheck(),setTimeout(()=>{this.selected.setValue(r),this.cdr.markForCheck(),this.focusTerminalAfterRender(r)},0)}}removeTab(e){this.nodes.splice(e,1),this.consoleService.openConsoles--;let n=this.selected.value,o=this.nodes.length;o===0?this.selected.setValue(0):e<=n&&n<o?this.selected.setValue(Math.max(0,n-1)):n>=o&&this.selected.setValue(o-1),this.cdr.markForCheck()}applyStyleToElement(e){let n=this.consoleWrapper()?.nativeElement;n&&(e.position&&this.renderer.setStyle(n,"position",e.position),e.left&&this.renderer.setStyle(n,"left",e.left),e.top&&this.renderer.setStyle(n,"top",e.top),e.bottom&&this.renderer.setStyle(n,"bottom",e.bottom),e.right&&this.renderer.setStyle(n,"right",e.right),e.width&&this.renderer.setStyle(n,"width",e.width),e.height&&this.renderer.setStyle(n,"height",e.height))}updateStyle(e){this.style=e,this.applyStyleToElement(e),this.cdr.markForCheck()}validate(e){return!(e.rectangle.width&&e.rectangle.height&&(e.rectangle.width<500||e.rectangle.height<400))}onResizeEnd(e){let n=this.style,o=n.bottom!==void 0&&n.top===void 0,r=this.boundaryService.constrainResizeSize(e.rectangle.width||this.resizedWidth,e.rectangle.height||this.resizedHeight,e.rectangle.left,e.rectangle.top);if(o){let a=window.innerHeight-r.top-r.height;this.updateStyle({position:"fixed",left:`${r.left}px`,bottom:`${a}px`,width:`${r.width}px`,height:`${r.height}px`})}else this.updateStyle({position:"fixed",left:`${r.left}px`,top:`${r.top}px`,width:`${r.width}px`,height:`${r.height}px`});this.styleInside={height:`${r.height-60}px`,width:`${r.width}px`},this.consoleService.consoleResized.next({width:r.width,height:r.height-53}),this.resizedWidth=r.width,this.resizedHeight=r.height,this.saveWindowState()}close(){this.closeConsole.emit(!1)}getActiveTabName(){let e=this.selected.value;if(e<this.nodes.length){let n=this.nodes[e].name;return n.length>12?n.substring(0,10)+"...":n}else return"Console"}onDeviceSelected(e){this.addTab(e,!0),this.deviceSelected.emit(e.node_id)}handleTabShortcut(e){if(!this.isConsoleActiveSignal())return;e.preventDefault(),e.stopPropagation();let n=e.key;if(n==="9")this.switchToTab(this.nodes.length);else{let o=parseInt(n)-1;o<this.nodes.length&&this.switchToTab(o)}}onXtermTabShortcut(e){if(!this.isConsoleActiveSignal())return;e.preventDefault(),e.stopPropagation();let n=e.detail.key,o=parseInt(n)-1;this.switchToTab(o)}onConsoleActivate(){this.isConsoleActiveSignal.set(!0),this.cdr.markForCheck()}onWindowFocus(){this.windowFocused.emit()}onDocumentClick(e){setTimeout(()=>{let n=document.querySelector(".consoleWrapper"),o=e.target;n&&!n.contains(o)&&this.isConsoleActiveSignal()&&(this.isConsoleActiveSignal.set(!1),this.consoleDeactivated.emit(),this.cdr.markForCheck())},0)}switchToTab(e){e<0||e>this.nodes.length||(this.selected.setValue(e),e<this.nodes.length&&this.webConsoleComponents()&&this.focusTerminalAfterRender(e),e===this.nodes.length&&this.focusGns3ConsoleInput())}focusGns3ConsoleInput(){requestAnimationFrame(()=>{requestAnimationFrame(()=>{let e=this.logConsoleComponent();e&&e.focusInput()})})}focusTerminalAfterRender(e){requestAnimationFrame(()=>{requestAnimationFrame(()=>{let n=this.webConsoleComponents();n&&n[e]&&n[e].focusTerminal()})})}enableScroll(e){this.mapSettingsService.isScrollDisabled.next(!1)}disableScroll(e){this.mapSettingsService.isScrollDisabled.next(!0)}onWindowResize(){this.isMinimizedSignal()||(this.style=this.boundaryService.constrainWindowPosition(this.style))}ngAfterViewInit(){this.applyStyleToElement(this.style),this.setupDragHandling(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(this.isMaximizedSignal()){let e=window.innerWidth<=768?56:64,o=window.innerHeight-e-20;this.consoleService.consoleResized.next({width:this.resizedWidth,height:o-this.CONSOLE_HEADER_HEIGHT})}else this.consoleService.consoleResized.next({width:this.resizedWidth,height:this.resizedHeight-this.CONSOLE_HEADER_HEIGHT})})})}setupDragHandling(){let e=this.consoleWrapper()?.nativeElement;if(!e)return;let n=e.querySelector(".consoleHeader");if(!n)return;let o=ua(n,"mousedown"),r=ua(document,"mousemove"),a=ua(document,"mouseup");o.pipe(vi(c=>{c.preventDefault(),this.isDraggingSignal.set(!0),this.cdr.markForCheck(),this.dragStartX=c.clientX,this.dragStartY=c.clientY,this.dragStartLeft=Number(this.style.left?.split("px")[0])||0,this.dragStartBottom=Number(this.style.bottom?.split("px")[0])||0,this.setIframePointerEvents("none")}),fn(()=>r.pipe(vC(0,yh),rt(a.pipe(vi(()=>{this.onDragEnd()}))))),rt(this.destroy$)).subscribe(c=>{let m=c.clientX-this.dragStartX,p=c.clientY-this.dragStartY,h=this.dragStartLeft+m,g=this.dragStartBottom-p,M=this.resizedWidth,C=this.isMinimizedSignal()?48:this.resizedHeight,_=window.innerWidth-M,w=this.boundaryService.getConfigValue().topOffset||0,S=window.innerHeight-C-w;h=Math.max(0,Math.min(_,h)),g=Math.max(0,Math.min(S,g)),this.renderer.setStyle(e,"left",`${h}px`),this.renderer.setStyle(e,"bottom",`${g}px`),this.style.left=`${h}px`,this.style.bottom=`${g}px`})}onDragEnd(){this.isDraggingSignal.set(!1),this.setIframePointerEvents(""),this.cdr.markForCheck(),this.saveWindowState()}setIframePointerEvents(e){let n=this.consoleWrapper()?.nativeElement;n&&n.querySelectorAll("iframe").forEach(o=>{this.renderer.setStyle(o,"pointer-events",e)})}ngOnDestroy(){this.themeSubscription&&(this.themeSubscription.unsubscribe(),this.themeSubscription=null),this.destroy$.next(),this.destroy$.complete()}loadWindowState(){let e="gns3_console_window_state";try{let n=localStorage.getItem(e);if(n){let o=JSON.parse(n);if(this.resizedWidth=o.width||this.DEFAULT_WIDTH,this.resizedHeight=o.height||this.DEFAULT_HEIGHT,this.isMaximizedSignal.set(o.isMaximized||!1),this.isMaximizedSignal()){let r=window.innerWidth<=768?56:64,c=window.innerHeight-r-20;this.style={bottom:"0px",left:this.DEFAULT_LEFT,width:`${this.resizedWidth}px`,height:`${c}px`}}else this.style={bottom:o.bottom||this.DEFAULT_BOTTOM,left:o.left||this.DEFAULT_LEFT,width:`${this.resizedWidth}px`,height:`${this.resizedHeight}px`}}else this.style={bottom:this.DEFAULT_BOTTOM,left:this.DEFAULT_LEFT,width:`${this.DEFAULT_WIDTH}px`,height:`${this.DEFAULT_HEIGHT}px`}}catch{this.style={bottom:this.DEFAULT_BOTTOM,left:this.DEFAULT_LEFT,width:`${this.DEFAULT_WIDTH}px`,height:`${this.DEFAULT_HEIGHT}px`}}}saveWindowState(){let e="gns3_console_window_state";try{let n={width:this.resizedWidth,height:this.resizedHeight,bottom:this.style.bottom,left:this.style.left,isMaximized:this.isMaximizedSignal()};localStorage.setItem(e,JSON.stringify(n))}catch{}}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-console-wrapper"]],viewQuery:function(n,o){n&1&&tn(o.webConsoleComponents,v_,5)(o.logConsoleComponent,C_,5)(o.consoleWrapper,$Ee,5),n&2&&nn(3)},hostBindings:function(n,o){n&1&&v("keydown.alt.1",function(a){return o.handleTabShortcut(a)},br)("keydown.alt.2",function(a){return o.handleTabShortcut(a)},br)("keydown.alt.3",function(a){return o.handleTabShortcut(a)},br)("keydown.alt.4",function(a){return o.handleTabShortcut(a)},br)("keydown.alt.5",function(a){return o.handleTabShortcut(a)},br)("keydown.alt.6",function(a){return o.handleTabShortcut(a)},br)("keydown.alt.7",function(a){return o.handleTabShortcut(a)},br)("keydown.alt.8",function(a){return o.handleTabShortcut(a)},br)("keydown.alt.9",function(a){return o.handleTabShortcut(a)},br)("consoleTabShortcut",function(a){return o.onXtermTabShortcut(a)},Mh)("click",function(a){return o.onDocumentClick(a)},Mh)("resize",function(){return o.onWindowResize()},br)},inputs:{controller:[1,"controller"],project:[1,"project"],zIndex:[1,"zIndex"]},outputs:{closeConsole:"closeConsole",deviceSelected:"deviceSelected",consoleDeactivated:"consoleDeactivated",windowFocused:"windowFocused",windowMinimized:"windowMinimized"},decls:24,vars:21,consts:[["consoleWrapper",""],["mwlResizable","","tabindex","0",1,"consoleWrapper",3,"mousedown","resizeEnd","click","focus","ngClass","validateResize","enableGhostResize"],[1,"console-content"],[3,"deviceSelected","isLightTheme"],[1,"console-area"],[1,"consoleHeader",3,"ngClass"],[1,"console-wrapper__tabs",3,"selectedIndexChange","selectedIndex"],[3,"label"],["mat-tab-label",""],[1,"console-header-actions"],["mat-icon-button","","title","Maximize height"],["mat-icon-button","","title","Restore"],["mat-icon-button","",3,"mousedown","click"],[3,"hidden","controller","project"],[3,"hidden","controller","node"],["mwlResizeHandle","",1,"resize-handle","resize-handle-top",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-right",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-bottom",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-left",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-top-left",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-top-right",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-bottom-left",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-bottom-right",3,"resizeEdges"],[1,"tab-label-text"],["mat-icon-button","","title","Maximize height",3,"mousedown","click"],["mat-icon-button","","title","Restore",3,"mousedown","click"]],template:function(n,o){n&1&&(s(0,"div",1,0),v("mousedown",function(){return o.onWindowFocus()})("resizeEnd",function(a){return o.onResizeEnd(a)})("click",function(){return o.onConsoleActivate()})("focus",function(){return o.onConsoleActivate()}),A(2,JEe,8,16),s(3,"div",2)(4,"app-console-devices-panel",3),v("deviceSelected",function(a){return o.onDeviceSelected(a)}),l(),s(5,"div",4)(6,"div",5)(7,"mat-tab-group",6),v("selectedIndexChange",function(a){return o.selected.setValue(a)}),J(8,tDe,2,1,"mat-tab",7,Ii),s(10,"mat-tab"),Ae(11,nDe,2,0,"ng-template",8),l()(),s(12,"div",9),A(13,iDe,3,0,"button",10),A(14,oDe,3,0,"button",11),s(15,"button",12),v("mousedown",function(a){return a.stopPropagation()})("click",function(){return o.minimize(!0)}),s(16,"mat-icon"),d(17,"remove"),l()(),s(18,"button",12),v("mousedown",function(a){return a.stopPropagation()})("click",function(){return o.close()}),s(19,"mat-icon"),d(20,"close"),l()()()(),F(21,"app-log-console",13),J(22,rDe,1,3,"app-web-console",14,Ii),l()()()),n&2&&(yn("z-index",o.zIndex()),x("ngClass",EC(14,HEe,o.isLightThemeEnabled(),o.isConsoleActive(),o.isMinimized(),o.isDragging()))("validateResize",o.validate)("enableGhostResize",!0),u(2),O(o.isMinimized()?-1:2),u(2),x("isLightTheme",o.isLightThemeEnabled()),u(2),x("ngClass",ln(19,UEe,o.isLightThemeEnabled())),u(),x("selectedIndex",o.selected.value),u(),ee(o.nodes),u(5),O(o.isMaximized()?-1:13),u(),O(o.isMaximized()?14:-1),u(7),x("hidden",o.selected.value!==o.nodes.length)("controller",o.controller())("project",o.project()),u(),ee(o.nodes))},dependencies:[Z,Zi,nt,mo,PR,Bo,Vo,te,se,$,ze,Gt,im,Wp,Lk,v_,C_],styles:["@media screen and (max-width:700px){.consoleWrapper[_ngcontent-%COMP%]{visibility:hidden}}.consoleWrapper[_ngcontent-%COMP%]{box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent);position:fixed;bottom:100px;left:80px;height:180px;width:600px;background:var(--mat-sys-surface);color:var(--mat-sys-on-surface);overflow:hidden;font-size:12px;border-radius:4px;outline:none;transition:box-shadow .2s cubic-bezier(.4,0,.2,1);z-index:900;will-change:left,bottom;contain:layout style}.consoleWrapper[_ngcontent-%COMP%]:focus{outline:none}.consoleWrapper.is-dragging[_ngcontent-%COMP%]{cursor:grabbing;user-select:none;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 40%,transparent);transition:none;will-change:left,bottom}.consoleWrapper.is-minimized[_ngcontent-%COMP%]{display:none}.taskbar-icon[_ngcontent-%COMP%]{position:fixed;bottom:20px;left:20px;z-index:901;display:flex;align-items:center;gap:8px;padding:8px 12px;height:48px;width:180px;cursor:pointer;user-select:none;transition:background-color .15s var(--mat-sys-motion-easing-linear);background:var(--mat-sys-surface);border-radius:8px;box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 25%,transparent),0 0 0 1px var(--mat-sys-outline-variant)}.taskbar-icon[_ngcontent-%COMP%]:hover{background:var(--mat-sys-hover-state-layer)}.taskbar-icon[_ngcontent-%COMP%]:active{background:var(--mat-sys-focus-state-layer)}.taskbar-icon__icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;color:var(--mat-sys-primary);flex-shrink:0}.taskbar-icon__label[_ngcontent-%COMP%]{flex:1;font-size:12px;font-weight:500;color:var(--mat-sys-on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.lightThemeConsoleHeader[_ngcontent-%COMP%]{background:var(--mat-sys-surface);color:var(--mat-sys-on-surface)}.lightThemeConsoleHeader[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%]:hover{background-color:var(--mat-sys-hover-state-layer)}.lightThemeConsoleHeader[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);filter:none}.lightThemeConsoleHeader[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%]:active{background-color:var(--mat-sys-focus-state-layer)}.lightThemeConsoleHeader[_ngcontent-%COMP%] .mat-icon-button[title=Close][_ngcontent-%COMP%]:hover{background-color:var(--mat-sys-error-container)}.lightThemeConsoleHeader[_ngcontent-%COMP%] .mat-icon-button[title=Close][_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.lightThemeConsoleHeader[_ngcontent-%COMP%] .mat-icon-button[title=Close][_ngcontent-%COMP%]:hover:active{background-color:var(--mat-sys-error);opacity:.8}.filterButton[_ngcontent-%COMP%]{background:transparent;color:var(--mat-sys-on-surface-variant);border:none;margin-top:0;outline:none;font-weight:700;padding:0}.consoleFiltering[_ngcontent-%COMP%]{display:flex}.consoleHeader[_ngcontent-%COMP%]{width:100%;font-size:12px;overflow:hidden;display:flex;padding:2px;justify-content:space-between;align-items:center;background:var(--mat-sys-surface);cursor:grab;position:relative;z-index:10;flex-shrink:0}.consoleHeader[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface)}.consoleHeader[_ngcontent-%COMP%]:active{cursor:grabbing}.mat-tab-label[_ngcontent-%COMP%]{height:3rem;min-width:8rem;flex-shrink:0}.mat-tab-label[_ngcontent-%COMP%] > .tab-label-text[_ngcontent-%COMP%]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-tab-label[_ngcontent-%COMP%] > .mat-icon-button[_ngcontent-%COMP%]{flex-shrink:0;width:32px;height:32px;padding:4px;margin-left:auto}.mat-tab-label[_ngcontent-%COMP%] > .mat-icon-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.mat-tab-label.mat-tab-label-active[_ngcontent-%COMP%]{border-bottom:2px solid var(--mat-sys-primary);box-sizing:border-box;font-weight:700}.mat-ink-bar[_ngcontent-%COMP%]{display:none}@-moz-document url-prefix(){.mat-tab-label{min-width:8rem;max-width:none;flex:0 0 auto;width:auto}.mat-tab-label-container{display:flex;flex-direction:row}}.console-wrapper__tabs[_ngcontent-%COMP%]{width:80%}.console[_ngcontent-%COMP%]{width:596px;height:120px;overflow-y:scroll;padding:2px;color:var(--mat-sys-on-surface-variant);scrollbar-color:var(--mat-sys-on-surface-variant) var(--mat-sys-surface);scrollbar-width:thin}.consoleInput[_ngcontent-%COMP%]{width:100%;height:30px;padding:2px;display:flex}.commandLine[_ngcontent-%COMP%]{background-color:transparent;color:var(--mat-sys-on-surface);border:none}.inputIcon[_ngcontent-%COMP%]{margin-top:2px}mat-icon[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px}input[_ngcontent-%COMP%]:focus{outline:none}.closeButton[_ngcontent-%COMP%]{cursor:pointer}.console-content[_ngcontent-%COMP%]{display:flex;height:100%;overflow:hidden}.console-area[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.resize-handle[_ngcontent-%COMP%]{position:absolute;z-index:100;opacity:0;transition:opacity .15s ease}.consoleWrapper[_ngcontent-%COMP%]:hover .resize-handle[_ngcontent-%COMP%]{opacity:1}.resize-handle.resize-handle-top[_ngcontent-%COMP%]{top:-4px;left:12px;right:12px;height:12px;cursor:ns-resize;background:transparent}.resize-handle.resize-handle-right[_ngcontent-%COMP%]{top:12px;right:-4px;bottom:12px;width:12px;cursor:ew-resize;background:transparent}.resize-handle.resize-handle-bottom[_ngcontent-%COMP%]{bottom:-4px;left:12px;right:12px;height:12px;cursor:ns-resize;background:transparent}.resize-handle.resize-handle-left[_ngcontent-%COMP%]{top:12px;left:-4px;bottom:12px;width:12px;cursor:ew-resize;background:transparent}.resize-handle.resize-handle-top-left[_ngcontent-%COMP%]{top:-6px;left:-6px;width:20px;height:20px;cursor:nwse-resize;background:transparent}.resize-handle.resize-handle-top-right[_ngcontent-%COMP%]{top:-6px;right:-6px;width:20px;height:20px;cursor:nesw-resize;background:transparent}.resize-handle.resize-handle-bottom-left[_ngcontent-%COMP%]{bottom:-6px;left:-6px;width:20px;height:20px;cursor:nesw-resize;background:transparent}.resize-handle.resize-handle-bottom-right[_ngcontent-%COMP%]{bottom:-6px;right:-6px;width:20px;height:20px;cursor:nwse-resize;background:transparent}"],changeDetection:0})}return t})();var aDe=["windowWrapper"],sDe=()=>({top:!0}),lDe=()=>({right:!0}),cDe=()=>({bottom:!0}),dDe=()=>({left:!0}),mDe=()=>({top:!0,left:!0}),pDe=()=>({top:!0,right:!0}),uDe=()=>({bottom:!0,left:!0}),hDe=()=>({bottom:!0,right:!0});function fDe(t,i){t&1&&F(0,"div",16)(1,"div",17)(2,"div",18)(3,"div",19)(4,"div",20)(5,"div",21)(6,"div",22)(7,"div",23),t&2&&(x("resizeEdges",Jt(8,sDe)),u(),x("resizeEdges",Jt(9,lDe)),u(),x("resizeEdges",Jt(10,cDe)),u(),x("resizeEdges",Jt(11,dDe)),u(),x("resizeEdges",Jt(12,mDe)),u(),x("resizeEdges",Jt(13,pDe)),u(),x("resizeEdges",Jt(14,uDe)),u(),x("resizeEdges",Jt(15,hDe)))}function gDe(t,i){t&1&&(s(0,"div",13)(1,"mat-icon",24),d(2,"loading"),l(),s(3,"span"),d(4,"Starting Web Wireshark..."),l()())}function _De(t,i){t&1&&(s(0,"div",14),F(1,"img",25),s(2,"span"),d(3,"Restarting Web Wireshark..."),l()())}var IU=(()=>{class t{DEFAULT_WIDTH=800;DEFAULT_HEIGHT=600;DEFAULT_LEFT="100px";DEFAULT_TOP="100px";MIN_WIDTH=800;MIN_HEIGHT=600;MAX_WIDTH=1920;MAX_HEIGHT=1080;destroy$=new Le;link=oe.required();controller=oe.required();project=oe.required();zIndex=oe(1e3);closeWindow=new ve;windowFocused=new ve;windowMinimized=new ve;style={position:"fixed",left:this.DEFAULT_LEFT,top:this.DEFAULT_TOP,width:`${this.DEFAULT_WIDTH}px`,height:`${this.DEFAULT_HEIGHT}px`};resizedWidth=this.DEFAULT_WIDTH;resizedHeight=this.DEFAULT_HEIGHT;isDraggingSignal=me(!1);isResizingSignal=me(!1);isLoadingSignal=me(!0);isMinimizedSignal=me(!1);isRestartingSignal=me(!1);isDragging=this.isDraggingSignal.asReadonly();isResizing=this.isResizingSignal.asReadonly();isLoading=this.isLoadingSignal.asReadonly();isMinimized=this.isMinimizedSignal.asReadonly();isRestarting=this.isRestartingSignal.asReadonly();wiresharkUrl="";xpraConsoleService=f(l_);boundaryService=f(qp);toasterService=f(fe);cdr=f(K);renderer=f(ii);sanitizer=f(lr);windowManagement=f($p);linkService=f(to);dragStartX=0;dragStartY=0;dragStartLeft=0;dragStartTop=0;windowWrapper=Ut("windowWrapper");constructor(){Ns(()=>{let e=this.link(),n=this.windowManagement.minimizedWindows(),o=`wireshark-${e?.link_id}`,r=n.some(a=>a.id===o);r&&!this.isMinimizedSignal()?this.isMinimizedSignal.set(!0):!r&&this.isMinimizedSignal()&&this.isMinimizedSignal.set(!1)})}ngOnInit(){let e=window.innerWidth<=768?56:64;this.boundaryService.setConfig({topOffset:e,minWidth:this.MIN_WIDTH,minHeight:this.MIN_HEIGHT,maxWidth:this.MAX_WIDTH,maxHeight:this.MAX_HEIGHT}),this.wiresharkUrl=this.buildWiresharkUrl(),this.setupDragHandling()}getWindowId(){return`wireshark-${this.link().link_id}`}buildWiresharkUrl(){let e=this.link(),n=this.controller(),o=this.xpraConsoleService.buildXpraWebSocketUrlForWebWireshark(n,e),r=this.xpraConsoleService.buildXpraConsolePageUrl(o);return this.sanitizer.bypassSecurityTrustResourceUrl(r)}onIframeLoad(){this.isLoadingSignal.set(!1),this.cdr.markForCheck()}close(){this.windowManagement.restoreWindow(this.getWindowId()),this.closeWindow.emit()}toggleMinimize(){this.windowManagement.toggleMinimize(this.getWindowId(),"wireshark",this.link().link_id),this.cdr.markForCheck()}restartWireshark(){this.isRestartingSignal()||(this.isRestartingSignal.set(!0),this.cdr.markForCheck(),this.linkService.restartWiresharkCapture(this.controller(),this.link()).subscribe({next:e=>{this.isRestartingSignal.set(!1),this.wiresharkUrl=this.buildWiresharkUrl(),this.isLoadingSignal.set(!0),this.cdr.markForCheck()},error:e=>{this.isRestartingSignal.set(!1),this.toasterService.error(`Failed to restart Web Wireshark: ${e.message||e.detail||"Unknown error"}`),this.cdr.markForCheck()}}))}onWindowFocus(){if(this.isMinimizedSignal()){this.toggleMinimize();return}this.windowFocused.emit()}validate(e){return!(e.rectangle.width&&e.rectangle.height&&(e.rectangle.width<this.MIN_WIDTH||e.rectangle.height<this.MIN_HEIGHT||e.rectangle.width>this.MAX_WIDTH||e.rectangle.height>this.MAX_HEIGHT))}onResizeStart(){this.isResizingSignal.set(!0),this.setIframePointerEvents("none"),this.cdr.markForCheck()}onResizeEnd(e){let n=this.boundaryService.constrainResizeSize(e.rectangle.width||this.resizedWidth,e.rectangle.height||this.resizedHeight,e.rectangle.left,e.rectangle.top);this.style={position:"fixed",left:`${n.left}px`,top:`${n.top}px`,width:`${n.width}px`,height:`${n.height}px`},this.resizedWidth=n.width,this.resizedHeight=n.height,this.applyStyleToElement(),this.isResizingSignal.set(!1),this.setIframePointerEvents(""),this.cdr.markForCheck()}applyStyleToElement(){let e=this.windowWrapper()?.nativeElement;e&&(this.style.position&&this.renderer.setStyle(e,"position",this.style.position),this.style.left&&this.renderer.setStyle(e,"left",this.style.left),this.style.top&&this.renderer.setStyle(e,"top",this.style.top),this.style.width&&this.renderer.setStyle(e,"width",this.style.width),this.style.height&&this.renderer.setStyle(e,"height",this.style.height))}setupDragHandling(){let e=this.windowWrapper()?.nativeElement;if(!e)return;let n=e.querySelector(".web-wireshark-inline-header");if(!n)return;let o=ua(n,"mousedown"),r=ua(document,"mousemove"),a=ua(document,"mouseup");o.pipe(vi(c=>{c.preventDefault(),this.isDraggingSignal.set(!0),this.cdr.markForCheck(),this.dragStartX=c.clientX,this.dragStartY=c.clientY,this.dragStartLeft=Number(this.style.left?.split("px")[0])||0,this.dragStartTop=Number(this.style.top?.split("px")[0])||0,this.setIframePointerEvents("none")}),fn(()=>r.pipe(rt(a.pipe(vi(()=>{this.onDragEnd()}))))),rt(this.destroy$)).subscribe(c=>{let m=c.clientX-this.dragStartX,p=c.clientY-this.dragStartY,h=this.dragStartLeft+m,g=this.dragStartTop+p,M=this.resizedWidth,C=this.resizedHeight,_=window.innerWidth-M,w=this.boundaryService.getConfigValue().topOffset||0,S=window.innerHeight-C-w;h=Math.max(0,Math.min(_,h)),g=Math.max(w,Math.min(S,g)),this.renderer.setStyle(e,"left",`${h}px`),this.renderer.setStyle(e,"top",`${g}px`),this.style.left=`${h}px`,this.style.top=`${g}px`})}onDragEnd(){this.isDraggingSignal.set(!1),this.setIframePointerEvents(""),this.cdr.markForCheck()}setIframePointerEvents(e){let n=this.windowWrapper()?.nativeElement;n&&n.querySelectorAll("iframe").forEach(o=>{this.renderer.setStyle(o,"pointer-events",e)})}onWindowResize(){this.style=this.boundaryService.constrainWindowPosition(this.style),this.applyStyleToElement()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-web-wireshark-inline"]],viewQuery:function(n,o){n&1&&tn(o.windowWrapper,aDe,5),n&2&&nn()},hostBindings:function(n,o){n&1&&v("resize",function(){return o.onWindowResize()},br)},inputs:{link:[1,"link"],controller:[1,"controller"],project:[1,"project"],zIndex:[1,"zIndex"]},outputs:{closeWindow:"closeWindow",windowFocused:"windowFocused",windowMinimized:"windowMinimized"},decls:26,vars:19,consts:[["windowWrapper",""],["mwlResizable","",1,"web-wireshark-inline",3,"mousedown","resizeStart","resizeEnd","ngStyle","validateResize","enableGhostResize"],[1,"web-wireshark-inline__content"],[1,"web-wireshark-inline-header"],[1,"web-wireshark-inline-header__title"],[1,"header-icon"],[1,"link-info"],[1,"web-wireshark-inline-header__actions"],["mat-icon-button","","title","Restart Web Wireshark",1,"restart-button",3,"click","disabled"],[1,"restart-icon"],["mat-icon-button","","title","Minimize",1,"minimize-button",3,"click"],["mat-icon-button","","title","Close",1,"close-button",3,"click"],[1,"web-wireshark-inline__iframe-container"],[1,"loading-overlay"],[1,"restart-overlay"],["allowfullscreen","",1,"web-wireshark-inline__iframe",3,"load","src"],["mwlResizeHandle","",1,"resize-handle","resize-handle-top",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-right",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-bottom",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-left",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-top-left",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-top-right",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-bottom-left",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-bottom-right",3,"resizeEdges"],[1,"loading-icon"],["src","assets/gns3_icon.svg","alt","GNS3",1,"restart-logo"]],template:function(n,o){n&1&&(s(0,"div",1,0),v("mousedown",function(){return o.onWindowFocus()})("resizeStart",function(){return o.onResizeStart()})("resizeEnd",function(a){return o.onResizeEnd(a)}),A(2,fDe,8,16),s(3,"div",2)(4,"div",3)(5,"div",4)(6,"mat-icon",5),d(7,"analytics"),l(),s(8,"span"),d(9,"Web Wireshark"),l(),s(10,"span",6),d(11),l()(),s(12,"div",7)(13,"button",8),v("click",function(){return o.restartWireshark()}),s(14,"mat-icon",9),d(15,"restart_alt"),l()(),s(16,"button",10),v("click",function(){return o.toggleMinimize()}),s(17,"mat-icon"),d(18,"remove"),l()(),s(19,"button",11),v("click",function(){return o.close()}),s(20,"mat-icon"),d(21,"close"),l()()()(),s(22,"div",12),A(23,gDe,5,0,"div",13),A(24,_De,4,0,"div",14),s(25,"iframe",15),v("load",function(){return o.onIframeLoad()}),l()()()()),n&2&&(yn("z-index",o.zIndex()),je("is-dragging",o.isDragging())("is-resizing",o.isResizing())("is-minimized",o.isMinimized()),x("ngStyle",o.style)("validateResize",o.validate)("enableGhostResize",!1),u(2),O(o.isMinimized()?-1:2),u(9),U(o.link().capture_file_name),u(2),x("disabled",o.isRestarting()),u(),je("is-spinning",o.isRestarting()),u(9),O(o.isLoading()?23:-1),u(),O(o.isRestarting()?24:-1),u(),x("src",o.wiresharkUrl,yC))},dependencies:[Z,pm,te,se,$,ze,im,Wp],styles:[".web-wireshark-inline[_ngcontent-%COMP%]{position:fixed;z-index:1000;background:var(--mat-sys-surface);border:2px solid var(--mat-sys-outline);border-radius:8px;box-shadow:0 8px 24px color-mix(in srgb,var(--mat-sys-shadow) 15%,transparent),0 4px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);overflow:visible;transition:box-shadow .2s ease;contain:layout style}.web-wireshark-inline[_ngcontent-%COMP%]:hover{box-shadow:0 12px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 6px 12px color-mix(in srgb,var(--mat-sys-shadow) 12%,transparent)}.web-wireshark-inline.is-dragging[_ngcontent-%COMP%]{box-shadow:0 16px 48px color-mix(in srgb,var(--mat-sys-shadow) 25%,transparent),0 8px 16px color-mix(in srgb,var(--mat-sys-shadow) 15%,transparent);opacity:.9;cursor:move;will-change:left,top}.web-wireshark-inline.is-minimized[_ngcontent-%COMP%]{display:none}.web-wireshark-inline__content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%;height:100%;overflow:hidden;border-radius:6px}.web-wireshark-inline-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;background:var(--mat-sys-surface-container);border-bottom:1px solid var(--mat-sys-outline-variant);cursor:move;user-select:none;flex-shrink:0}.web-wireshark-inline-header__title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:500;color:var(--mat-sys-on-surface)}.web-wireshark-inline-header__title[_ngcontent-%COMP%] .header-icon[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-primary);width:14px;height:14px}.web-wireshark-inline-header__title[_ngcontent-%COMP%] .link-info[_ngcontent-%COMP%]{font-size:10px;color:var(--mat-sys-on-surface-variant);font-weight:400;margin-left:4px;padding-left:4px;border-left:1px solid var(--mat-sys-outline-variant)}.web-wireshark-inline-header__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:2px}.web-wireshark-inline-header__actions[_ngcontent-%COMP%] .minimize-button[_ngcontent-%COMP%], .web-wireshark-inline-header__actions[_ngcontent-%COMP%] .close-button[_ngcontent-%COMP%]{width:24px;height:24px;padding:0;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}.web-wireshark-inline-header__actions[_ngcontent-%COMP%] .minimize-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], .web-wireshark-inline-header__actions[_ngcontent-%COMP%] .close-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px;vertical-align:middle}.web-wireshark-inline-header__actions[_ngcontent-%COMP%] .minimize-button[_ngcontent-%COMP%]:hover, .web-wireshark-inline-header__actions[_ngcontent-%COMP%] .close-button[_ngcontent-%COMP%]:hover{background-color:var(--mat-sys-error-container);color:var(--mat-sys-error)}.web-wireshark-inline-header__actions[_ngcontent-%COMP%] .restart-button[_ngcontent-%COMP%]{width:24px;height:24px;padding:0;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}.web-wireshark-inline-header__actions[_ngcontent-%COMP%] .restart-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px;vertical-align:middle;color:var(--mat-sys-primary)}.web-wireshark-inline-header__actions[_ngcontent-%COMP%] .restart-button[_ngcontent-%COMP%]:hover:not(:disabled){background-color:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container)}.web-wireshark-inline-header__actions[_ngcontent-%COMP%] .restart-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary-container)}.web-wireshark-inline-header__actions[_ngcontent-%COMP%] .restart-button[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.web-wireshark-inline-header__actions[_ngcontent-%COMP%] .restart-button[_ngcontent-%COMP%] .restart-icon.is-spinning[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spin 1s linear infinite}.web-wireshark-inline__iframe-container[_ngcontent-%COMP%]{flex:1;position:relative;overflow:hidden;min-height:200px;height:100%}.web-wireshark-inline__iframe[_ngcontent-%COMP%]{width:100%;height:100%;border:none;display:block}.loading-overlay[_ngcontent-%COMP%]{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--mat-sys-surface);z-index:1}.loading-overlay[_ngcontent-%COMP%] .loading-icon[_ngcontent-%COMP%]{font-size:48px;color:var(--mat-sys-primary);will-change:transform;animation:_ngcontent-%COMP%_spin 1s linear infinite}.loading-overlay[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface-variant)}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.restart-overlay[_ngcontent-%COMP%]{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:color-mix(in srgb,var(--mat-sys-surface) 90%,transparent);backdrop-filter:blur(4px);z-index:10}.restart-overlay[_ngcontent-%COMP%] .restart-logo[_ngcontent-%COMP%]{width:80px;height:80px;animation:_ngcontent-%COMP%_breathe 2s ease-in-out infinite;filter:drop-shadow(0 0 8px var(--mat-sys-primary))}.restart-overlay[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface);font-weight:500}@keyframes _ngcontent-%COMP%_breathe{0%,to{transform:scale(1);opacity:.8}50%{transform:scale(1.1);opacity:1}}.resize-handle[_ngcontent-%COMP%]{position:absolute;z-index:100;opacity:0;transition:opacity .15s ease}.web-wireshark-inline[_ngcontent-%COMP%]:hover .resize-handle[_ngcontent-%COMP%]{opacity:1}.resize-handle.resize-handle-top[_ngcontent-%COMP%]{top:-4px;left:12px;right:12px;height:12px;cursor:ns-resize;background:transparent}.resize-handle.resize-handle-right[_ngcontent-%COMP%]{top:12px;right:-4px;bottom:12px;width:12px;cursor:ew-resize;background:transparent}.resize-handle.resize-handle-bottom[_ngcontent-%COMP%]{bottom:-4px;left:12px;right:12px;height:12px;cursor:ns-resize;background:transparent}.resize-handle.resize-handle-left[_ngcontent-%COMP%]{top:12px;left:-4px;bottom:12px;width:12px;cursor:ew-resize;background:transparent}.resize-handle.resize-handle-top-left[_ngcontent-%COMP%]{top:-6px;left:-6px;width:20px;height:20px;cursor:nwse-resize;background:transparent}.resize-handle.resize-handle-top-right[_ngcontent-%COMP%]{top:-6px;right:-6px;width:20px;height:20px;cursor:nesw-resize;background:transparent}.resize-handle.resize-handle-bottom-left[_ngcontent-%COMP%]{bottom:-6px;left:-6px;width:20px;height:20px;cursor:nesw-resize;background:transparent}.resize-handle.resize-handle-bottom-right[_ngcontent-%COMP%]{bottom:-6px;right:-6px;width:20px;height:20px;cursor:nwse-resize;background:transparent}"],changeDetection:0})}return t})();var vDe=["windowWrapper"],bDe=()=>({top:!0}),CDe=()=>({right:!0}),xDe=()=>({bottom:!0}),yDe=()=>({left:!0}),SDe=()=>({top:!0,left:!0}),wDe=()=>({top:!0,right:!0}),MDe=()=>({bottom:!0,left:!0}),kDe=()=>({bottom:!0,right:!0});function TDe(t,i){t&1&&F(0,"div",13)(1,"div",14)(2,"div",15)(3,"div",16)(4,"div",17)(5,"div",18)(6,"div",19)(7,"div",20),t&2&&(x("resizeEdges",Jt(8,bDe)),u(),x("resizeEdges",Jt(9,CDe)),u(),x("resizeEdges",Jt(10,xDe)),u(),x("resizeEdges",Jt(11,yDe)),u(),x("resizeEdges",Jt(12,SDe)),u(),x("resizeEdges",Jt(13,wDe)),u(),x("resizeEdges",Jt(14,MDe)),u(),x("resizeEdges",Jt(15,kDe)))}function EDe(t,i){t&1&&(s(0,"div",11)(1,"mat-icon",21),d(2,"loading"),l(),s(3,"span"),d(4,"Starting Web Console..."),l()())}function DDe(t,i){if(t&1){let e=j();s(0,"iframe",22),v("load",function(){D(e);let o=b();return P(o.onIframeLoad())}),l()}if(t&2){let e=b();x("src",e.consoleUrl,yC)}}var AU=(()=>{class t{DEFAULT_WIDTH=1024;DEFAULT_HEIGHT=768;DEFAULT_LEFT="100px";DEFAULT_TOP="100px";MIN_WIDTH=400;MIN_HEIGHT=300;destroy$=new Le;node=oe.required();controller=oe.required();project=oe.required();zIndex=oe(1e3);closeWindow=new ve;windowFocused=new ve;windowMinimized=new ve;style={position:"fixed",left:this.DEFAULT_LEFT,top:this.DEFAULT_TOP,width:`${this.DEFAULT_WIDTH}px`,height:`${this.DEFAULT_HEIGHT}px`};resizedWidth=this.DEFAULT_WIDTH;resizedHeight=this.DEFAULT_HEIGHT;isDraggingSignal=me(!1);isResizingSignal=me(!1);isLoadingSignal=me(!0);isMinimizedSignal=me(!1);isDragging=this.isDraggingSignal.asReadonly();isResizing=this.isResizingSignal.asReadonly();isLoading=this.isLoadingSignal.asReadonly();isMinimized=this.isMinimizedSignal.asReadonly();consoleUrl="";boundaryService=f(qp);toasterService=f(fe);cdr=f(K);renderer=f(ii);sanitizer=f(lr);windowManagement=f($p);dragStartX=0;dragStartY=0;dragStartLeft=0;dragStartTop=0;windowWrapper=Ut("windowWrapper");constructor(){Ns(()=>{let e=this.node(),n=this.windowManagement.minimizedWindows(),o=this.getWindowId(),r=n.some(a=>a.id===o);r&&!this.isMinimizedSignal()?this.isMinimizedSignal.set(!0):!r&&this.isMinimizedSignal()&&this.isMinimizedSignal.set(!1)})}ngOnInit(){let e=window.innerWidth<=768?56:64;this.boundaryService.setConfig({topOffset:e}),this.adjustWindowSizeFromConsoleResolution(),this.consoleUrl=this.buildConsoleUrl(),this.setupDragHandling()}adjustWindowSizeFromConsoleResolution(){let e=this.node(),n=10,o=this.DEFAULT_WIDTH,r=this.DEFAULT_HEIGHT;if(e.properties){let a=e.properties;if(a.console_resolution){let m=a.console_resolution.split("x");if(m.length===2){let p=parseInt(m[0],10),h=parseInt(m[1],10);!isNaN(p)&&!isNaN(h)&&(o=p+n,r=h+n,this.style={position:"fixed",left:this.DEFAULT_LEFT,top:this.DEFAULT_TOP,width:`${o}px`,height:`${r}px`},this.resizedWidth=o,this.resizedHeight=r)}}}}getWindowId(){return`console-${this.node().node_id}`}buildConsoleUrl(){let e=this.node(),n=this.controller();if(e.console_type==="vnc"){let o=this.buildVncWebSocketUrl(n,e),r=this.buildVncConsolePageUrl(o,e);return this.sanitizer.bypassSecurityTrustResourceUrl(r)}else if(e.console_type&&e.console_type.startsWith("http")){let o=e.console_host;(o==="0.0.0.0"||o==="0:0:0:0:0:0:0:0"||o==="::")&&(o=n.host);let r=`${e.console_type}://${o}:${e.console}`;return this.sanitizer.bypassSecurityTrustResourceUrl(r)}return this.toasterService.error(`Console type '${e.console_type}' is not supported in inline mode.`),""}buildVncWebSocketUrl(e,n){return`${e.protocol==="https:"?"wss":"ws"}://${e.host}:${e.port}/v3/projects/${n.project_id}/nodes/${n.node_id}/console/vnc?token=${e.authToken}`}buildVncConsolePageUrl(e,n){return`assets/vnc-console/index.html?${new URLSearchParams({ws_url:e,node_name:n.name,node_id:n.node_id,project_id:n.project_id,autoconnect:"1"}).toString()}`}onIframeLoad(){this.isLoadingSignal.set(!1),this.cdr.markForCheck()}close(){this.windowManagement.restoreWindow(this.getWindowId()),this.closeWindow.emit()}toggleMinimize(){this.windowManagement.toggleMinimize(this.getWindowId(),"console",this.node().node_id),this.cdr.markForCheck()}onWindowFocus(){if(this.isMinimizedSignal()){this.toggleMinimize();return}this.windowFocused.emit(),this.cdr.markForCheck()}validate(e){return!(e.rectangle.width&&e.rectangle.height&&(e.rectangle.width<this.MIN_WIDTH||e.rectangle.height<this.MIN_HEIGHT))}onResizeStart(){this.isResizingSignal.set(!0),this.setIframePointerEvents("none"),this.cdr.markForCheck()}onResizeEnd(e){let n=this.boundaryService.constrainResizeSize(e.rectangle.width||this.resizedWidth,e.rectangle.height||this.resizedHeight,e.rectangle.left,e.rectangle.top);this.style={position:"fixed",left:`${n.left}px`,top:`${n.top}px`,width:`${n.width}px`,height:`${n.height}px`},this.resizedWidth=n.width,this.resizedHeight=n.height,this.applyStyleToElement(),this.isResizingSignal.set(!1),this.setIframePointerEvents(""),this.cdr.markForCheck()}applyStyleToElement(){let e=this.windowWrapper()?.nativeElement;e&&(this.style.position&&this.renderer.setStyle(e,"position",this.style.position),this.style.left&&this.renderer.setStyle(e,"left",this.style.left),this.style.top&&this.renderer.setStyle(e,"top",this.style.top),this.style.width&&this.renderer.setStyle(e,"width",this.style.width),this.style.height&&this.renderer.setStyle(e,"height",this.style.height))}setupDragHandling(){let e=this.windowWrapper()?.nativeElement;if(!e)return;let n=e.querySelector(".web-console-inline-header");if(!n)return;let o=ua(n,"mousedown"),r=ua(document,"mousemove"),a=ua(document,"mouseup");o.pipe(vi(c=>{c.preventDefault(),this.isDraggingSignal.set(!0),this.cdr.markForCheck(),this.dragStartX=c.clientX,this.dragStartY=c.clientY,this.dragStartLeft=Number(this.style.left?.split("px")[0])||0,this.dragStartTop=Number(this.style.top?.split("px")[0])||0,this.setIframePointerEvents("none")}),fn(()=>r.pipe(rt(a.pipe(vi(()=>{this.onDragEnd()}))))),rt(this.destroy$)).subscribe(c=>{let m=c.clientX-this.dragStartX,p=c.clientY-this.dragStartY,h=this.dragStartLeft+m,g=this.dragStartTop+p,M=this.resizedWidth,C=this.resizedHeight,_=window.innerWidth-M,w=this.boundaryService.getConfigValue().topOffset||0,S=window.innerHeight-C-w;h=Math.max(0,Math.min(_,h)),g=Math.max(w,Math.min(S,g)),this.renderer.setStyle(e,"left",`${h}px`),this.renderer.setStyle(e,"top",`${g}px`),this.style.left=`${h}px`,this.style.top=`${g}px`})}onDragEnd(){this.isDraggingSignal.set(!1),this.setIframePointerEvents(""),this.cdr.markForCheck()}setIframePointerEvents(e){let n=this.windowWrapper()?.nativeElement;n&&n.querySelectorAll("iframe").forEach(o=>{this.renderer.setStyle(o,"pointer-events",e)})}onWindowResize(){this.style=this.boundaryService.constrainWindowPosition(this.style),this.applyStyleToElement()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-web-console-inline"]],viewQuery:function(n,o){n&1&&tn(o.windowWrapper,vDe,5),n&2&&nn()},hostBindings:function(n,o){n&1&&v("resize",function(){return o.onWindowResize()},br)},inputs:{node:[1,"node"],controller:[1,"controller"],project:[1,"project"],zIndex:[1,"zIndex"]},outputs:{closeWindow:"closeWindow",windowFocused:"windowFocused",windowMinimized:"windowMinimized"},decls:22,vars:15,consts:[["windowWrapper",""],["mwlResizable","",1,"web-console-inline",3,"mousedown","resizeStart","resizeEnd","ngStyle","validateResize","enableGhostResize"],[1,"web-console-inline__content"],[1,"web-console-inline-header"],[1,"web-console-inline-header__title"],[1,"header-icon"],[1,"node-info"],[1,"web-console-inline-header__actions"],["mat-icon-button","","title","Minimize",1,"minimize-button",3,"click"],["mat-icon-button","","title","Close",1,"close-button",3,"click"],[1,"web-console-inline__iframe-container"],[1,"loading-overlay"],["allowfullscreen","",1,"web-console-inline__iframe",3,"src"],["mwlResizeHandle","",1,"resize-handle","resize-handle-top",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-right",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-bottom",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-left",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-top-left",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-top-right",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-bottom-left",3,"resizeEdges"],["mwlResizeHandle","",1,"resize-handle","resize-handle-bottom-right",3,"resizeEdges"],[1,"loading-icon"],["allowfullscreen","",1,"web-console-inline__iframe",3,"load","src"]],template:function(n,o){n&1&&(s(0,"div",1,0),v("mousedown",function(){return o.onWindowFocus()})("resizeStart",function(){return o.onResizeStart()})("resizeEnd",function(a){return o.onResizeEnd(a)}),A(2,TDe,8,16),s(3,"div",2)(4,"div",3)(5,"div",4)(6,"mat-icon",5),d(7,"terminal"),l(),s(8,"span"),d(9,"Web Console"),l(),s(10,"span",6),d(11),l()(),s(12,"div",7)(13,"button",8),v("click",function(){return o.toggleMinimize()}),s(14,"mat-icon"),d(15,"remove"),l()(),s(16,"button",9),v("click",function(){return o.close()}),s(17,"mat-icon"),d(18,"close"),l()()()(),s(19,"div",10),A(20,EDe,5,0,"div",11),A(21,DDe,1,1,"iframe",12),l()()()),n&2&&(yn("z-index",o.zIndex()),je("is-dragging",o.isDragging())("is-resizing",o.isResizing())("is-minimized",o.isMinimized()),x("ngStyle",o.style)("validateResize",o.validate)("enableGhostResize",!1),u(2),O(o.isMinimized()?-1:2),u(9),U(o.node().name),u(9),O(o.isLoading()?20:-1),u(),O(o.consoleUrl?21:-1))},dependencies:[Z,pm,te,se,$,ze,im,Wp],styles:[".web-console-inline[_ngcontent-%COMP%]{position:fixed;z-index:1000;background:var(--mat-sys-surface);border:2px solid var(--mat-sys-outline);border-radius:8px;box-shadow:0 8px 24px color-mix(in srgb,var(--mat-sys-shadow) 15%,transparent),0 4px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);overflow:visible;transition:box-shadow .2s ease;contain:layout style}.web-console-inline[_ngcontent-%COMP%]:hover{box-shadow:0 12px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 6px 12px color-mix(in srgb,var(--mat-sys-shadow) 12%,transparent)}.web-console-inline.is-dragging[_ngcontent-%COMP%]{box-shadow:0 16px 48px color-mix(in srgb,var(--mat-sys-shadow) 25%,transparent),0 8px 16px color-mix(in srgb,var(--mat-sys-shadow) 15%,transparent);opacity:.9;cursor:move;will-change:left,top}.web-console-inline.is-minimized[_ngcontent-%COMP%]{display:none}.web-console-inline__content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%;height:100%;overflow:hidden;border-radius:6px}.web-console-inline-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;background:var(--mat-sys-surface-container);border-bottom:1px solid var(--mat-sys-outline-variant);cursor:move;user-select:none;flex-shrink:0}.web-console-inline-header__title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:500;color:var(--mat-sys-on-surface)}.web-console-inline-header__title[_ngcontent-%COMP%] .header-icon[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-primary);width:14px;height:14px}.web-console-inline-header__title[_ngcontent-%COMP%] .node-info[_ngcontent-%COMP%]{font-size:10px;color:var(--mat-sys-on-surface-variant);font-weight:400;margin-left:4px;padding-left:4px;border-left:1px solid var(--mat-sys-outline-variant)}.web-console-inline-header__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:2px}.web-console-inline-header__actions[_ngcontent-%COMP%] .minimize-button[_ngcontent-%COMP%], .web-console-inline-header__actions[_ngcontent-%COMP%] .close-button[_ngcontent-%COMP%]{width:24px;height:24px;padding:0;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}.web-console-inline-header__actions[_ngcontent-%COMP%] .minimize-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], .web-console-inline-header__actions[_ngcontent-%COMP%] .close-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px;vertical-align:middle}.web-console-inline-header__actions[_ngcontent-%COMP%] .minimize-button[_ngcontent-%COMP%]:hover, .web-console-inline-header__actions[_ngcontent-%COMP%] .close-button[_ngcontent-%COMP%]:hover{background-color:var(--mat-sys-error-container);color:var(--mat-sys-error)}.web-console-inline__iframe-container[_ngcontent-%COMP%]{flex:1;position:relative;overflow:hidden;min-height:200px;height:100%}.web-console-inline__iframe[_ngcontent-%COMP%]{width:100%;height:100%;border:none;display:block}.loading-overlay[_ngcontent-%COMP%]{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--mat-sys-surface);z-index:1}.loading-overlay[_ngcontent-%COMP%] .loading-icon[_ngcontent-%COMP%]{font-size:48px;color:var(--mat-sys-primary);will-change:transform;animation:_ngcontent-%COMP%_spin 1s linear infinite}.loading-overlay[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface-variant)}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.resize-handle[_ngcontent-%COMP%]{position:absolute;z-index:100;opacity:0;transition:opacity .15s ease}.web-console-inline[_ngcontent-%COMP%]:hover .resize-handle[_ngcontent-%COMP%]{opacity:1}.resize-handle.resize-handle-top[_ngcontent-%COMP%]{top:-4px;left:12px;right:12px;height:12px;cursor:ns-resize;background:transparent}.resize-handle.resize-handle-right[_ngcontent-%COMP%]{top:12px;right:-4px;bottom:12px;width:12px;cursor:ew-resize;background:transparent}.resize-handle.resize-handle-bottom[_ngcontent-%COMP%]{bottom:-4px;left:12px;right:12px;height:12px;cursor:ns-resize;background:transparent}.resize-handle.resize-handle-left[_ngcontent-%COMP%]{top:12px;left:-4px;bottom:12px;width:12px;cursor:ew-resize;background:transparent}.resize-handle.resize-handle-top-left[_ngcontent-%COMP%]{top:-6px;left:-6px;width:20px;height:20px;cursor:nwse-resize;background:transparent}.resize-handle.resize-handle-top-right[_ngcontent-%COMP%]{top:-6px;right:-6px;width:20px;height:20px;cursor:nesw-resize;background:transparent}.resize-handle.resize-handle-bottom-left[_ngcontent-%COMP%]{bottom:-6px;left:-6px;width:20px;height:20px;cursor:nesw-resize;background:transparent}.resize-handle.resize-handle-bottom-right[_ngcontent-%COMP%]{bottom:-6px;right:-6px;width:20px;height:20px;cursor:nwse-resize;background:transparent}"],changeDetection:0})}return t})();var Wk=class{sourceNode;sourcePort;targetNode;targetPort;constructor(i,e,n,o){this.sourceNode=i,this.sourcePort=e,this.targetNode=n,this.targetPort=o}};var PDe=(t,i)=>i.name;function IDe(t,i){t&1&&(Vn(),s(0,"svg",8),F(1,"rect",10),l())}function ADe(t,i){t&1&&(Vn(),s(0,"svg",8),F(1,"rect",11),l())}function ODe(t,i){if(t&1){let e=j();s(0,"button",6),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.chooseInterface(o))}),s(1,"span",7),A(2,IDe,2,0,":svg:svg",8),A(3,ADe,2,0,":svg:svg",8),s(4,"span",9),d(5),l()()()}if(t&2){let e=i.$implicit;x("disabled",!e.available),u(2),O(e.available?2:-1),u(),O(e.available?-1:3),u(2),U(e.name)}}function NDe(t,i){if(t&1&&(s(0,"div",2),F(1,"span",3),s(2,"mat-menu",4,0),J(4,ODe,6,4,"button",5,PDe),l()()),t&2){let e=Re(3),n=b();yn("left",n.leftPosition)("top",n.topPosition),u(),x("matMenuTriggerFor",e),u(),yn("min-height",0),u(2),ee(n.ports)}}var x_=(()=>{class t{links=oe(void 0);chooseInterfaceChange=new ve;contextMenu=Ut(kn);sanitizer=f(lr);changeDetector=f(K);topPosition;leftPosition;node;ports;ngOnInit(){this.setPosition(0,0)}setPosition(e,n){this.topPosition=this.sanitizer.bypassSecurityTrustStyle(e+"px"),this.leftPosition=this.sanitizer.bypassSecurityTrustStyle(n+"px"),this.changeDetector.detectChanges()}open(e,n,o){this.node=e,this.filterNodePorts(),this.setPosition(n,o),this.contextMenu().openMenu()}filterNodePorts(){let e=[];this.links().forEach(n=>{n.nodes.forEach(o=>{o.node_id===this.node.node_id&&e.push(o)})}),this.ports=[],this.node.ports.forEach(n=>{let o=e.filter(r=>r.adapter_number===n.adapter_number);o.length===0||o.filter(r=>r.port_number===n.port_number).length===0?n.available=!0:n.available=!1,this.ports.push(n)})}chooseInterface(e){this.chooseInterfaceChange.emit({node:this.node,port:e})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-node-select-interface"]],viewQuery:function(n,o){n&1&&tn(o.contextMenu,kn,5),n&2&&nn()},inputs:{links:[1,"links"]},outputs:{chooseInterfaceChange:"chooseInterfaceChange"},decls:1,vars:1,consts:[["selectInterfaceMenu","matMenu"],[1,"context-menu",3,"left","top"],[1,"context-menu"],[3,"matMenuTriggerFor"],["panelClass","interface-menu-panel"],["mat-menu-item","",3,"disabled"],["mat-menu-item","",3,"click","disabled"],[1,"interface-item"],["width","10","height","10",1,"status-icon"],[1,"port"],["x","0","y","0","width","10","height","10","fill","green"],["x","0","y","0","width","10","height","10","fill","red"]],template:function(n,o){n&1&&A(0,NDe,6,7,"div",1),n&2&&O(o.node?0:-1)},dependencies:[Z,Qe,Fn,ot,kn],styles:[".context-menu[_ngcontent-%COMP%]{position:absolute}.context-menu-items[_ngcontent-%COMP%]{min-height:0}.interface-item[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px}.status-icon[_ngcontent-%COMP%]{flex-shrink:0}.port[_ngcontent-%COMP%]{white-space:nowrap}"],changeDetection:0})}return t})();var qk=(()=>{class t{links=oe(void 0);nodeSelectInterfaceMenu=Ut(x_);nodeClicked$;drawingLineTool=f(jg);nodesEventSource=f($l);linksEventSource=f(za);mapNodeToNode=f(jp);nodeToMapNode=f(Dg);portToMapPort=f(Eg);constructor(){}ngOnInit(){this.nodeClicked$=this.nodesEventSource.clicked.subscribe(e=>{let n=this.mapNodeToNode.convert(e.datum);this.nodeSelectInterfaceMenu().open(n,e.y,e.x)})}ngOnDestroy(){this.drawingLineTool.isDrawing()&&this.drawingLineTool.stop(),this.nodeClicked$.unsubscribe()}onChooseInterface(e){let n=this.nodeToMapNode.convert(e.node),o=this.portToMapPort.convert(e.port);if(this.drawingLineTool.isDrawing()){let r=this.drawingLineTool.stop();this.linksEventSource.created.emit(new Wk(r.node,r.port,n,o))}else this.drawingLineTool.start(n.x+n.width/2,n.y+n.height/2,{node:n,port:o})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-draw-link-tool"]],viewQuery:function(n,o){n&1&&tn(o.nodeSelectInterfaceMenu,x_,5),n&2&&nn()},inputs:{links:[1,"links"]},decls:1,vars:1,consts:[[3,"chooseInterfaceChange","links"]],template:function(n,o){n&1&&(s(0,"app-node-select-interface",0),v("chooseInterfaceChange",function(a){return o.onChooseInterface(a)}),l()),n&2&&x("links",o.links())},dependencies:[Z,x_],encapsulation:2,changeDetection:0})}return t})();var Xk=(()=>{class t{project=oe(void 0);controller=oe(void 0);uploader;template;toasterService=f(fe);dockerService=f(ys);qemuService=f(ra);iouService=f(ws);iosService=f(Ss);cdr=f(K);constructor(){}ngOnInit(){this.uploader=new Ka({url:""}),this.uploader.onAfterAddingFile=e=>{e.withCredentials=!1},this.uploader.onErrorItem=(e,n,o,r)=>{this.toasterService.error("An error has occured")},this.uploader.onCompleteItem=(e,n,o,r)=>{this.template.template_type==="qemu"?this.qemuService.addTemplate(this.controller(),this.template).subscribe({next:()=>this.onUploadComplete(),error:a=>{let c=a.error?.message||a.message||"Failed to add qemu template";this.toasterService.error(c),this.cdr.markForCheck()}}):this.template.template_type==="iou"?this.iouService.addTemplate(this.controller(),this.template).subscribe({next:()=>this.onUploadComplete(),error:a=>{let c=a.error?.message||a.message||"Failed to add iou template";this.toasterService.error(c),this.cdr.markForCheck()}}):this.template.template_type==="dynamips"?this.iosService.addTemplate(this.controller(),this.template).subscribe({next:()=>this.onUploadComplete(),error:a=>{let c=a.error?.message||a.message||"Failed to add ios template";this.toasterService.error(c),this.cdr.markForCheck()}}):this.template.template_type==="docker"&&this.dockerService.addTemplate(this.controller(),this.template).subscribe({next:()=>this.onUploadComplete(),error:a=>{let c=a.error?.message||a.message||"Failed to add docker template";this.toasterService.error(c),this.cdr.markForCheck()}})}}onUploadComplete(){this.toasterService.success("Appliance imported successfully"),this.uploader.queue=[],this.cdr.markForCheck()}uploadAppliance(e){let n=e.target.files[0],o=n.name,r=new FileReader,a;r.onloadend=()=>{let c=JSON.parse(r.result),m;if(c.qemu)a=new dp,a.template_type="qemu",a.adapter_type=c.qemu.adapter_type,a.adapters=c.qemu.adapters,a.ram=c.qemu.ram,a.options=c.qemu.options,a.console_type=c.qemu.console_type;else if(c.iou)a=new cp,a.template_type="iou",a.console_type=c.iou.console_type,a.console_auto_start=c.iou.console_auto_start,a.ethernet_adapters=c.iou.ethernet_adapters,a.l1_keepalives=c.iou.l1_keepalives,a.use_default_iou_values=c.iou.use_default_iou_values,a.nvram=c.iou.nvram,a.ram=c.iou.ram,a.serial_adapters=c.iou.serial_adapters;else if(c.dynamips)a=new sp,a.template_type="dynamips",a.platform=c.dynamips.platform,a.ram=c.dynamips.ram,a.nvram=c.dynamips.nvram,a.startup_config=c.dynamips.startup_config,a.wic0=c.dynamips.wic0,a.wic1=c.dynamips.wic1,a.wic2=c.dynamips.wic2,a.slot0=c.dynamips.slot0,a.slot1=c.dynamips.slot1,a.slot2=c.dynamips.slot2,a.slot3=c.dynamips.slot3,a.slot4=c.dynamips.slot4,a.slot5=c.dynamips.slot5,a.slot6=c.dynamips.slot6,a.slot7=c.dynamips.slot7;else if(c.docker)a=new m_,a.template_type="docker",a.adapters=c.docker.adapters,a.console_type=c.docker.console_type,a.image=c.docker.image;else{this.toasterService.error("Template type not supported");return}a.name=c.name,a.category=c.category,a.builtin=!1,a.default_name_format="{name}-{0}",a.tags=c.tags||[],a.compute_id="vm",a.category==="guest"?a.symbol=":/symbols/computer.svg":a.symbol=`:/symbols/${a.category}_guest.svg`,this.template=a,this.cdr.markForCheck();let p=this.getUploadPath(this.controller(),o);this.uploader.queue.forEach(g=>g.url=p);let h=this.uploader.queue[0];this.uploader.uploadItem(h)},r.readAsText(n)}getUploadPath(e,n){return`${e.protocol}//${e.host}:${e.port}/${Ai.current_version}/images/upload/${n}`}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-import-appliance"]],inputs:{project:[1,"project"],controller:[1,"controller"]},decls:0,vars:0,template:function(n,o){},dependencies:[Z],encapsulation:2,changeDetection:0})}return t})();var Qk=(()=>{class t{data;dialogRef=f(Pe);confirmActionData={actionType:"start",isAction:!1};constructor(e){this.data=e}ngOnInit(){this.confirmActionData.actionType=this.data}confirmAction(){this.confirmActionData.isAction=!0,this.dialogRef.close(this.confirmActionData)}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-nodes-menu-confirmation-dialog"]],decls:10,vars:2,consts:[["mat-dialog-title","",1,"nodes-menu-confirmation-dialog__title"],[1,"nodes-menu-confirmation-dialog__content"],["align","end"],["mat-button","","mat-dialog-close",""],["mat-button","","cdkFocusInitial","",3,"click"]],template:function(n,o){n&1&&(s(0,"h2",0),d(1),l(),F(2,"mat-divider"),s(3,"mat-dialog-content",1),d(4),l(),s(5,"mat-dialog-actions",2)(6,"button",3),d(7,"No"),l(),s(8,"button",4),v("click",function(){return o.confirmAction()}),d(9,"Yes"),l()()),n&2&&(u(),X("Confirm ",o.confirmActionData.actionType," All"),u(3),X(" Are you sure you want to ",o.confirmActionData.actionType,` all devices?
|
||
`))},dependencies:[Ce,Kc,Ve,Be,Wt,$,le,Ea,ls],encapsulation:2,changeDetection:0})}return t})();var Yk=(()=>{class t{nodeService=f(wt);nodeConsoleService=f(gr);nodesDataSource=f(ci);toasterService=f(fe);controllerService=f(We);settingsService=f(ea);mapSettingsService=f(To);dialog=f(Je);cdr=f(K);project=oe(void 0);controller=oe(void 0);async startConsoleForAllNodes(){this.mapSettingsService.openConsolesInWidget?this.nodeConsoleService.openConsolesForAllNodesInWidget(this.nodesDataSource.getItems()):this.nodeConsoleService.openConsolesForAllNodesInNewTabs(this.nodesDataSource.getItems())}startNodes(){this.nodeService.startAll(this.controller(),this.project()).subscribe({next:()=>this.toasterService.success("All nodes successfully started"),error:e=>{let n=e.error?.message||e.message||"Failed to start nodes";this.toasterService.error(n),this.cdr.markForCheck()}})}stopNodes(){this.nodeService.stopAll(this.controller(),this.project()).subscribe({next:()=>this.toasterService.success("All nodes successfully stopped"),error:e=>{let n=e.error?.message||e.message||"Failed to stop nodes";this.toasterService.error(n),this.cdr.markForCheck()}})}suspendNodes(){this.nodeService.suspendAll(this.controller(),this.project()).subscribe({next:()=>this.toasterService.success("All nodes successfully suspended"),error:e=>{let n=e.error?.message||e.message||"Failed to suspend nodes";this.toasterService.error(n),this.cdr.markForCheck()}})}reloadNodes(){this.nodeService.reloadAll(this.controller(),this.project()).subscribe({next:()=>this.toasterService.success("All nodes successfully reloaded"),error:e=>{let n=e.error?.message||e.message||"Failed to reload nodes";this.toasterService.error(n),this.cdr.markForCheck()}})}resetNodes(){this.nodeService.resetAllNodes(this.controller(),this.project()).subscribe({next:()=>this.toasterService.success("Successfully reset all console connections"),error:e=>{let n=e.error?.message||e.message||"Failed to reset nodes";this.toasterService.error(n),this.cdr.markForCheck()}})}confirmControlsActions(e){this.dialog.open(Qk,{panelClass:["base-confirmation-dialog-panel","confirmation-warning-panel"],autoFocus:!1,disableClose:!0,data:e}).afterClosed().subscribe(o=>{!o||!o.isAction||(o.actionType=="start"?this.startNodes():o.actionType=="stop"?this.stopNodes():o.actionType=="reload"?this.reloadNodes():o.actionType=="suspend"?this.suspendNodes():o.actionType=="reset"&&this.resetNodes())})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-nodes-menu"]],inputs:{project:[1,"project"],controller:[1,"controller"]},decls:19,vars:0,consts:[[1,"menu-button-group"],["matTooltip","Console connect to all nodes","matTooltipClass","custom-tooltip","mat-icon-button","",1,"menu-button",3,"click"],["matTooltip","Start/Resume all nodes","matTooltipClass","custom-tooltip","mat-icon-button","",1,"menu-button",3,"click"],["matTooltip","Suspend all nodes","matTooltipClass","custom-tooltip","mat-icon-button","",1,"menu-button",3,"click"],["matTooltip","Stop all nodes","matTooltipClass","custom-tooltip","mat-icon-button","",1,"menu-button",3,"click"],["matTooltip","Reload all nodes","matTooltipClass","custom-tooltip","mat-icon-button","",1,"menu-button",3,"click"],["matTooltip","Reset all console connections","matTooltipClass","custom-tooltip","mat-icon-button","",1,"menu-button",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"button",1),v("click",function(){return o.startConsoleForAllNodes()}),s(2,"mat-icon"),d(3,"web_asset"),l()(),s(4,"button",2),v("click",function(){return o.confirmControlsActions("start")}),s(5,"mat-icon"),d(6,"play_arrow"),l()(),s(7,"button",3),v("click",function(){return o.confirmControlsActions("suspend")}),s(8,"mat-icon"),d(9,"pause"),l()(),s(10,"button",4),v("click",function(){return o.confirmControlsActions("stop")}),s(11,"mat-icon"),d(12,"stop"),l()(),s(13,"button",5),v("click",function(){return o.confirmControlsActions("reload")}),s(14,"mat-icon"),d(15,"replay"),l()(),s(16,"button",6),v("click",function(){return o.confirmControlsActions("reset")}),s(17,"mat-icon"),d(18,"compare_arrows"),l()()())},dependencies:[Z,Ce,$,ze,te,se,Gt,Kt],styles:[".marked[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.menu-button[_ngcontent-%COMP%]{margin:0 4px;transition:transform .1s ease}.menu-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary)}.menu-button[_ngcontent-%COMP%]:hover{transform:scale(1.2)}"],changeDetection:0})}return t})();var OU=(()=>{class t{transform(e,n){return e?n?(n=n.toLowerCase(),e.filter(o=>o.name.toLowerCase().includes(n))):e:[]}static \u0275fac=function(n){return new(n||t)};static \u0275pipe=Cr({name:"templatefilter",type:t,pure:!0})}return t})();var RDe=(t,i)=>i.name,FDe=(t,i)=>i.value;function LDe(t,i){if(t&1&&(s(0,"mat-option",8),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function BDe(t,i){if(t&1&&(s(0,"mat-option",8),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e.name," ")}}function VDe(t,i){if(t&1&&(s(0,"mat-option",8),d(1),l()),t&2){let e=i.$implicit;x("value",e.value),u(),X(" ",e.display," ")}}function zDe(t,i){if(t&1){let e=j();s(0,"mat-form-field",12)(1,"mat-select",18),Dh("valueChange",function(o){D(e);let r=b();return Eh(r.selectedTemplate().compute_id,o)||(r.selectedTemplate().compute_id=o),P(o)}),J(2,VDe,2,2,"mat-option",8,FDe),l()()}if(t&2){let e=b();u(),Th("value",e.selectedTemplate().compute_id),x("compareWith",e.compareControllers),u(),ee(e.nodeControllers)}}var Kk=(()=>{class t{data;dialogRef=f(Pe);templateService=f(Tl);computeService=f(Lo);formBuilder=f(jt);toasterService=f(fe);nonNegativeValidator=f(Hl);cd=f(K);controller;project;templateTypes=["cloud","ethernet_hub","ethernet_switch","docker","dynamips","vpcs","virtualbox","vmware","iou","qemu"];configurationForm;positionForm;templates=[];filteredTemplates=[];nodeControllers=[{display:"local",value:"local"}];searchText=ae("");selectedType=ae("");selectedTemplate=ae(null);constructor(e){this.data=e,this.controller=e.controller,this.project=e.project,this.configurationForm=this.formBuilder.group({numberOfNodes:new re(1,[be.compose([be.required,this.nonNegativeValidator.get])])}),this.positionForm=this.formBuilder.group({top:new re(0,be.required),left:new re(0,be.required)})}ngOnInit(){this.templateService.list(this.controller).subscribe({next:e=>{this.filteredTemplates=e,this.templates=e,this.cd.markForCheck()},error:e=>{let n=e.error?.message||e.message||"Failed to load templates";this.toasterService.error(n),this.cd.markForCheck()}}),this.templateService.newTemplateCreated.subscribe(e=>{this.templates.push(e),this.filteredTemplates=[...this.templates],this.cd.markForCheck()}),this.computeService.getComputes(this.controller).subscribe({next:e=>{let n=e.filter(o=>o.compute_id!=="local").map(o=>{let r=o.compute_id.slice(-8);return{display:`${o.name||o.compute_id} (${r})`,value:o.compute_id}});this.nodeControllers=[{display:"local",value:"local"},...n],this.cd.markForCheck()},error:()=>{this.nodeControllers=[{display:"local",value:"local"}],this.cd.markForCheck()}})}onNoClick(){this.dialogRef.close()}compareControllers(e,n){return e===n}filterTemplates(){let e=this.templates.filter(n=>n.name.toLowerCase().includes(this.searchText().toLowerCase()));this.selectedType()===""||this.selectedType()==="all"?this.filteredTemplates=e:this.filteredTemplates=e.filter(n=>n.template_type===this.selectedType())}chooseTemplate(){if(this.selectedTemplate()){let e=this.selectedTemplate();(e.template_type==="cloud"||e.template_type==="ethernet_hub"||e.template_type==="ethernet_switch")&&(e.compute_id="local")}}onAddClick(){if(!this.selectedTemplate()||this.filteredTemplates.length===0)this.toasterService.error("Please firstly choose template.");else if(!this.positionForm.valid||!this.configurationForm.valid||!this.selectedTemplate().compute_id)this.toasterService.error("Please fill all required fields.");else{let e=this.positionForm.get("left").value,n=this.positionForm.get("top").value;if(e>this.project.scene_width/2||e<-(this.project.scene_width/2)||n>this.project.scene_height/2||n<-this.project.scene_height)this.toasterService.error("Please set correct position values.");else{let o={template:this.selectedTemplate(),controller:this.selectedTemplate().compute_id,numberOfNodes:this.configurationForm.get("numberOfNodes").value,x:e,y:n};this.dialogRef.close(o)}}}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-template-list-dialog"]],inputs:{searchText:[1,"searchText"],selectedType:[1,"selectedType"],selectedTemplate:[1,"selectedTemplate"]},outputs:{searchText:"searchTextChange",selectedType:"selectedTypeChange",selectedTemplate:"selectedTemplateChange"},decls:42,vars:12,consts:[[1,"title-container"],["mat-dialog-title",""],["mat-button","","color","accent",1,"top-button",3,"click","routerLink"],["mat-dialog-content","",1,"content"],["floatPlaceholder","never",1,"form-field"],["matInput","","placeholder","Search by name",3,"input","value"],[1,"form-field"],["placeholder","Filter templates by type",3,"selectionChange","value"],[3,"value"],["placeholder","Choose template",3,"selectionChange","value","compareWith"],[3,"formGroup"],["type","number","matInput","","formControlName","numberOfNodes","placeholder","Enter number of nodes (default value is 1)"],[1,"form-field","compute-select"],["matInput","","type","number","formControlName","left"],["matInput","","type","number","formControlName","top"],["mat-dialog-actions","","align","end"],["mat-button","","tabindex","-1","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",1,"addButton",3,"click"],["placeholder","Choose controller for node",3,"valueChange","value","compareWith"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"h1",1),d(2,"Add a node"),l(),s(3,"button",2),v("click",function(){return o.onNoClick()}),d(4," Go to template preferences "),l()(),s(5,"div",3)(6,"div",0)(7,"h6"),d(8,"Template"),l()(),s(9,"mat-form-field",4)(10,"input",5),v("input",function(a){return o.searchText.set(a.target.value),o.filterTemplates()}),l()(),s(11,"mat-form-field",6)(12,"mat-select",7),v("selectionChange",function(a){return o.selectedType.set(a.value),o.filterTemplates()}),J(13,LDe,2,2,"mat-option",8,Fe),l()(),s(15,"mat-form-field",6)(16,"mat-select",9),v("selectionChange",function(a){return o.selectedTemplate.set(a.value),o.chooseTemplate()}),J(17,BDe,2,2,"mat-option",8,RDe),on(19,"templatefilter"),l()(),s(20,"div",0)(21,"h6"),d(22,"Configuration"),l()(),s(23,"form",10)(24,"mat-form-field",6),F(25,"input",11),l()(),A(26,zDe,4,2,"mat-form-field",12),s(27,"div",0)(28,"h6"),d(29,"Position"),l()(),s(30,"form",10),d(31," Left:\xA0 "),s(32,"mat-form-field"),F(33,"input",13),l(),d(34," Top:\xA0 "),s(35,"mat-form-field"),F(36,"input",14),l()()(),s(37,"div",15)(38,"button",16),v("click",function(){return o.onNoClick()}),d(39,"Close"),l(),s(40,"button",17),v("click",function(){return o.onAddClick()}),d(41," Add "),l()()),n&2&&(u(3),x("routerLink",no("/controller/",o.controller==null?null:o.controller.id,"/preferences")),u(7),x("value",o.searchText()),u(2),x("value",o.selectedType()),u(),ee(o.templateTypes),u(3),x("value",o.selectedTemplate())("compareWith",o.compareControllers),u(),ee($r(19,9,o.filteredTemplates,o.searchText())),u(6),x("formGroup",o.configurationForm),u(3),O(o.selectedTemplate()?26:-1),u(4),x("formGroup",o.positionForm))},dependencies:[Z,ct,Ue,vt,xi,mt,He,pt,bt,at,cn,Ce,Ve,Be,Wt,$,le,Me,ke,we,Te,Mt,At,St,OU],styles:[".header[_ngcontent-%COMP%]{min-height:64px;display:flex;align-items:baseline;padding:8px 24px 0;font-size:18px;justify-content:space-between}.mat-table[_ngcontent-%COMP%]{height:200px;overflow:scroll}.mat-form-field[_ngcontent-%COMP%]{font-size:14px;flex-grow:1}.form-field[_ngcontent-%COMP%]{width:100%}div[_ngcontent-%COMP%]{scrollbar-color:darkgrey var(--mat-sys-surface);scrollbar-width:thin}h6[_ngcontent-%COMP%]{margin-top:4px;margin-bottom:8px;color:var(--mat-sys-primary)}mat-table[_ngcontent-%COMP%]{scrollbar-color:darkgrey var(--mat-sys-surface);scrollbar-width:thin}.filterBox[_ngcontent-%COMP%]{display:flex;justify-content:space-between}.title-container[_ngcontent-%COMP%]{display:flex;align-items:baseline;justify-content:space-between}.compute-select[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();var jDe=["selectorContainer"],$De=(t,i)=>i.compute_id;function HDe(t,i){t&1&&(s(0,"mat-icon",7),d(1,"check_circle"),l())}function UDe(t,i){t&1&&(s(0,"mat-icon",8),d(1,"cancel"),l())}function GDe(t,i){if(t&1){let e=j();s(0,"button",4),v("click",function(){let o=D(e).$implicit,r=b();return P(r.selectCompute(o.compute_id))}),s(1,"div",5)(2,"span",6),d(3),l(),A(4,HDe,2,0,"mat-icon",7)(5,UDe,2,0,"mat-icon",8),l(),s(6,"div",9)(7,"span",10)(8,"span",11),d(9,"CPU:"),l(),s(10,"span"),d(11),l()(),s(12,"span",10)(13,"span",12),d(14,"MEM:"),l(),s(15,"span"),d(16),l()(),s(17,"span",10)(18,"span",13),d(19,"DISK:"),l(),s(20,"span"),d(21),l()()()()}if(t&2){let e=i.$implicit,n=i.$index,o=b();je("compute-selector__item--even",n%2===1),u(3),U(o.getComputeDisplayName(e)),u(),O(e.connected?4:5),u(6),Mo(o.getUsageColorClass(e,"cpu")),u(),U(o.getCpuInfo(e)),u(4),Mo(o.getUsageColorClass(e,"mem")),u(),U(o.getMemoryInfo(e)),u(4),Mo(o.getUsageColorClass(e,"disk")),u(),U(o.getDiskInfo(e))}}var NU=(()=>{class t{cd=f(K);selectorContainer;computes=oe.required();x=oe.required();y=oe.required();MARGIN=10;actualWidth=me(200);actualHeight=me(120);resizeObserver;computeSelected=new ve;selectorX=ri(()=>{let e=this.x(),n=window.innerWidth,o=this.actualWidth();return e+o+this.MARGIN>n?e-o-this.MARGIN:e+this.MARGIN});selectorY=ri(()=>{let e=this.y(),n=window.innerHeight,o=this.actualHeight();return e+o+this.MARGIN>n?e-o-this.MARGIN:e+this.MARGIN});constructor(){this.resizeObserver=new ResizeObserver(e=>{for(let n of e)this.actualWidth.set(n.contentRect.width),this.actualHeight.set(n.contentRect.height);this.cd.markForCheck()})}ngAfterViewInit(){if(this.selectorContainer?.nativeElement){let e=this.selectorContainer.nativeElement.getBoundingClientRect();this.actualWidth.set(e.width),this.actualHeight.set(e.height),this.cd.markForCheck(),this.resizeObserver.observe(this.selectorContainer.nativeElement)}setTimeout(()=>{this.selectorContainer?.nativeElement&&this.selectorContainer.nativeElement.focus()},0)}ngOnDestroy(){this.resizeObserver&&this.resizeObserver.disconnect()}selectCompute(e){this.computeSelected.emit(e)}getComputeDisplayName(e){return e.compute_id==="local"?`${e.name} (controller)`:`${e.name} (${e.host}:${e.port})`}getCpuInfo(e){let n=e.capabilities?.cpus||0;return`${e.cpu_usage_percent||0}% / ${n}c`}getMemoryInfo(e){let n=e.capabilities?.memory||0,o=e.memory_usage_percent||0,r=this.bytesToGB(n);return`${(r*o/100).toFixed(1)}/${r.toFixed(0)} GB`}getDiskInfo(e){return`${e.disk_usage_percent||0}%`}getUsageColorClass(e,n){let o;switch(n){case"cpu":o=e.cpu_usage_percent||0;break;case"mem":o=e.memory_usage_percent||0;break;case"disk":o=e.disk_usage_percent||0;break}return o<60?"compute-selector__usage--low":o<85?"compute-selector__usage--medium":"compute-selector__usage--high"}bytesToGB(e){return e/(1024*1024*1024)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-compute-selector"]],viewQuery:function(n,o){if(n&1&&gn(jDe,5),n&2){let r;gt(r=_t())&&(o.selectorContainer=r.first)}},inputs:{computes:[1,"computes"],x:[1,"x"],y:[1,"y"]},outputs:{computeSelected:"computeSelected"},decls:5,vars:4,consts:[["selectorContainer",""],["tabindex","0",1,"compute-selector"],[1,"compute-selector__list"],["mat-button","",1,"compute-selector__item",3,"compute-selector__item--even"],["mat-button","",1,"compute-selector__item",3,"click"],[1,"compute-selector__item-main"],[1,"compute-selector__item-name"],[1,"compute-selector__status","compute-selector__status--connected"],[1,"compute-selector__status","compute-selector__status--disconnected"],[1,"compute-selector__item-info"],[1,"compute-selector__info-item"],[1,"compute-selector__label","compute-selector__label--cpu"],[1,"compute-selector__label","compute-selector__label--mem"],[1,"compute-selector__label","compute-selector__label--disk"]],template:function(n,o){n&1&&(s(0,"div",1,0)(2,"div",2),J(3,GDe,22,13,"button",3,$De),l()()),n&2&&(yn("left",o.selectorX(),"px")("top",o.selectorY(),"px"),u(3),ee(o.computes()))},dependencies:[Z,te,se,$,le],styles:[".compute-selector[_ngcontent-%COMP%]{position:fixed;width:fit-content;min-width:200px;max-width:400px;background:var(--mat-sys-surface);border:1px solid var(--mat-sys-outline-variant);border-radius:8px;box-shadow:var(--mat-sys-shadow);z-index:1000;overflow:hidden;padding:4px;outline:none}.compute-selector[_ngcontent-%COMP%]:focus{outline:none}.compute-selector__list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px}.compute-selector__item[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;width:100%;padding:8px 12px;border-radius:6px;text-align:left;transition:background-color .15s ease}.compute-selector__item-main[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:8px}.compute-selector__item-info[_ngcontent-%COMP%]{display:flex;gap:12px;width:100%}.compute-selector__info-item[_ngcontent-%COMP%]{display:flex;gap:4px;font-size:12px;color:var(--mat-sys-on-surface-variant);white-space:nowrap}.compute-selector__label[_ngcontent-%COMP%]{font-weight:500;color:var(--mat-sys-primary)}.compute-selector__usage[_ngcontent-%COMP%]{font-weight:500}.compute-selector__usage--low[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.compute-selector__usage--medium[_ngcontent-%COMP%]{color:var(--mat-sys-tertiary)}.compute-selector__usage--high[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.compute-selector__item[_ngcontent-%COMP%]:hover, .compute-selector__item--even[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-highest)}.compute-selector__item-name[_ngcontent-%COMP%]{flex:1;font-size:13px;color:var(--mat-sys-on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compute-selector__status[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px;flex-shrink:0}.compute-selector__status--connected[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.compute-selector__status--disconnected[_ngcontent-%COMP%]{color:var(--mat-sys-error)}"],changeDetection:0})}return t})();var WDe=["menuTrigger"],RU=()=>({standalone:!0});function qDe(t,i){if(t&1&&(s(0,"mat-option",10),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function XDe(t,i){if(t&1){let e=j();s(0,"div",14)(1,"div",15),v("dragStart",function(o){D(e);let r=b(2).$index,a=b();return P(a.dragStart(o,a.filteredTemplates[r]))})("dragEnd",function(o){D(e);let r=b(2).$index,a=b();return P(a.dragEnd(o,a.filteredTemplates[r+1]))}),F(2,"img",16),l(),s(3,"span",17),d(4),l()()}if(t&2){let e=b(2).$index,n=b();u(),x("ghostElementAppendTo",n.bodyElement),u(),x("src",n.getImageSourceForTemplate(n.filteredTemplates[e+1]),$a),u(2),U(n.filteredTemplates[e+1].name)}}function QDe(t,i){if(t&1){let e=j();s(0,"div",14)(1,"div",15),v("dragStart",function(o){D(e);let r=b(2).$index,a=b();return P(a.dragStart(o,a.filteredTemplates[r]))})("dragEnd",function(o){D(e);let r=b(2).$index,a=b();return P(a.dragEnd(o,a.filteredTemplates[r+2]))}),F(2,"img",16),l(),s(3,"span",17),d(4),l()()}if(t&2){let e=b(2).$index,n=b();u(),x("ghostElementAppendTo",n.bodyElement),u(),x("src",n.getImageSourceForTemplate(n.filteredTemplates[e+2]),$a),u(2),U(n.filteredTemplates[e+2].name)}}function YDe(t,i){if(t&1){let e=j();s(0,"div",14)(1,"div",15),v("dragStart",function(o){D(e);let r=b(2).$index,a=b();return P(a.dragStart(o,a.filteredTemplates[r]))})("dragEnd",function(o){D(e);let r=b(2).$index,a=b();return P(a.dragEnd(o,a.filteredTemplates[r+3]))}),F(2,"img",16),l(),s(3,"span",17),d(4),l()()}if(t&2){let e=b(2).$index,n=b();u(),x("ghostElementAppendTo",n.bodyElement),u(),x("src",n.getImageSourceForTemplate(n.filteredTemplates[e+3]),$a),u(2),U(n.filteredTemplates[e+3].name)}}function KDe(t,i){if(t&1){let e=j();s(0,"div",13)(1,"div",14)(2,"div",15),v("dragStart",function(o){D(e);let r=b().$index,a=b();return P(a.dragStart(o,a.filteredTemplates[r]))})("dragEnd",function(o){D(e);let r=b().$index,a=b();return P(a.dragEnd(o,a.filteredTemplates[r]))}),F(3,"img",16),l(),s(4,"span",17),d(5),l()(),A(6,XDe,5,3,"div",14),A(7,QDe,5,3,"div",14),A(8,YDe,5,3,"div",14),l()}if(t&2){let e=b().$index,n=b();u(2),x("ghostElementAppendTo",n.bodyElement),u(),x("src",n.getImageSourceForTemplate(n.filteredTemplates[e]),$a),u(2),U(n.filteredTemplates[e].name),u(),O(n.filteredTemplates[e+1]?6:-1),u(),O(n.filteredTemplates[e+2]?7:-1),u(),O(n.filteredTemplates[e+3]?8:-1)}}function ZDe(t,i){if(t&1&&A(0,KDe,9,6,"div",13),t&2){let e=i.$index;O(e%4===0?0:-1)}}function JDe(t,i){if(t&1&&F(0,"img",20),t&2){let e=b(2);x("src",e.getImageSourceForTemplate(e.pendingTemplate()),$a)}}function ePe(t,i){if(t&1){let e=j();s(0,"div",18),v("click",function(){D(e);let o=b();return P(o.onComputeSelectorCancelled())}),s(1,"div",19),A(2,JDe,1,1,"img",20),l(),s(3,"app-compute-selector",21),v("computeSelected",function(o){D(e);let r=b();return P(r.onComputeSelected(o))}),l()()}if(t&2){let e=b();u(),yn("left",e.ghostIconScreenPosition().x,"px")("top",e.ghostIconScreenPosition().y,"px"),u(),O(e.pendingTemplate()?2:-1),u(),x("computes",e.availableComputes())("x",e.lastPageX())("y",e.lastPageY())}}var Zk=(()=>{class t{document;dialog=f(Je);templateService=f(Tl);symbolService=f(kl);domSanitizer=f(lr);themeService=f(yi);overlayContainer=f(gm);context=f(jo);cd=f(K);computeService=f(Lo);notificationService=f(wc);toasterService=f(fe);controller=oe(void 0);project=oe(void 0);nodeCreationChange=new ve;menuTrigger;overlay;templates=[];filteredTemplates=[];templateSymbolBlobUrls=new Map;bodyElement;constructor(e){this.document=e,this.overlay=this.overlayContainer.getContainerElement(),this.bodyElement=this.document.body}templateTypes=["all","cloud","ethernet_hub","ethernet_switch","docker","dynamips","vpcs","virtualbox","vmware","iou","qemu"];searchText=ae("");selectedType=ae("all");lastPageX=me(0);lastPageY=me(0);isDragging=me(!1);mouseOffsetX=0;mouseOffsetY=0;dragElement=null;showComputeSelector=me(!1);availableComputes=me([]);pendingNodePosition=me(null);pendingTemplate=me(null);cachedComputes=me([]);ghostIconScreenPosition=ri(()=>{let e=this.pendingNodePosition();if(!e)return{x:0,y:0};let n=this.context.transformation.k,o=this.context.getZeroZeroTransformationPoint(),r=e.x*n+o.x+this.context.transformation.x,a=e.y*n+o.y+this.context.transformation.y;return{x:r,y:a}});subscription;themeSubscription;isLightThemeEnabled=!1;controllerWatcher=Ns(()=>{let e=this.controller();e&&e.id&&this.templates.length===0&&this.loadTemplates()});ngOnInit(){this.subscription=this.templateService.newTemplateCreated.subscribe(e=>{this.templates.push(e),this.loadTemplateSymbolBlobs([e]),this.cd.markForCheck()}),this.subscription.add(this.notificationService.computeCacheUpdated.subscribe(e=>{this.cachedComputes.set(e),this.cd.markForCheck()})),this.notificationService.hasCachedData()&&this.cachedComputes.set(this.notificationService.getCachedComputes()),this.controller()&&this.controller().id&&this.loadTemplates(),this.symbolService.list(this.controller()),this.isLightThemeEnabled=this.themeService.getThemeType()==="light",this.themeSubscription=this.themeService.themeChanged.subscribe(()=>{this.isLightThemeEnabled=this.themeService.getThemeType()==="light"})}loadTemplates(){this.templateService.list(this.controller()).subscribe({next:e=>{this.filteredTemplates=e,this.sortTemplates(),this.templates=e,this.loadTemplateSymbolBlobs(e),this.cd.markForCheck()},error:e=>{let n=e.error?.message||e.message||"Failed to load templates";this.toasterService.error(n),this.cd.markForCheck()}})}loadTemplateSymbolBlobs(e){let n=new Map;e.forEach(r=>{let a=r.symbol,c;a.startsWith(":/")?c=`/symbols/${a}/raw`:c=`/symbols/${a}/raw`,n.set(a,c)});let o=Array.from(n.values());lo(o.map(r=>this.symbolService.getSymbolBlobUrl(this.controller(),r))).subscribe(r=>{o.forEach((a,c)=>{for(let[m,p]of n.entries())if(p===a){this.templateSymbolBlobUrls.set(m,r[c]);break}}),this.cd.markForCheck()})}sortTemplates(){this.filteredTemplates=this.filteredTemplates.sort((e,n)=>e.name<n.name?-1:1)}filterTemplates(){let e=this.templates.filter(n=>n.name.toLowerCase().includes(this.searchText().toLowerCase()));this.selectedType()==="all"||!this.selectedType()?this.filteredTemplates=e:this.filteredTemplates=e.filter(n=>n.template_type===this.selectedType()),this.sortTemplates()}dragStart(e,n){this.menuTrigger&&this.menuTrigger.closeMenu();let o=window.event,r=o?.clientX||0,a=o?.clientY||0,c=o?.target;if(c){let h=c.getBoundingClientRect();this.mouseOffsetX=r-h.left,this.mouseOffsetY=a-h.top,this.dragElement=c}this.isDragging.set(!0),this.lastPageX.set(r),this.lastPageY.set(a);let m=h=>{this.isDragging()&&(this.lastPageX.set(h.clientX),this.lastPageY.set(h.clientY))},p=()=>{this.isDragging.set(!1),document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",p)};document.addEventListener("mousemove",m),document.addEventListener("mouseup",p,{once:!0})}dragEnd(e,n){let o=this.lastPageX(),r=this.lastPageY(),a=this.context.size.width>0?this.context.size.width/2:this.project().scene_width/2,c=this.context.size.height>0?this.context.size.height/2:this.project().scene_height/2,m=(o-(a+this.context.transformation.x))/this.context.transformation.k,p=(r-(c+this.context.transformation.y))/this.context.transformation.k,h=Math.round(m-this.mouseOffsetX),g=Math.round(p-this.mouseOffsetY),M=this.cachedComputes();M.length===0?this.computeService.getComputes(this.controller()).subscribe({next:C=>{this.notificationService.setInitialComputes(C),this.cachedComputes.set(C),this.processNodeCreation(n,h,g,C)},error:C=>{console.error("Failed to load computes:",C);let _={template:n,controller:"local",numberOfNodes:1,x:h,y:g};this.nodeCreationChange.emit(_)}}):this.processNodeCreation(n,h,g,M)}processNodeCreation(e,n,o,r){if(r.length===1){let a={template:e,controller:r[0].compute_id,numberOfNodes:1,x:n,y:o};this.nodeCreationChange.emit(a)}else{this.pendingNodePosition.set({x:n,y:o}),this.pendingTemplate.set(e);let a=[...r].sort((c,m)=>c.compute_id==="local"?-1:m.compute_id==="local"?1:(c.name||"").localeCompare(m.name||""));this.availableComputes.set(a),this.showComputeSelector.set(!0),this.cd.markForCheck()}}clearPendingState(){this.showComputeSelector.set(!1),this.pendingNodePosition.set(null),this.pendingTemplate.set(null)}onComputeSelected(e){let n=this.pendingNodePosition(),o=this.pendingTemplate();if(n&&o){let r={template:o,controller:e,numberOfNodes:1,x:n.x,y:n.y};this.nodeCreationChange.emit(r)}this.clearPendingState()}onComputeSelectorCancelled(){this.clearPendingState()}openDialog(){this.dialog.open(Kk,{panelClass:["base-dialog-panel","template-dialog-panel"],data:{controller:this.controller(),project:this.project()},autoFocus:!1}).afterClosed().subscribe(n=>{n!==null&&this.nodeCreationChange.emit(n)})}getImageSourceForTemplate(e){return this.templateSymbolBlobUrls.get(e.symbol)||""}onMenuClosed(){}ngOnDestroy(){this.subscription.unsubscribe()}static \u0275fac=function(n){return new(n||t)(st(Pi))};static \u0275cmp=L({type:t,selectors:[["app-template"]],viewQuery:function(n,o){if(n&1&&gn(WDe,5),n&2){let r;gt(r=_t())&&(o.menuTrigger=r.first)}},inputs:{controller:[1,"controller"],project:[1,"project"],searchText:[1,"searchText"],selectedType:[1,"selectedType"]},outputs:{nodeCreationChange:"nodeCreationChange",searchText:"searchTextChange",selectedType:"selectedTypeChange"},decls:22,vars:8,consts:[["menuTrigger","matMenuTrigger"],["mainMenu","matMenu"],["matTooltip","Add a node","matTooltipClass","custom-tooltip","mat-icon-button","",1,"template__add-btn",3,"matMenuTriggerFor"],[1,"template-menu",3,"closed"],["mat-menu-item","",1,"template__dialog-btn",3,"click"],[1,"template__filters"],["floatPlaceholder","never",1,"template__search-field",3,"click"],["matInput","","placeholder","Search template by name",3,"keyup","ngModelChange","ngModel","ngModelOptions"],[1,"template__select-field",3,"click"],["placeholder","Filter templates by type",3,"selectionChange","ngModelOptions","ngModel"],[3,"value"],[1,"template__list"],[1,"template__selector-backdrop"],[1,"template__row"],[1,"template__item"],["mwlDraggable","",1,"template__icon-wrapper",3,"dragStart","dragEnd","ghostElementAppendTo"],["draggable","false",1,"template__icon",3,"src"],[1,"template__name"],[1,"template__selector-backdrop",3,"click"],[1,"template__ghost-icon"],["draggable","false",1,"template__ghost-icon-img",3,"src"],[3,"computeSelected","computes","x","y"]],template:function(n,o){if(n&1){let r=j();s(0,"button",2,0)(2,"mat-icon"),d(3,"add"),l()(),s(4,"mat-menu",3,1),v("closed",function(){return o.onMenuClosed()}),s(6,"button",4),v("click",function(){return o.openDialog()}),s(7,"mat-icon"),d(8,"add_to_queue"),l(),s(9,"span"),d(10,"Open dialog to configure"),l()(),s(11,"div",5)(12,"mat-form-field",6),v("click",function(c){return c.stopPropagation()}),s(13,"input",7),v("keyup",function(){return o.filterTemplates()})("ngModelChange",function(c){return o.searchText.set(c)}),l()(),s(14,"mat-form-field",8),v("click",function(c){return c.stopPropagation()}),s(15,"mat-select",9),v("selectionChange",function(c){return D(r),o.selectedType.set(c.value),P(o.filterTemplates())}),J(16,qDe,2,2,"mat-option",10,Fe),l()()(),s(18,"div",11),J(19,ZDe,1,1,null,null,Ii),l()(),A(21,ePe,4,8,"div",12)}if(n&2){let r=Re(5);x("matMenuTriggerFor",r),u(13),x("ngModel",o.searchText())("ngModelOptions",Jt(6,RU)),u(2),x("ngModelOptions",Jt(7,RU))("ngModel",o.selectedType()),u(),ee(o.templateTypes),u(3),ee(o.filteredTemplates),u(2),O(o.showComputeSelector()?21:-1)}},dependencies:[Z,nt,vt,mt,cR,Ce,te,se,$,ze,Qe,Fn,ot,kn,Me,ke,we,Te,Mt,At,St,Jo,Ri,ay,VB,NU],styles:["[_nghost-%COMP%]{--mat-menu-container-max-width: 500px;--mat-menu-container-width: 500px}.template__menu[_ngcontent-%COMP%]{max-width:500px;max-height:520px}.template__add-btn[_ngcontent-%COMP%]{transition:transform .1s ease}.template__add-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary)}.template__add-btn[_ngcontent-%COMP%]:hover{transform:scale(1.1)}.template__dialog-btn[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.template__filters[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;padding:12px 16px;border-bottom:1px solid var(--mat-sys-outline-variant)}.template__search-field[_ngcontent-%COMP%], .template__select-field[_ngcontent-%COMP%]{width:100%}.template__search-field[_ngcontent-%COMP%] .mat-mdc-form-field-subscript-wrapper[_ngcontent-%COMP%]{display:none}.template__list[_ngcontent-%COMP%]{padding:12px 8px;max-height:380px;overflow-y:auto;scrollbar-color:var(--mat-sys-on-surface-variant) transparent;scrollbar-width:thin}.template__row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;margin-bottom:12px}.template__row[_ngcontent-%COMP%]:last-child{margin-bottom:0}.template__item[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;width:90px;padding:8px;border-radius:8px;transition:background-color .2s ease;cursor:grab;user-select:none;-webkit-user-select:none}.template__item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 10%,transparent)}.template__item[_ngcontent-%COMP%]:active{cursor:grabbing}.template__icon-wrapper[_ngcontent-%COMP%]{width:65px;height:65px;display:flex;align-items:center;justify-content:center;margin-bottom:6px}.template__icon[_ngcontent-%COMP%]{width:65px;height:65px;object-fit:contain;filter:drop-shadow(0 2px 4px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent));transition:transform .2s ease}.template__item[_ngcontent-%COMP%]:hover .template__icon[_ngcontent-%COMP%]{transform:scale(1.05)}.template__name[_ngcontent-%COMP%]{font-size:15px;font-weight:500;color:var(--mat-sys-on-surface);text-align:center;word-break:break-word;max-width:85px;line-height:1.3}@media(max-width:480px){.template__menu[_ngcontent-%COMP%]{max-width:320px;max-height:450px}.template__item[_ngcontent-%COMP%]{width:75px;padding:6px}.template__icon-wrapper[_ngcontent-%COMP%], .template__icon[_ngcontent-%COMP%]{width:55px;height:55px}.template__name[_ngcontent-%COMP%]{font-size:10px;max-width:70px}}.template__ghost-icon[_ngcontent-%COMP%]{position:fixed;pointer-events:none;z-index:999;transform:translate(-50%,-50%);animation:_ngcontent-%COMP%_pulse 1.5s ease-in-out infinite}.template__ghost-icon-img[_ngcontent-%COMP%]{width:60px;height:60px;opacity:.6;filter:drop-shadow(0 4px 8px var(--mat-sys-shadow))}@keyframes _ngcontent-%COMP%_pulse{0%,to{opacity:.6;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.template__selector-backdrop[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:998;cursor:default}"],changeDetection:0})}return t})();var y_=(()=>{class t{httpController;constructor(e){this.httpController=e}create(e,n,o){return this.httpController.post(e,`/projects/${n}/snapshots`,o)}delete(e,n,o){return this.httpController.delete(e,`/projects/${n}/snapshots/${o}`)}list(e,n){return this.httpController.get(e,`/projects/${n}/snapshots`)}restore(e,n,o){return this.httpController.post(e,`/projects/${n}/snapshots/${o}/restore`,{})}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var S_=(()=>{class t{data;dialogRef=f(Pe);static CANCELLED;value=me(50);constructor(e){this.data=e}onCancelClick(){this.dialogRef.close(t.CANCELLED)}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-progress-dialog"]],decls:7,vars:1,consts:[["mat-dialog-title",""],["mat-dialog-content",""],["color","primary","mode","determinate",3,"value"],["mat-dialog-actions",""],["mat-button","","tabindex","-1","color","accent",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Operation in progress"),l(),s(2,"div",1),F(3,"mat-progress-bar",2),l(),s(4,"div",3)(5,"button",4),v("click",function(){return o.onCancelClick()}),d(6,"Cancel"),l()()),n&2&&(u(3),x("value",o.value()))},dependencies:[Ce,Ve,Be,Wt,$,le,Si,Pl,nd],encapsulation:2,changeDetection:0})}return t})();var Jk=(()=>{class t{dialog;constructor(e){this.dialog=e}open(){return this.dialog.open(S_,{width:"250px",autoFocus:!1,disableClose:!0})}static \u0275fac=function(n){return new(n||t)(ge(Je))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var eT=class{snapshot_id;name;created_at;project_id};var tT=(()=>{class t{data;dialogRef=f(Pe);formBuilder=f(jt);toasterService=f(fe);snapshotService=f(y_);cd=f(K);controller;project;snapshot=new eT;inputForm;existingSnapshotNames=[];constructor(e){this.data=e,this.controller=e.controller,this.project=e.project,this.inputForm=this.formBuilder.group({snapshotName:new re("",be.required)}),this.project?.project_id&&this.snapshotService.list(this.controller,this.project.project_id).subscribe(n=>{this.existingSnapshotNames=n.map(o=>o.name),this.cd.markForCheck()})}onAddClick(){let e=this.inputForm.get("snapshotName").value?.trim();this.inputForm.invalid||!e?this.toasterService.error("Fill all required fields"):this.existingSnapshotNames.includes(e)?this.toasterService.error("Snapshot with this name already exists"):(this.snapshot.name=e,this.dialogRef.close(this.snapshot))}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-create-snapshot-dialog"]],decls:11,vars:1,consts:[["mat-dialog-title",""],["mat-dialog-content",""],[3,"formGroup"],[1,"name-input"],["matInput","","tabindex","1","formControlName","snapshotName","placeholder","Name"],["mat-dialog-actions",""],["mat-button","","mat-dialog-close",""],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Create snapshot"),l(),s(2,"div",1)(3,"form",2)(4,"mat-form-field",3),F(5,"input",4),l()()(),s(6,"div",5)(7,"button",6),d(8,"Cancel"),l(),s(9,"button",7),v("click",function(){return o.onAddClick()}),d(10,"Add"),l()()),n&2&&(u(3),x("formGroup",o.inputForm))},dependencies:[Z,ct,Ue,vt,mt,He,pt,bt,Ce,Kc,Ve,Be,Wt,$,le,we,Te,ke,Me,Si],styles:[".name-input[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();var om=(()=>{class t{data;dialogRef=f(Pe);constructor(e){this.data=e}onNoClick(){this.dialogRef.close(!1)}onYesClick(){this.dialogRef.close(!0)}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-question-dialog"]],decls:10,vars:2,consts:[["mat-dialog-title",""],["mat-dialog-content",""],["mat-dialog-actions",""],["mat-button","",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1),l(),s(2,"div",1)(3,"p"),d(4),l()(),s(5,"div",2)(6,"button",3),v("click",function(){return o.onNoClick()}),d(7,"No"),l(),s(8,"button",3),v("click",function(){return o.onYesClick()}),d(9,"Yes"),l()()),n&2&&(u(),U(o.data.title),u(3),U(o.data.question))},dependencies:[Ce,Ve,Be,Wt,$,le],encapsulation:2,changeDetection:0})}return t})();var FU=(()=>{class t{transform(e){let n=new Date(+e*1e3),o=n.getHours(),r="0"+n.getMinutes(),a="0"+n.getSeconds(),c=n.getFullYear(),m=n.getMonth()+1,p=n.getDate();return o+":"+r.substr(-2)+":"+a.substr(-2)+" "+p+"/"+m+"/"+c}static \u0275fac=function(n){return new(n||t)};static \u0275pipe=Cr({name:"datefilter",type:t,pure:!0})}return t})();function tPe(t,i){t&1&&(s(0,"mat-header-cell",23),d(1,"Name"),l())}function nPe(t,i){if(t&1&&(s(0,"mat-cell",23),d(1),l()),t&2){let e=i.$implicit;u(),U(e.name)}}function iPe(t,i){t&1&&(s(0,"mat-header-cell",24),d(1,"Date"),l())}function oPe(t,i){if(t&1&&(s(0,"mat-cell",24),d(1),on(2,"datefilter"),l()),t&2){let e=i.$implicit;u(),U(oi(2,1,e.created_at))}}function rPe(t,i){t&1&&(s(0,"mat-header-cell",25),d(1,"Actions"),l())}function aPe(t,i){if(t&1){let e=j();s(0,"mat-cell",25)(1,"div",26)(2,"button",27),v("click",function(){let o=D(e).$implicit,r=b();return P(r.restoreSnapshot(o))}),s(3,"mat-icon"),d(4,"restore"),l()(),s(5,"button",28),v("click",function(){let o=D(e).$implicit,r=b();return P(r.deleteSnapshot(o))}),s(6,"mat-icon"),d(7,"delete"),l()()()()}}function sPe(t,i){t&1&&F(0,"mat-header-row")}function lPe(t,i){t&1&&F(0,"mat-row")}function cPe(t,i){t&1&&(s(0,"div",20),d(1,"No snapshots available"),l())}var LU=(()=>{class t{data;dialogRef=f(Pe);snapshotService=f(y_);progressDialogService=f(Jk);toaster=f(fe);dialog=f(Je);cd=f(K);controller;project;snapshots=ae([]);searchText=ae("");displayedColumns=["name","created_at","actions"];constructor(e){this.data=e,this.controller=e.controller,this.project=e.project,this.loadSnapshots()}filteredSnapshots=ri(()=>{let e=this.searchText().toLowerCase();return e?this.snapshots().filter(n=>n.name.toLowerCase().includes(e)):this.snapshots()});openCreateDialog(){this.dialog.open(tT,{panelClass:["base-dialog-panel","simple-dialog-panel"],data:{controller:this.controller,project:this.project},autoFocus:!1}).afterClosed().subscribe(n=>{if(n){let o=this.progressDialogService.open();this.snapshotService.create(this.controller,this.project.project_id,n).subscribe({next:()=>{o.close(),this.loadSnapshots(),this.toaster.success(`Snapshot '${n.name}' has been created.`)},error:r=>{o.close();let a=r.error?.message||r.message||"Unknown error";this.toaster.error(`Failed to create snapshot: ${a}`),this.cd.markForCheck()}})}})}restoreSnapshot(e){this.dialog.open(om,{panelClass:["base-confirmation-dialog-panel","confirmation-warning-panel"],data:{title:"Restore snapshot",question:`Are you sure you want to restore snapshot "${e.name}"? This will replace your current topology.`}}).afterClosed().subscribe(o=>{if(!o)return;let r=this.progressDialogService.open(),a=this.snapshotService.restore(this.controller,this.project.project_id,e.snapshot_id).subscribe({next:()=>{this.toaster.success(`Snapshot "${e.name}" has been restored.`),r.close(),this.cd.markForCheck()},error:c=>{r.close();let m=c.error?.message||c.message||"Unknown error";this.toaster.error(`Failed to restore snapshot: ${m}`),this.cd.markForCheck()}});r.afterClosed().subscribe(c=>{c===S_.CANCELLED&&a.unsubscribe()})})}deleteSnapshot(e){this.dialog.open(om,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:{title:"Delete snapshot",question:`Are you sure you want to delete snapshot "${e.name}"?`}}).afterClosed().subscribe(o=>{o&&this.snapshotService.delete(this.controller,this.project.project_id,e.snapshot_id).subscribe({next:()=>{this.loadSnapshots(),this.toaster.success(`Snapshot "${e.name}" has been deleted.`),this.cd.markForCheck()},error:r=>{let a=r.error?.message||r.message||"Unknown error";this.toaster.error(`Failed to delete snapshot: ${a}`),this.cd.markForCheck()}})})}loadSnapshots(){this.snapshotService.list(this.controller,this.project.project_id).subscribe({next:e=>{this.snapshots.set(e),this.cd.markForCheck()},error:e=>{let n=e.error?.message||e.message||"Unknown error";this.toaster.error(`Failed to load snapshots: ${n}`),this.cd.markForCheck()}})}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-snapshot-dialog"]],inputs:{snapshots:[1,"snapshots"],searchText:[1,"searchText"]},outputs:{snapshots:"snapshotsChange",searchText:"searchTextChange"},decls:29,vars:5,consts:[["mat-dialog-title",""],["mat-dialog-content",""],[1,"snapshot-dialog__toolbar"],["appearance","fill",1,"snapshot-dialog__search"],["matPrefix",""],["matInput","","placeholder","Filter snapshots",3,"input","value"],["mat-button","","matTooltip","Create snapshot","matTooltipClass","custom-tooltip",3,"click"],[1,"snapshot-dialog__table-container"],[1,"snapshot-dialog__table",3,"dataSource"],["matColumnDef","name"],["class","snapshot-dialog__column-name",4,"matHeaderCellDef"],["class","snapshot-dialog__column-name",4,"matCellDef"],["matColumnDef","created_at"],["class","snapshot-dialog__column-date",4,"matHeaderCellDef"],["class","snapshot-dialog__column-date",4,"matCellDef"],["matColumnDef","actions"],["class","snapshot-dialog__column-actions",4,"matHeaderCellDef"],["class","snapshot-dialog__column-actions",4,"matCellDef"],[4,"matHeaderRowDef"],[4,"matRowDef","matRowDefColumns"],[1,"snapshot-dialog__empty"],["mat-dialog-actions",""],["mat-button","","mat-dialog-close",""],[1,"snapshot-dialog__column-name"],[1,"snapshot-dialog__column-date"],[1,"snapshot-dialog__column-actions"],[1,"snapshot-dialog__actions"],["mat-icon-button","","matTooltip","Restore snapshot","matTooltipClass","custom-tooltip",3,"click"],["mat-icon-button","","matTooltip","Delete snapshot","matTooltipClass","custom-tooltip",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Snapshots"),l(),s(2,"div",1)(3,"div",2)(4,"mat-form-field",3)(5,"mat-icon",4),d(6,"search"),l(),s(7,"input",5),v("input",function(a){return o.searchText.set(a.target.value)}),l()(),s(8,"button",6),v("click",function(){return o.openCreateDialog()}),s(9,"mat-icon"),d(10,"add_circle_outline"),l(),d(11," Create snapshot "),l()(),s(12,"div",7)(13,"mat-table",8),qe(14,9),Ae(15,tPe,2,0,"mat-header-cell",10)(16,nPe,2,1,"mat-cell",11),Xe(),qe(17,12),Ae(18,iPe,2,0,"mat-header-cell",13)(19,oPe,3,3,"mat-cell",14),Xe(),qe(20,15),Ae(21,rPe,2,0,"mat-header-cell",16)(22,aPe,8,0,"mat-cell",17),Xe(),Ae(23,sPe,1,0,"mat-header-row",18)(24,lPe,1,0,"mat-row",19),l(),A(25,cPe,2,0,"div",20),l()(),s(26,"div",21)(27,"button",22),d(28,"Close"),l()()),n&2&&(u(7),x("value",o.searchText()),u(6),x("dataSource",o.filteredSnapshots()),u(10),x("matHeaderRowDef",o.displayedColumns),u(),x("matRowDefColumns",o.displayedColumns),u(),O(o.snapshots().length===0?25:-1))},dependencies:[Z,Ce,Kc,Ve,Be,Wt,$,le,ze,te,se,Gt,Kt,Me,ke,al,we,Te,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,FU],styles:[".snapshot-dialog__toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:16px}.snapshot-dialog__search[_ngcontent-%COMP%]{flex:1;max-width:300px}.snapshot-dialog__search[_ngcontent-%COMP%] .mat-mdc-form-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.snapshot-dialog__table-container[_ngcontent-%COMP%]{max-height:400px;overflow-y:auto;border-radius:12px;background:var(--mat-sys-surface-container-low)}.snapshot-dialog__table[_ngcontent-%COMP%]{width:100%}.snapshot-dialog__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:4px}.snapshot-dialog__empty[_ngcontent-%COMP%]{padding:32px;text-align:center;color:var(--mat-sys-on-surface-variant)}mat-header-cell.snapshot-dialog__column-name[_ngcontent-%COMP%], mat-cell.snapshot-dialog__column-name[_ngcontent-%COMP%]{flex:2;min-width:200px}mat-header-cell.snapshot-dialog__column-date[_ngcontent-%COMP%], mat-cell.snapshot-dialog__column-date[_ngcontent-%COMP%]{flex:1;min-width:140px}mat-header-cell.snapshot-dialog__column-actions[_ngcontent-%COMP%], mat-cell.snapshot-dialog__column-actions[_ngcontent-%COMP%]{flex:0 0 100px;min-width:100px;justify-content:flex-end}"],changeDetection:0})}return t})();var nT=(()=>{class t{project=oe(void 0);controller=oe(void 0);dialog=f(Je);openSnapshotDialog(){let e=this.project(),n=this.controller();!e||!n||this.dialog.open(LU,{panelClass:["base-dialog-panel","configurator-dialog-panel"],data:{controller:n,project:e},autoFocus:!1})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-snapshot-menu-item"]],inputs:{project:[1,"project"],controller:[1,"controller"]},decls:3,vars:0,consts:[["matTooltip","Manage snapshots","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"snapshot-button","menu-button",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.openSnapshotDialog()}),s(1,"mat-icon"),d(2,"filter_none"),l()())},dependencies:[Z,Ce,Gt,Kt,te,se,$,ze],styles:[".snapshot-button[_ngcontent-%COMP%]{transition:transform .1s ease}.snapshot-button[_ngcontent-%COMP%]:hover{transform:scale(1.3)}"],changeDetection:0})}return t})();var BU=(()=>{class t{controller=oe(void 0);project=oe(void 0);drawingDragged;drawingService=f(Wi);drawingsDataSource=f(Vi);drawingsEventSource=f(Ko);ngOnInit(){this.drawingDragged=this.drawingsEventSource.dragged.subscribe(e=>this.onDrawingDragged(e))}onDrawingDragged(e){let n=this.drawingsDataSource.get(e.datum.id);n.x+=e.dx,n.y+=e.dy,this.drawingService.updatePosition(this.controller(),this.project(),n,n.x,n.y).subscribe(o=>{this.drawingsDataSource.update(o)})}ngOnDestroy(){this.drawingDragged.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-drawing-dragged"]],inputs:{controller:[1,"controller"],project:[1,"project"]},decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var VU=(()=>{class t{controller=oe(void 0);drawingResized;drawingService=f(Wi);drawingsDataSource=f(Vi);drawingsEventSource=f(Ko);mapDrawingToSvgConverter=f(Ps);ngOnInit(){this.drawingResized=this.drawingsEventSource.resized.subscribe(e=>this.onDrawingResized(e))}onDrawingResized(e){let n=this.drawingsDataSource.get(e.datum.id),o=this.mapDrawingToSvgConverter.convert(e.datum);this.drawingService.updateSizeAndPosition(this.controller(),n,e.x,e.y,o).subscribe(r=>{this.drawingsDataSource.update(r)})}ngOnDestroy(){this.drawingResized.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-drawing-resized"]],inputs:{controller:[1,"controller"]},decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var zU=(()=>{class t{controller=oe(void 0);interfaceDragged;linkService=f(to);linksDataSource=f(dr);linksEventSource=f(za);ngOnInit(){this.interfaceDragged=this.linksEventSource.interfaceDragged.subscribe(e=>this.onInterfaceLabelDragged(e))}onInterfaceLabelDragged(e){let n=this.linksDataSource.get(e.datum.linkId);n.nodes[0].node_id===e.datum.nodeId&&(n.nodes[0].label.x+=e.dx,n.nodes[0].label.y+=e.dy),n.nodes[1].node_id===e.datum.nodeId&&(n.nodes[1].label.x+=e.dx,n.nodes[1].label.y+=e.dy),this.linkService.updateNodes(this.controller(),n,n.nodes).subscribe(o=>{this.linksDataSource.update(o)})}ngOnDestroy(){this.interfaceDragged.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-interface-label-dragged"]],inputs:{controller:[1,"controller"]},decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var jU=(()=>{class t{controller=oe(void 0);project;linkCreated;projectService=f(Fi);linkService=f(to);linksDataSource=f(dr);linksEventSource=f(za);mapNodeToNode=f(jp);mapPortToPort=f(qg);ngOnInit(){this.linkCreated=this.linksEventSource.created.subscribe(e=>this.onLinkCreated(e))}onLinkCreated(e){let n=Math.abs(e.sourceNode.x-e.targetNode.x),o=Math.abs(e.sourceNode.y-e.targetNode.y),r=Math.sqrt(Math.pow(n,2)+Math.pow(o,2)),a=o/r,c=45/r*n,m=45/r*o,p=0,h=0,g=0,M=0;e.sourceNode.x<=e.targetNode.x&&e.sourceNode.y<=e.targetNode.y?(p=Math.floor(e.sourceNode.width/2)+Math.round(c)+5,h=Math.floor(e.sourceNode.height/2)+Math.round(m)+5,g=Math.floor(e.targetNode.width/2)-Math.round(c)-5-Math.round(20*a),M=Math.floor(e.targetNode.height/2)-Math.round(m)+5-Math.round(20*a)):e.sourceNode.x>e.targetNode.x&&e.sourceNode.y<e.targetNode.y?(p=Math.floor(e.sourceNode.width/2)-Math.round(c)-5-Math.round(20*a),h=Math.floor(e.sourceNode.height/2)+Math.round(m)+5-Math.round(20*a),g=Math.floor(e.targetNode.width/2)+Math.round(c)+5,M=Math.floor(e.targetNode.height/2)-Math.round(m)-5):e.sourceNode.x<e.targetNode.x&&e.sourceNode.y>e.targetNode.y?(p=Math.floor(e.sourceNode.width/2)+Math.round(c)+5-Math.round(20*a),h=Math.floor(e.sourceNode.height/2)-Math.round(m)-5-Math.round(20*a),g=Math.floor(e.targetNode.width/2)-Math.round(c)-5,M=Math.floor(e.targetNode.height/2)+Math.round(m)+5):e.sourceNode.x>=e.targetNode.x&&e.sourceNode.y>=e.targetNode.y&&(p=Math.floor(e.sourceNode.width/2)-Math.round(c)-5-Math.round(20*a),h=Math.floor(e.sourceNode.height/2)-Math.round(m)+5-Math.round(20*a),g=Math.floor(e.targetNode.width/2)+Math.round(c)+5,M=Math.floor(e.targetNode.height/2)+Math.round(m)+5);let C=this.mapNodeToNode.convert(e.sourceNode),_=this.mapPortToPort.convert(e.sourcePort),w=this.mapNodeToNode.convert(e.targetNode),S=this.mapPortToPort.convert(e.targetPort);this.linkService.createLink(this.controller(),C,_,w,S,p,h,g,M).subscribe(()=>{this.projectService.links(this.controller(),this.project.project_id).subscribe(y=>{this.linksDataSource.set(y)})})}ngOnDestroy(){this.linkCreated.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-link-created"]],inputs:{controller:[1,"controller"],project:"project"},decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var $U=(()=>{class t{controller=oe(void 0);project=oe(void 0);nodeDragged;nodesDataSource=f(ci);nodeService=f(wt);nodesEventSource=f($l);ngOnInit(){this.nodeDragged=this.nodesEventSource.dragged.subscribe(e=>this.onNodeDragged(e))}onNodeDragged(e){let n=this.nodesDataSource.get(e.datum.id);n.x+=e.dx,n.y+=e.dy,this.nodeService.updatePosition(this.controller(),this.project(),n,n.x,n.y).subscribe(o=>{this.nodesDataSource.update(o)})}ngOnDestroy(){this.nodeDragged.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-node-dragged"]],inputs:{controller:[1,"controller"],project:[1,"project"]},decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var HU=(()=>{class t{controller=oe(void 0);nodeLabelDragged;nodesDataSource=f(ci);nodeService=f(wt);nodesEventSource=f($l);mapLabelToLabel=f(fd);ngOnInit(){this.nodeLabelDragged=this.nodesEventSource.labelDragged.subscribe(e=>this.onNodeLabelDragged(e))}onNodeLabelDragged(e){let n=this.nodesDataSource.get(e.datum.nodeId),o=e.datum,r=this.mapLabelToLabel.convert(o);n.label=r,this.nodeService.updateLabel(this.controller(),n,n.label).subscribe(a=>{this.nodesDataSource.update(a)})}ngOnDestroy(){this.nodeLabelDragged.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-node-label-dragged"]],inputs:{controller:[1,"controller"]},decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var UU=(()=>{class t{controller=oe(void 0);project;drawingSaved=new ve;textAdded;drawingService=f(Wi);drawingsDataSource=f(Vi);drawingsEventSource=f(Ko);drawingsFactory=f(u_);mapDrawingToSvgConverter=f(Ps);context=f(jo);ngOnInit(){this.textAdded=this.drawingsEventSource.textAdded.subscribe(e=>this.onTextAdded(e))}onTextAdded(e){let n=this.drawingsFactory.getDrawingMock("text");n.element.text=e.savedText;let o=this.mapDrawingToSvgConverter.convert(n);this.drawingService.add(this.controller(),this.project.project_id,e.x,e.y,o).subscribe(r=>{this.drawingsDataSource.add(r),this.drawingSaved.emit(!0)})}ngOnDestroy(){this.textAdded.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-text-added"]],inputs:{controller:[1,"controller"],project:"project"},outputs:{drawingSaved:"drawingSaved"},decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var GU=(()=>{class t{controller=oe(void 0);textEdited;drawingService=f(Wi);drawingsDataSource=f(Vi);drawingsEventSource=f(Ko);mapDrawingToSvgConverter=f(Ps);ngOnInit(){this.textEdited=this.drawingsEventSource.textEdited.subscribe(e=>this.onTextEdited(e))}onTextEdited(e){let n=new Va;n.element=e.textElement,n.element.text=e.editedText;let o=this.mapDrawingToSvgConverter.convert(n),r=this.drawingsDataSource.get(e.textDrawingId);this.drawingService.updateText(this.controller(),r,o).subscribe(a=>{this.drawingsDataSource.update(a),this.drawingsEventSource.textSaved.emit(!0)})}ngOnDestroy(){this.textEdited.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-text-edited"]],inputs:{controller:[1,"controller"]},decls:0,vars:0,template:function(n,o){},encapsulation:2,changeDetection:0})}return t})();var dPe=["topologySummaryContainer"],mPe=()=>["/controllers"],pPe=t=>["/controller",t,"projects"],uPe=t=>["/controller",t,"image-manager"],hPe=t=>({visible:t}),fPe=t=>({selected:t}),qU=(t,i)=>i.link_id,XU=(t,i)=>i.node_id,WU=(t,i)=>e=>e.id==="console",gPe=(t,i)=>e=>{let n=D(i).$implicit;return P(e.id==="wireshark-"+n.link_id)},_Pe=(t,i)=>e=>{let n=D(i).$implicit;return P(e.id==="console-"+n.node_id)};function vPe(t,i){if(t&1){let e=j();s(0,"div",10)(1,"app-template",38),v("nodeCreationChange",function(o){D(e);let r=b();return P(r.onNodeCreation(o))}),l(),s(2,"button",39),v("click",function(){D(e);let o=b();return P(o.toggleDrawLineMode())}),s(3,"mat-icon"),d(4,"timeline"),l()()()}if(t&2){let e=b();u(),x("controller",e.controller)("project",e.project),u(),x("ngClass",ln(4,fPe,e.tools.draw_link))("color",e.tools.draw_link?"primary":"basic")}}function bPe(t,i){if(t&1&&(s(0,"div",23),F(1,"app-snapshot-menu-item",12),l()),t&2){let e=b();u(),x("controller",e.controller)("project",e.project)}}function CPe(t,i){if(t&1&&F(0,"app-draw-link-tool",30),t&2){let e=b();x("links",e.links)}}function xPe(t,i){if(t&1){let e=j();s(0,"app-console-wrapper",40),v("closeConsole",function(o){D(e);let r=b();return P(r.toggleShowConsole(o))})("windowFocused",function(){D(e);let o=b();return P(o.bringConsoleToFront())}),l()}if(t&2){let e=b();x("controller",e.controller)("project",e.project)("zIndex",e.consoleZIndex)}}function yPe(t,i){if(t&1){let e=j();s(0,"app-ai-chat",41),v("closed",function(){D(e);let o=b();return P(o.closeAIChat())})("windowFocused",function(){D(e);let o=b();return P(o.bringAIChatToFront())}),l()}if(t&2){let e=b();x("project",e.project)("controller",e.controller)("zIndex",e.aiChatZIndex)}}function SPe(t,i){if(t&1){let e=j();s(0,"app-web-wireshark-inline",43),v("closeWindow",function(){let o=D(e).$implicit,r=b(2);return P(r.closeWebWiresharkInline(o.link_id))})("windowFocused",function(){let o=D(e).$implicit,r=b(2);return P(r.bringWebWiresharkWindowToFront(o.link_id))}),l()}if(t&2){let e=i.$implicit,n=b(2);x("link",e)("controller",n.controller)("project",n.project)("zIndex",n.getWebWiresharkWindowZIndex(e.link_id))}}function wPe(t,i){if(t&1&&J(0,SPe,1,4,"app-web-wireshark-inline",42,qU),t&2){let e=b();ee(e.getWebWiresharkInlineWindows())}}function MPe(t,i){if(t&1){let e=j();s(0,"app-web-console-inline",45),v("closeWindow",function(){let o=D(e).$implicit,r=b(2);return P(r.closeWebConsoleInline(o.node_id))})("windowFocused",function(){let o=D(e).$implicit,r=b(2);return P(r.bringWebConsoleWindowToFront(o.node_id))}),l()}if(t&2){let e=i.$implicit,n=b(2);x("node",e)("controller",n.controller)("project",n.project)("zIndex",n.getWebConsoleWindowZIndex(e.node_id))}}function kPe(t,i){if(t&1&&J(0,MPe,1,4,"app-web-console-inline",44,XU),t&2){let e=b();ee(e.getWebConsoleInlineWindows())}}function TPe(t,i){if(t&1){let e=j();s(0,"div",46),v("click",function(){D(e);let o=b();return P(o.toggleConsoleMinimize())}),s(1,"mat-icon",47),d(2,"terminal"),l(),s(3,"span",48),d(4,"Console"),l()()}if(t&2){let e=b();yn("left",e.getConsoleTaskbarLeft(),"px"),je("inline-taskbar__icon--minimized",e.windowManagement.minimizedWindows().some(j_(5,WU,i))),x("title",e.windowManagement.minimizedWindows().some(j_(6,WU,i))?"Console - Click to restore":"Console - Click to minimize")}}function EPe(t,i){if(t&1){let e=j();s(0,"div",46),v("click",function(){let o=D(e).$implicit,r=b();return P(r.toggleWiresharkMinimize(o.link_id))}),s(1,"mat-icon",47),d(2,"analytics"),l(),s(3,"span",48),d(4),l()()}if(t&2){let e=i.$implicit,n=b();yn("left",n.getWiresharkTaskbarLeft(e.link_id),"px"),je("inline-taskbar__icon--minimized",n.windowManagement.minimizedWindows().some(j_(6,gPe,i))),x("title",e.capture_file_name),u(4),U(e.capture_file_name)}}function DPe(t,i){if(t&1){let e=j();s(0,"div",46),v("click",function(){let o=D(e).$implicit,r=b();return P(r.toggleWebConsoleMinimize(o.node_id))}),s(1,"mat-icon",47),d(2,"web"),l(),s(3,"span",48),d(4),l()()}if(t&2){let e=i.$implicit,n=b();yn("left",n.getWebConsoleTaskbarLeft(e.node_id),"px"),je("inline-taskbar__icon--minimized",n.windowManagement.minimizedWindows().some(j_(6,_Pe,i))),x("title",e.name),u(4),U(e.name)}}function PPe(t,i){}var iT=(()=>{class t{nodes=me([]);links=[];drawings=[];symbols=[];project={};controller={};projectws;ws;isProjectMapMenuVisible=!1;isConsoleVisible=!0;isTopologySummaryVisible=!0;isInterfaceLabelVisible=!1;notificationsVisibility=!1;layersVisibility=!1;gridVisibility=!1;toolbarVisibility=!0;symbolScaling=!0;isAIChatVisible=!1;webWiresharkInlineWindows=new Map;webWiresharkInlineZIndex=new Map;webConsoleInlineWindows=new Map;webConsoleInlineZIndex=new Map;baseZIndex=1e3;zIndexCounter=0;consoleZIndex=this.baseZIndex;aiChatZIndex=this.baseZIndex;TASKBAR_BASE_LEFT=20;TASKBAR_ICON_WIDTH=180;TASKBAR_ICON_GAP=8;mapBgClass=ri(()=>{let e=this.themeService.savedMapTheme,n=e==="auto"?this.themeService.isDarkMode():e.startsWith("dark-");return e==="auto"?{[`gns3-map-bg-${this.themeService.isDarkMode()?"dark":"light"}`]:!0,"project-map--light-bg":!n,"project-map--dark-bg":n}:{[`gns3-map-bg-${e}`]:!0,"project-map--light-bg":!n,"project-map--dark-bg":n}});instance;tools={selection:!0,moving:!1,draw_link:!1,text_editing:!0};settings;inReadOnlyMode=!1;contextMenu=Ut(c_);mapChild=Ut(j2);projectMapMenuComponent=Ut.required(f_);topologySummaryContainer=Ut.required("topologySummaryContainer",{read:co});projectMapSubscription=new so;route=f(Ye);controllerService=f(We);projectService=f(Fi);nodeService=f(wt);linkService=f(to);drawingService=f(Wi);progressService=f(zo);projectWebServiceHandler=f(Xg);mapChangeDetectorRef=f(Ep);nodeWidget=f(zg);drawingsWidget=f(hd);linkWidget=f(Gg);labelWidget=f(Rp);interfaceLabelWidget=f(pd);mapNodeToNode=f(jp);mapDrawingToDrawing=f(H2);mapLabelToLabel=f(fd);mapLinkToLink=f(q2);mapLinkNodeToLinkNode=f(Wg);nodesDataSource=f(ci);linksDataSource=f(dr);drawingsDataSource=f(Vi);settingsService=f(ea);toolsService=f(Al);selectionManager=f(Yo);selectionTool=f(Op);recentlyOpenedProjectService=f(xm);movingEventSource=f(zp);mapScaleService=f(od);nodeCreatedLabelStylesFixer=f(bk);toasterService=f(fe);dialog=f(Je);router=f(ut);mapNodesDataSource=f(ag);mapLinksDataSource=f(sg);mapDrawingsDataSource=f(lg);mapSymbolsDataSource=f(cg);mapSettingsService=f(To);ethernetLinkWidget=f(Hg);serialLinkWidget=f(Ug);bottomSheet=f(mc);notificationService=f(wc);title=f(um);nodeConsoleService=f(gr);symbolService=f(kl);themeService=f(yi);cd=f(K);aiChatStore=f(h_);windowManagement=f($p);viewContainerRef=f(co);ngOnInit(){this.getSettings(),this.progressService.activate(),this.controllerService.isServiceInitialized?this.getData():this.projectMapSubscription.add(this.controllerService.serviceInitialized.subscribe(e=>{e&&this.getData()})),this.addSubscriptions(),this.addKeyboardListeners()}getSettings(){this.settings=this.settingsService.getAll(),this.symbolScaling=this.mapSettingsService.getSymbolScaling(),this.cd.markForCheck(),this.isConsoleVisible=this.mapSettingsService.isLogConsoleVisible,this.mapSettingsService.logConsoleSubject.subscribe(e=>this.isConsoleVisible=e),this.notificationsVisibility=localStorage.getItem("notificationsVisibility")==="true",this.layersVisibility=localStorage.getItem("layersVisibility")==="true",this.gridVisibility=localStorage.getItem("gridVisibility")==="true"}async lazyLoadTopologySummary(){if(this.isTopologySummaryVisible){let{TopologySummaryComponent:e}=await import("./chunk-5UTQLYEL.js");this.instance=this.topologySummaryContainer().createComponent(e),this.instance.instance.controller=this.controller,this.instance.instance.project=this.project,this.instance.changeDetectorRef.detectChanges()}else this.instance&&this.instance.instance&&(this.instance.instance.ngOnDestroy(),this.instance.destroy(),this.instance=null)}addSubscriptions(){this.projectMapSubscription.add(this.drawingsDataSource.changes.subscribe(n=>{this.drawings=n,this.mapChangeDetectorRef.detectChanges()}));let e=new Map;this.projectMapSubscription.add(this.nodesDataSource.changes.subscribe(n=>{if(!this.controller)return;for(let c of n){let m=e.get(c.node_id);m!==void 0&&m!==c.symbol&&(c.symbol_url=null),e.set(c.node_id,c.symbol)}let o=n.filter(c=>!c.symbol_url);if(o.forEach(c=>{c.width==0&&c.height==0&&this.symbolService.getDimensions(this.controller,c.symbol).subscribe(m=>{c.width=m.width,c.height=m.height})}),o.length===0){this.nodes.set(n),this.mapSettingsService.getSymbolScaling()&&this.applyScalingOfNodeSymbols(),this.mapChangeDetectorRef.detectChanges();return}let r=new Map;o.forEach(c=>{r.set(c,`/symbols/${c.symbol}/raw`)});let a=Array.from(new Set(r.values()));lo(a.map(c=>this.symbolService.getSymbolBlobUrl(this.controller,c))).subscribe(c=>{let m=new Map(a.map((p,h)=>[p,c[h]]));o.forEach(p=>{p.symbol_url=m.get(r.get(p))}),this.nodes.set(n),this.mapSettingsService.getSymbolScaling()&&this.applyScalingOfNodeSymbols(),this.mapChangeDetectorRef.detectChanges()},()=>{o.forEach(c=>{c.symbol_url=`${this.controller.protocol}//${this.controller.host}:${this.controller.port}/${Ai.current_version}${r.get(c)}`}),this.nodes.set(n),this.mapSettingsService.getSymbolScaling()&&this.applyScalingOfNodeSymbols(),this.mapChangeDetectorRef.detectChanges()})})),this.projectMapSubscription.add(this.linksDataSource.changes.subscribe(n=>{this.links=n,this.mapChangeDetectorRef.detectChanges()})),this.projectMapSubscription.add(this.projectWebServiceHandler.errorNotificationEmitter.subscribe(n=>{this.showMessage({type:"error",message:n})})),this.projectMapSubscription.add(this.projectWebServiceHandler.warningNotificationEmitter.subscribe(n=>{this.showMessage({type:"warning",message:n})})),this.projectMapSubscription.add(this.mapSettingsService.symbolScalingSubject.subscribe(n=>{n&&this.applyScalingOfNodeSymbols()}))}applyScalingOfNodeSymbols(){this.nodesDataSource.getItems().forEach(e=>{if(e.height>this.symbolService.getMaximumSymbolSize()){let n=this.symbolService.scaleDimensionsForNode(e);e.width=n.width,e.height=n.height}})}getData(){let e=this.route.paramMap.subscribe(n=>{let o=parseInt(n.get("controller_id"),10),r=n.get("project_id");if(!r){this.router.navigate(["/controllers"]);return}or(this.controllerService.get(o)).pipe(Er(a=>(a||this.router.navigate(["/controllers"]),this.controller=a,this.cd.markForCheck(),this.projectService.get(a,r).pipe(yt(c=>c)))),Er(a=>(this.project=a,this.cd.markForCheck(),!a||!a.project_id?(this.router.navigate(["/controllers"]),new _r(c=>c.complete())):(this.projectService.open(this.controller,this.project.project_id),this.title.setTitle(this.project.name),this.isInterfaceLabelVisible=this.mapSettingsService.showInterfaceLabels,this.toggleShowTopologySummary(this.mapSettingsService.isTopologySummaryVisible),this.recentlyOpenedProjectService.setcontrollerId(this.controller.id.toString()),this.project.status==="opened"?new _r(c=>{c.next(this.project)}):this.projectService.open(this.controller,this.project.project_id))))).subscribe(a=>{a&&a.project_id&&this.onProjectLoad(a),this.cd.markForCheck(),this.mapSettingsService.openReadme&&this.showReadme()},a=>{this.progressService.setError(a),this.cd.markForCheck()},()=>{this.progressService.deactivate(),this.cd.markForCheck()})});this.projectMapSubscription.add(e)}addKeyboardListeners(){rm.bind("ctrl++",e=>{e.preventDefault(),this.zoomIn()}),rm.bind("ctrl+-",e=>{e.preventDefault(),this.zoomOut()}),rm.bind("ctrl+0",e=>{e.preventDefault(),this.resetZoom()}),rm.bind("ctrl+a",e=>{e.preventDefault();let n=this.mapNodesDataSource.getItems(),o=this.mapDrawingsDataSource.getItems(),r=this.mapLinksDataSource.getItems(),a=this.mapSymbolsDataSource.getItems();this.selectionManager.setSelected(n.concat(o).concat(r).concat(a))}),rm.bind("ctrl+h",e=>{e.preventDefault(),this.toolbarVisibility=!this.toolbarVisibility}),rm.bind("ctrl+shift+a",e=>{e.preventDefault(),this.selectionManager.setSelected([])}),rm.bind("ctrl+shift+s",e=>{e.preventDefault(),this.router.navigate(["/controller",this.controller.id,"preferences"])}),rm.bind("del",e=>{e.preventDefault(),this.deleteItems()})}deleteItems(){let n=this.bottomSheet.open(ns,{data:{message:"Do you want to delete all selected objects?"},panelClass:"confirmation-bottom-sheet"}).afterDismissed().subscribe(o=>{if(o){let r=this.selectionManager.getSelected();r.filter(a=>a instanceof Ol).forEach(a=>{let c=this.mapNodeToNode.convert(a);this.nodeService.delete(this.controller,c).subscribe({next:()=>this.toasterService.success("Node has been deleted"),error:m=>{let p=m.error?.message||m.message||"Failed to delete node";this.toasterService.error(p),this.cd.markForCheck()}})}),r.filter(a=>a instanceof oh).forEach(a=>{let c=this.mapLinkToLink.convert(a);this.linkService.deleteLink(this.controller,c).subscribe({next:()=>this.toasterService.success("Link has been deleted"),error:m=>{let p=m.error?.message||m.message||"Failed to delete link";this.toasterService.error(p),this.cd.markForCheck()}})}),r.filter(a=>a instanceof Va).forEach(a=>{let c=this.mapDrawingToDrawing.convert(a);this.drawingService.delete(this.controller,c).subscribe({next:()=>this.toasterService.success("Drawing has been deleted"),error:m=>{let p=m.error?.message||m.message||"Failed to delete drawing";this.toasterService.error(p),this.cd.markForCheck()}})})}})}onProjectLoad(e){if(!e||!e.project_id){this.progressService.setError("Invalid project data"),this.router.navigate(["/controllers"]);return}this.readonly=this.projectService.isReadOnly(e),this.recentlyOpenedProjectService.setProjectId(this.project.project_id);let n=this.projectService.nodes(this.controller,e.project_id).pipe(Er(o=>(this.nodesDataSource.set(o),this.projectService.links(this.controller,e.project_id))),Er(o=>(this.linksDataSource.set(o),this.projectService.drawings(this.controller,e.project_id)))).subscribe(o=>{this.drawingsDataSource.set(o),this.setUpMapCallbacks(),this.setUpProjectWS(e),this.progressService.deactivate()});this.projectMapSubscription.add(n)}setUpProjectWS(e){this.projectws=new WebSocket(this.notificationService.projectNotificationsPath(this.controller,e.project_id)),this.projectws.onmessage=n=>{this.projectWebServiceHandler.handleMessage(JSON.parse(n.data))},this.projectws.onerror=n=>{this.toasterService.error(`Connection to host lost. Error: ${n.data}`)}}setUpWS(){this.ws=new WebSocket(this.notificationService.notificationsPath(this.controller))}setUpMapCallbacks(){this.readonly||this.toolsService.selectionToolActivation(!0);let e=this.linkWidget.onContextMenu.subscribe(h=>{let g=this.mapLinkToLink.convert(h.link);this.contextMenu().openMenuForListOfElements([],[],[],[g],h.event.clientY,h.event.clientX)}),n=this.ethernetLinkWidget.onContextMenu.subscribe(h=>{let g=this.mapLinkToLink.convert(h.link);this.contextMenu().openMenuForListOfElements([],[],[],[g],h.event.clientY,h.event.clientX)}),o=this.serialLinkWidget.onContextMenu.subscribe(h=>{let g=this.mapLinkToLink.convert(h.link);this.contextMenu().openMenuForListOfElements([],[],[],[g],h.event.clientY,h.event.clientX)}),r=this.nodeWidget.onContextMenu.subscribe(h=>{let g=this.mapNodeToNode.convert(h.node);this.contextMenu().openMenuForNode(g,h.event.clientY,h.event.clientX)}),a=this.drawingsWidget.onContextMenu.subscribe(h=>{let g=this.mapDrawingToDrawing.convert(h.drawing);this.contextMenu().openMenuForDrawing(g,h.event.clientY,h.event.clientX)}),c=this.labelWidget.onContextMenu.subscribe(h=>{let g=this.mapLabelToLabel.convert(h.label),M=this.nodes().find(C=>C.node_id===h.label.nodeId);this.contextMenu().openMenuForLabel(g,M,h.event.clientY,h.event.clientX)}),m=this.interfaceLabelWidget.onContextMenu.subscribe(h=>{let g=this.mapLinkNodeToLinkNode.convert(h.interfaceLabel),M=this.links.find(C=>C.link_id===h.interfaceLabel.linkId);this.contextMenu().openMenuForInterfaceLabel(g,M,h.event.clientY,h.event.clientX)}),p=this.selectionTool.contextMenuOpened.subscribe(h=>{let g=this.selectionManager.getSelected();if(g.length<2||!(h instanceof MouseEvent))return;let M=[],C=[],_=[],w=[];g.forEach(S=>{S instanceof Va?M.push(this.mapDrawingToDrawing.convert(S)):S instanceof Ol?C.push(this.mapNodeToNode.convert(S)):S instanceof pc?_.push(this.mapLabelToLabel.convert(S)):S instanceof oh&&w.push(this.mapLinkToLink.convert(S))}),this.contextMenu().openMenuForListOfElements(M,C,_,w,h.clientY,h.clientX)});this.projectMapSubscription.add(e),this.projectMapSubscription.add(n),this.projectMapSubscription.add(o),this.projectMapSubscription.add(r),this.projectMapSubscription.add(a),this.projectMapSubscription.add(p),this.projectMapSubscription.add(c),this.projectMapSubscription.add(m),this.mapChangeDetectorRef.detectChanges()}onNodeCreation(e){e&&this.nodeService.createFromTemplate(this.controller,this.project,e.template,e.x,e.y,e.controller).subscribe(n=>{this.projectService.nodes(this.controller,this.project.project_id).subscribe(o=>{o.filter(r=>r.label.style===null).forEach(r=>{let a=this.nodeCreatedLabelStylesFixer.fix(r);this.nodeService.updateLabel(this.controller,r,a.label).subscribe()}),this.nodesDataSource.set(o),e.numberOfNodes--,e.numberOfNodes>0&&(e.x=e.x+50<this.project.scene_width/2?e.x+50:e.x,e.y=e.y+50<this.project.scene_height/2?e.y+50:e.y,this.onNodeCreation(e))})},n=>{this.toasterService.error(n.error?.message||n.message||"Failed to create node from template")})}centerView(){if(this.project){let e=this.mapChild()?.context,n=document.documentElement.clientWidth,o=document.documentElement.clientHeight,r=e?e.centerX!==null?e.centerX:e.size.width/2:this.project.scene_width/2,a=e?e.centerY!==null?e.centerY:e.size.height/2:this.project.scene_height/2,c=Math.max(0,r-n/2),m=Math.max(0,a-o/2);window.scrollTo(c,m)}else this.toasterService.error("Please wait until all components are loaded.")}onDrawingSaved(){this.projectMapMenuComponent().resetDrawToolChoice()}set readonly(e){this.inReadOnlyMode=e,e?(this.tools.selection=!1,this.toolsService.selectionToolActivation(!1)):(this.tools.selection=!0,this.toolsService.selectionToolActivation(!0))}get readonly(){return this.inReadOnlyMode}toggleSymbolScaling(e){this.symbolScaling=e,this.mapSettingsService.setSymbolScaling(e)}toggleMovingMode(){this.tools.moving=!this.tools.moving,this.movingEventSource.movingModeState.emit(this.tools.moving),this.readonly||(this.tools.selection=!this.tools.moving,this.toolsService.selectionToolActivation(this.tools.selection))}toggleDrawLineMode(){this.tools.draw_link=!this.tools.draw_link,this.toolsService.drawLinkToolActivation(this.tools.draw_link)}toggleShowInterfaceLabels(e){this.isInterfaceLabelVisible=e,this.mapSettingsService.toggleShowInterfaceLabels(this.isInterfaceLabelVisible),this.mapSettingsService.mapRenderedEmitter.emit(!0)}toggleShowConsole(e){this.isConsoleVisible=e,this.mapSettingsService.toggleLogConsole(this.isConsoleVisible)}onAIChatOpened(){let e=this.aiChatStore.getPanelStateValue();this.aiChatStore.openPanel(),this.isAIChatVisible&&e.isMinimized&&this.aiChatStore.restorePanel(),this.isAIChatVisible=!0}onLeaveProject(){this.closeAIChat(),this.aiChatStore.setPanelState({isOpen:!1,isMinimized:!1,isMaximized:!1})}closeAIChat(){this.isAIChatVisible=!1}openWebWiresharkInline(e){if(this.webWiresharkInlineWindows.has(e.link.link_id)){this.bringWebWiresharkWindowToFront(e.link.link_id),this.toasterService.warning("Web Wireshark is already open for this link");return}this.zIndexCounter++;let n=this.baseZIndex+this.zIndexCounter;this.webWiresharkInlineWindows.set(e.link.link_id,e.link),this.webWiresharkInlineZIndex.set(e.link.link_id,n),this.cd.markForCheck()}closeWebWiresharkInline(e){this.webWiresharkInlineWindows.delete(e),this.webWiresharkInlineZIndex.delete(e),this.cd.markForCheck()}bringWebWiresharkWindowToFront(e){if(!this.webWiresharkInlineWindows.has(e))return;this.zIndexCounter++;let n=this.baseZIndex+this.zIndexCounter;this.webWiresharkInlineZIndex.set(e,n),this.cd.markForCheck()}getWebWiresharkWindowZIndex(e){return this.webWiresharkInlineZIndex.get(e)||this.baseZIndex}getWebWiresharkInlineWindows(){return Array.from(this.webWiresharkInlineWindows.values())}onOpenWebConsoleInline(e){if(this.webConsoleInlineWindows.has(e.node.node_id)){this.bringWebConsoleWindowToFront(e.node.node_id),this.toasterService.warning("Web Console is already open for this node");return}this.zIndexCounter++;let n=this.baseZIndex+this.zIndexCounter;this.webConsoleInlineWindows.set(e.node.node_id,e.node),this.webConsoleInlineZIndex.set(e.node.node_id,n),this.cd.markForCheck()}closeWebConsoleInline(e){this.webConsoleInlineWindows.delete(e),this.webConsoleInlineZIndex.delete(e),this.cd.markForCheck()}bringWebConsoleWindowToFront(e){if(!this.webConsoleInlineWindows.has(e))return;this.zIndexCounter++;let n=this.baseZIndex+this.zIndexCounter;this.webConsoleInlineZIndex.set(e,n),this.cd.markForCheck()}getWebConsoleWindowZIndex(e){return this.webConsoleInlineZIndex.get(e)||this.baseZIndex}getWebConsoleInlineWindows(){return Array.from(this.webConsoleInlineWindows.values())}bringConsoleToFront(){this.zIndexCounter++,this.consoleZIndex=this.baseZIndex+this.zIndexCounter,this.cd.markForCheck()}bringAIChatToFront(){this.zIndexCounter++,this.aiChatZIndex=this.baseZIndex+this.zIndexCounter,this.cd.markForCheck()}restoreConsole(){this.windowManagement.restoreWindow("console"),this.cd.markForCheck()}restoreWiresharkWindow(e){this.windowManagement.restoreWindow(`wireshark-${e}`),this.cd.markForCheck()}getConsoleTaskbarLeft(){return this.TASKBAR_BASE_LEFT}getWiresharkTaskbarLeft(e){if(!e)return this.TASKBAR_BASE_LEFT;let o=this.getWebWiresharkInlineWindows().findIndex(a=>a.link_id===e),r=this.TASKBAR_ICON_WIDTH+this.TASKBAR_ICON_GAP;return this.TASKBAR_BASE_LEFT+r+o*(this.TASKBAR_ICON_WIDTH+this.TASKBAR_ICON_GAP)}getWebConsoleTaskbarLeft(e){if(!e)return this.TASKBAR_BASE_LEFT;let o=this.getWebConsoleInlineWindows().findIndex(c=>c.node_id===e),r=this.TASKBAR_ICON_WIDTH+this.TASKBAR_ICON_GAP,a=this.webWiresharkInlineWindows.size;return r+=a*(this.TASKBAR_ICON_WIDTH+this.TASKBAR_ICON_GAP),this.TASKBAR_BASE_LEFT+r+o*(this.TASKBAR_ICON_WIDTH+this.TASKBAR_ICON_GAP)}toggleWebConsoleMinimize(e){let n=`console-${e}`;this.windowManagement.minimizedWindows().some(r=>r.id===n)?this.windowManagement.restoreWindow(n):this.windowManagement.minimizeWindow(n,"console",e),this.cd.markForCheck()}toggleConsoleMinimize(){this.windowManagement.minimizedWindows().some(n=>n.id==="console")?this.windowManagement.restoreWindow("console"):this.windowManagement.minimizeWindow("console","console"),this.cd.markForCheck()}toggleWiresharkMinimize(e){let n=`wireshark-${e}`;this.windowManagement.minimizedWindows().some(r=>r.id===n)?this.windowManagement.restoreWindow(n):this.windowManagement.minimizeWindow(n,"wireshark",e),this.cd.markForCheck()}toggleShowTopologySummary(e){this.isTopologySummaryVisible=e,this.mapSettingsService.toggleTopologySummary(this.isTopologySummaryVisible),this.lazyLoadTopologySummary(),this.cd.markForCheck()}toggleNotifications(e){this.notificationsVisibility=e,this.notificationsVisibility?localStorage.setItem("notificationsVisibility","true"):localStorage.removeItem("notificationsVisibility")}toggleLayers(e){this.layersVisibility=e,this.mapSettingsService.toggleLayers(e),this.layersVisibility?localStorage.setItem("layersVisibility","true"):localStorage.removeItem("layersVisibility"),this.mapChild().applyMapSettingsChanges()}toggleGrid(e){this.gridVisibility=e,this.gridVisibility?localStorage.setItem("gridVisibility","true"):localStorage.removeItem("gridVisibility"),this.mapChild().gridVisibility.set(this.gridVisibility?1:0),this.mapChild().applyMapSettingsChanges()}toggleSnapToGrid(e){let n=this.project.snap_to_grid;this.project.snap_to_grid=e,this.projectService.update(this.controller,this.project).subscribe(o=>{this.project.snap_to_grid=o.snap_to_grid},()=>{this.project.snap_to_grid=n,this.toasterService.error("Cannot update project settings")})}showMessage(e){this.notificationsVisibility&&(e.type==="error"&&this.toasterService.error(e.message),e.type==="warning"&&this.toasterService.warning(e.message))}hideMenu(){this.projectMapMenuComponent().resetDrawToolChoice(),this.isProjectMapMenuVisible=!1}showMenu(){this.isProjectMapMenuVisible=!0}zoomIn(){this.mapScaleService.setScale(this.mapScaleService.getScale()+.1)}zoomOut(){let e=this.mapScaleService.getScale();e-.1>0&&this.mapScaleService.setScale(e-.1)}resetZoom(){this.mapScaleService.resetToDefault()}addNewProject(){let n=this.dialog.open(Qg,{width:"400px",autoFocus:!1,disableClose:!0}).componentInstance;n.controller=this.controller}saveProject(){let n=this.dialog.open(oM,{width:"400px",autoFocus:!1,disableClose:!0}).componentInstance;n.controller=this.controller,n.project=this.project}editProject(){let e=this.dialog.open(Zg,{autoFocus:!1,disableClose:!0,panelClass:["base-dialog-panel","configurator-dialog-panel","edit-project-dialog-panel"]}),n=e.componentInstance;n.controller=this.controller,n.project=this.project,e.afterClosed().subscribe(o=>{o&&(this.project=o,this.cd.markForCheck())})}importProject(){let e="",n=this.dialog.open(Jg,{width:"400px",autoFocus:!1,disableClose:!0}),o=n.componentInstance;o.controller=this.controller;let r=n.componentInstance.onImportProject.subscribe(a=>{e=a});n.afterClosed().subscribe(a=>{if(r.unsubscribe(),e&&!a){this.bottomSheet.open(e_);let c=this.bottomSheet._openedBottomSheetRef;c.instance.projectMessage="imported project";let m=c.afterDismissed().subscribe(p=>{p&&this.projectService.open(this.controller,e).subscribe({next:()=>{this.router.navigate(["/controller",this.controller.id,"project",e])},error:h=>{let g=h.error?.message||h.message||"Failed to open project";this.toasterService.error(g),this.cd.markForCheck()}})})}})}exportProject(){this.nodes().filter(e=>e.node_type==="virtualbox").length>0?this.toasterService.error("Map with VirtualBox machines cannot be exported."):this.nodes().filter(e=>e.status==="started"&&e.node_type==="vpcs"||e.status==="started"&&e.node_type==="virtualbox"||e.status==="started"&&e.node_type==="vmware").length>0?this.toasterService.error("Project with running nodes cannot be exported."):this.exportPortableProjectDialog()}exportPortableProjectDialog(){this.dialog.open(ig,{panelClass:["base-dialog-panel","simple-dialog-panel"],autoFocus:!1,disableClose:!0,data:{controllerDetails:this.controller,projectDetails:this.project}}).afterClosed().subscribe(n=>{})}uploadImageFile(e){this.readImageFile(e.target)}readImageFile(e){let n=e.files[0],o=new FileReader,r=new Image;o.onloadend=()=>{let a=o.result,c=`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||
height="${r.height}" width="${r.width}">
|
||
<image height="${r.height}" width="${r.width}"
|
||
xlink:href="${a}"/>
|
||
</svg>`;this.drawingService.add(this.controller,this.project.project_id,-(r.width/2),-(r.height/2),c).subscribe({next:()=>{},error:m=>{let p=m.error?.message||m.message||"Failed to add image";this.toasterService.error(p),this.cd.markForCheck()}})},r.onload=()=>{o.readAsDataURL(n)},r.src=window.URL.createObjectURL(n)}closeProject(){let n=this.bottomSheet.open(ns,{data:{message:"Do you want to close the project?"},panelClass:"confirmation-bottom-sheet"}).afterDismissed().subscribe(o=>{o&&this.projectService.close(this.controller,this.project.project_id).subscribe({next:()=>{this.router.navigate(["/controller",this.controller.id,"projects"])},error:r=>{let a=r.error?.message||r.message||"Failed to close project";this.toasterService.error(a),this.cd.markForCheck()}})})}deleteProject(){let n=this.bottomSheet.open(ns,{data:{message:"Do you want to delete the project?"},panelClass:"confirmation-bottom-sheet"}).afterDismissed().subscribe(o=>{o&&this.projectService.delete(this.controller,this.project.project_id).subscribe({next:()=>{this.router.navigate(["/controller",this.controller.id,"projects"])},error:r=>{let a=r.error?.message||r.message||"Failed to delete project";this.toasterService.error(a),this.cd.markForCheck()}})})}addNewTemplate(){let n=this.dialog.open(p_,{width:"800px",maxHeight:"800px",autoFocus:!1,disableClose:!0,panelClass:["base-dialog-panel","configurator-dialog-panel","new-template-dialog-panel"]}).componentInstance;n.controller=this.controller,n.project=this.project}showReadme(){let n=this.dialog.open(Dk,{width:"600px",height:"650px",autoFocus:!1,disableClose:!0}).componentInstance;n.controller=this.controller,n.project=this.project}ngOnDestroy(){this.onLeaveProject(),this.nodeConsoleService.openConsoles=0,this.title.setTitle("GNS3 Web UI"),this.drawingsDataSource.clear(),this.nodesDataSource.clear(),this.linksDataSource.clear(),this.projectws&&this.projectws.OPEN&&this.projectws.close(),this.ws&&this.ws.OPEN&&this.ws.close(),this.projectMapSubscription.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-project-map"]],viewQuery:function(n,o){n&1&&tn(o.contextMenu,c_,5)(o.mapChild,j2,5)(o.projectMapMenuComponent,f_,5)(o.topologySummaryContainer,dPe,5,co),n&2&&nn(4)},decls:166,vars:76,consts:[["projectMap",""],["mainMenu","matMenu"],["projectMenu","matMenu"],["viewMenu","matMenu"],["topologySummaryContainer",""],[1,"project-map",3,"ngClass"],["id","project-titlebar"],["matTooltip","Open menu","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"gns3-button","menu-button",3,"matMenuTriggerFor"],["svgIcon","gns3"],[1,"project-titlebar-controls"],[1,"menu-button-group","primary-controls"],[1,"menu-button-group"],[3,"controller","project"],[3,"openWebWiresharkInline","openWebConsoleInline","project","controller"],["matTooltip","Toggle topology/controllers summary","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",3,"click"],[3,"overlapTrigger"],["mat-menu-item","",3,"routerLink"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"matMenuTriggerFor"],[1,"options-item"],[3,"change","checked"],[3,"controller","project","symbols","nodes","links","drawings","width","height","show-interface-labels","readonly"],["id","project-toolbar"],[1,"section"],["matTooltip","Selection mode","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"selection-button","menu-button",3,"click","color"],["matTooltip","Pan workspace","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"pan-button","menu-button",3,"click","color"],["matTooltip","Zoom in","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"zoom-button",3,"click"],["matTooltip","Reset zoom","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"reset-zoom-button",3,"click"],["matTooltip","Zoom out","matTooltipClass","custom-tooltip","matTooltipPosition","left","mat-icon-button","",1,"zoom-button",3,"click"],[3,"aiChatOpened","controller","project"],[3,"links"],[3,"controller"],[3,"drawingSaved","controller","project"],[3,"ngClass"],[3,"controller","project","zIndex"],[3,"project","controller","zIndex"],[1,"inline-taskbar"],[1,"inline-taskbar__icon",3,"inline-taskbar__icon--minimized","left","title"],[3,"nodeCreationChange","controller","project"],["matTooltip","Add a link","matTooltipClass","custom-tooltip","matTooltipPosition","below","mat-icon-button","",1,"menu-button",3,"click","ngClass","color"],[3,"closeConsole","windowFocused","controller","project","zIndex"],[3,"closed","windowFocused","project","controller","zIndex"],[3,"link","controller","project","zIndex"],[3,"closeWindow","windowFocused","link","controller","project","zIndex"],[3,"node","controller","project","zIndex"],[3,"closeWindow","windowFocused","node","controller","project","zIndex"],[1,"inline-taskbar__icon",3,"click","title"],[1,"inline-taskbar__icon-type"],[1,"inline-taskbar__label"]],template:function(n,o){if(n&1&&(s(0,"div",5,0)(2,"div",6)(3,"button",7),F(4,"mat-icon",8),l(),s(5,"div",9),A(6,vPe,5,6,"div",10),s(7,"div",11),F(8,"app-nodes-menu",12),s(9,"app-context-menu",13),v("openWebWiresharkInline",function(a){return o.openWebWiresharkInline(a)})("openWebConsoleInline",function(a){return o.onOpenWebConsoleInline(a)}),l()()(),s(10,"div")(11,"button",14),v("click",function(){return o.toggleShowTopologySummary(!o.isTopologySummaryVisible)}),s(12,"mat-icon"),d(13,"toc"),l()()(),s(14,"mat-menu",15,1)(16,"button",16)(17,"mat-icon"),d(18,"developer_board"),l(),s(19,"span"),d(20,"Controllers"),l()(),s(21,"button",16)(22,"mat-icon"),d(23,"work"),l(),s(24,"span"),d(25,"Projects"),l()(),s(26,"button",16)(27,"mat-icon"),d(28,"dns"),l(),s(29,"span"),d(30,"Computes"),l()(),s(31,"button",16)(32,"mat-icon"),d(33,"settings_applications"),l(),s(34,"span"),d(35,"Template preferences"),l()(),s(36,"button",16)(37,"mat-icon"),d(38,"collections"),l(),s(39,"span"),d(40,"Image manager"),l()(),s(41,"button",17),v("click",function(){return o.addNewTemplate()}),s(42,"mat-icon"),d(43,"control_point"),l(),s(44,"span"),d(45,"New template"),l()(),F(46,"app-import-appliance",12),s(47,"button",18)(48,"mat-icon"),d(49,"settings"),l(),s(50,"span"),d(51,"Project settings"),l()(),s(52,"button",18)(53,"mat-icon"),d(54,"view_module"),l(),s(55,"span"),d(56,"Map settings"),l()()(),s(57,"mat-menu",15,2)(59,"div")(60,"button",17),v("click",function(){return o.addNewProject()}),s(61,"mat-icon"),d(62,"add"),l(),s(63,"span"),d(64,"Add new blank project"),l()(),s(65,"button",17),v("click",function(){return o.saveProject()}),s(66,"mat-icon"),d(67,"save"),l(),s(68,"span"),d(69,"Save project as"),l()(),s(70,"button",17),v("click",function(){return o.editProject()}),s(71,"mat-icon"),d(72,"edit"),l(),s(73,"span"),d(74,"Edit project"),l()(),s(75,"button",17),v("click",function(){return o.exportProject()}),s(76,"mat-icon"),d(77,"call_made"),l(),s(78,"span"),d(79,"Export project"),l()(),s(80,"button",17),v("click",function(){return o.importProject()}),s(81,"mat-icon"),d(82,"call_received"),l(),s(83,"span"),d(84,"Import project"),l()(),s(85,"button",17),v("click",function(){return o.closeProject()}),s(86,"mat-icon"),d(87,"close"),l(),s(88,"span"),d(89,"Close project"),l()(),s(90,"button",17),v("click",function(){return o.deleteProject()}),s(91,"mat-icon"),d(92,"delete"),l(),s(93,"span"),d(94,"Delete project"),l()()()(),s(95,"mat-menu",15,3)(97,"div",19)(98,"mat-checkbox",20),v("change",function(a){return o.toggleShowInterfaceLabels(a.checked)}),d(99," Show interface labels "),l(),F(100,"br"),s(101,"mat-checkbox",20),v("change",function(a){return o.toggleShowConsole(a.checked)}),d(102," Show console "),l(),F(103,"br"),s(104,"mat-checkbox",20),v("change",function(a){return o.toggleShowTopologySummary(a.checked)}),d(105," Show topology/controllers summary "),l(),F(106,"br"),s(107,"mat-checkbox",20),v("change",function(a){return o.toggleNotifications(a.checked)}),d(108," Show notifications "),l(),F(109,"br"),s(110,"mat-checkbox",20),v("change",function(a){return o.toggleLayers(a.checked)}),d(111," Show layers "),l(),F(112,"br"),s(113,"mat-checkbox",20),v("change",function(a){return o.toggleGrid(a.checked)}),d(114," Show grid "),l(),F(115,"br"),s(116,"mat-checkbox",20),v("change",function(a){return o.toggleSnapToGrid(a.checked)}),d(117," Snap to grid "),l(),F(118,"br"),s(119,"mat-checkbox",20),v("change",function(a){return o.toggleSymbolScaling(a.checked)}),d(120," Scale symbols "),l(),F(121,"br"),l()()(),F(122,"app-d3-map",21),s(123,"div",22)(124,"div",23)(125,"button",24),v("click",function(){return o.toggleMovingMode()}),s(126,"mat-icon"),d(127,"near_me"),l()(),s(128,"button",25),v("click",function(){return o.toggleMovingMode()}),s(129,"mat-icon"),d(130,"zoom_out_map"),l()(),s(131,"button",26),v("click",function(){return o.zoomIn()}),s(132,"mat-icon"),d(133,"zoom_in"),l()(),s(134,"button",27),v("click",function(){return o.resetZoom()}),s(135,"mat-icon"),d(136,"adjust"),l()(),s(137,"button",28),v("click",function(){return o.zoomOut()}),s(138,"mat-icon"),d(139,"zoom_out"),l()()(),s(140,"div",23)(141,"app-project-map-menu",29),v("aiChatOpened",function(){return o.onAIChatOpened()}),l()(),A(142,bPe,2,2,"div",23),l(),F(143,"app-progress"),A(144,CPe,1,1,"app-draw-link-tool",30),F(145,"app-drawing-dragged",12)(146,"app-drawing-resized",31)(147,"app-interface-label-dragged",31)(148,"app-link-created",12)(149,"app-node-dragged",12)(150,"app-node-label-dragged",31),s(151,"app-text-added",32),v("drawingSaved",function(){return o.onDrawingSaved()}),l(),F(152,"app-text-edited",31),s(153,"div",33),A(154,xPe,1,3,"app-console-wrapper",34),l(),A(155,yPe,1,3,"app-ai-chat",35),A(156,wPe,2,0),A(157,kPe,2,0),s(158,"div",36),A(159,TPe,5,7,"div",37),J(160,EPe,5,7,"div",37,qU),J(162,DPe,5,7,"div",37,XU),l()(),Ae(164,PPe,0,0,"ng-template",null,4,Jp)),n&2){let r=Re(15),a=Re(58),c=Re(96);je("pan-mode",o.tools.moving),x("ngClass",o.mapBgClass()),u(3),x("matMenuTriggerFor",r),u(3),O(o.readonly?-1:6),u(2),x("controller",o.controller)("project",o.project),u(),x("project",o.project)("controller",o.controller),u(5),x("overlapTrigger",!1),u(2),x("routerLink",Jt(69,mPe)),u(5),x("routerLink",ln(70,pPe,o.controller.id)),u(5),x("routerLink",no("/controller/",o.controller.id,"/computes")),u(5),x("routerLink",no("/controller/",o.controller.id,"/preferences")),u(5),x("routerLink",ln(72,uPe,o.controller.id)),u(10),x("controller",o.controller)("project",o.project),u(),x("matMenuTriggerFor",a),u(5),x("matMenuTriggerFor",c),u(5),x("overlapTrigger",!1),u(38),x("overlapTrigger",!1),u(3),x("checked",o.isInterfaceLabelVisible),u(3),x("checked",o.isConsoleVisible),u(3),x("checked",o.isTopologySummaryVisible),u(3),x("checked",o.notificationsVisibility),u(3),x("checked",o.layersVisibility),u(3),x("checked",o.gridVisibility),u(3),x("checked",o.project.snap_to_grid),u(3),x("checked",o.symbolScaling),u(3),x("controller",o.controller)("project",o.project)("symbols",o.symbols)("nodes",o.nodes())("links",o.links)("drawings",o.drawings)("width",o.project.scene_width||2e3)("height",o.project.scene_height||2e3)("show-interface-labels",o.isInterfaceLabelVisible)("readonly",o.inReadOnlyMode),u(3),je("tool-active",!o.tools.moving),x("color",o.tools.moving?"basic":"primary"),u(3),je("tool-active",o.tools.moving),x("color",o.tools.moving?"primary":"basic"),u(13),x("controller",o.controller)("project",o.project),u(),O(o.readonly?-1:142),u(2),O(o.tools.draw_link?144:-1),u(),x("controller",o.controller)("project",o.project),u(),x("controller",o.controller),u(),x("controller",o.controller),u(),x("controller",o.controller)("project",o.project),u(),x("controller",o.controller)("project",o.project),u(),x("controller",o.controller),u(),x("controller",o.controller)("project",o.project),u(),x("controller",o.controller),u(),x("ngClass",ln(74,hPe,!o.isConsoleVisible)),u(),O(o.project?154:-1),u(),O(o.project&&o.isAIChatVisible?155:-1),u(),O(o.project&&o.webWiresharkInlineWindows.size>0?156:-1),u(),O(o.project&&o.webConsoleInlineWindows.size>0?157:-1),u(2),O(o.project&&o.isConsoleVisible?159:-1),u(),ee(o.getWebWiresharkInlineWindows()),u(2),ee(o.getWebConsoleInlineWindows())}},dependencies:[Z,Zi,nt,$,ze,Ot,Ht,te,se,Qe,Fn,ot,kn,Gt,Kt,at,cn,j2,c_,f_,qk,Yk,nT,Zk,Xk,Gk,Fk,IU,AU,Jm,BU,VU,zU,jU,$U,HU,UU,GU],styles:[".shadow-subtle[_ngcontent-%COMP%], #project-toolbar[_ngcontent-%COMP%]{box-shadow:0 1px 3px color-mix(in srgb,var(--mat-sys-shadow) var(--gns3-shadow-opacity-light),transparent)}.shadow-normal[_ngcontent-%COMP%], .shadow[_ngcontent-%COMP%], #project-titlebar[_ngcontent-%COMP%]{box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) var(--gns3-shadow-opacity-normal),transparent)}.shadow-medium[_ngcontent-%COMP%], #menu-wrapper[_ngcontent-%COMP%], .shadowed[_ngcontent-%COMP%]{box-shadow:0 4px 16px color-mix(in srgb,var(--mat-sys-shadow) var(--gns3-shadow-opacity-medium),transparent)}.shadow-heavy[_ngcontent-%COMP%]{box-shadow:0 4px 16px color-mix(in srgb,var(--mat-sys-shadow) var(--gns3-shadow-opacity-heavy),transparent)}.selection-on-primary[_ngcontent-%COMP%], #project-titlebar[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--mat-sys-on-primary) var(--gns3-selection-opacity-normal),transparent)}.selection-on-primary[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], #project-titlebar[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], .selection-on-primary[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%], #project-titlebar[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary)}.selection-on-surface[_ngcontent-%COMP%]{background:var(--mat-sys-primary-container)}.selection-on-surface[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], .selection-on-surface[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.selection-svg-stroke[_ngcontent-%COMP%], line.selected[_ngcontent-%COMP%]{stroke:var(--mat-sys-primary)}.selection-error[_ngcontent-%COMP%], path.curve_element.selected[_ngcontent-%COMP%], path.serial_link.selected[_ngcontent-%COMP%]{stroke:var(--mat-sys-error)}.wrapper[_ngcontent-%COMP%]{height:500px}app-root[_ngcontent-%COMP%], app-project-map[_ngcontent-%COMP%], .project-map[_ngcontent-%COMP%], app-map[_ngcontent-%COMP%]{width:auto}g.node[_ngcontent-%COMP%]:hover{background-color:var(--mat-sys-primary)}.project-map[_ngcontent-%COMP%]{background:var(--gns3-map-bg, var(--mat-sys-surface));min-height:100vh;min-width:100vw}.project-map[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{fill:var(--mat-sys-on-surface)}.project-map[_ngcontent-%COMP%] path.ethernet_link[_ngcontent-%COMP%]{stroke:var(--mat-sys-on-surface)}.project-map[_ngcontent-%COMP%] path.serial_link[_ngcontent-%COMP%]{stroke:var(--mat-sys-error)}.project-map[_ngcontent-%COMP%] g.drawing-line-tool[_ngcontent-%COMP%] path[_ngcontent-%COMP%]{stroke:var(--mat-sys-on-surface)}.project-map.pan-mode[_ngcontent-%COMP%] app-d3-map[_ngcontent-%COMP%]{cursor:grab}.project-map.pan-mode[_ngcontent-%COMP%] app-d3-map[_ngcontent-%COMP%] svg.map[_ngcontent-%COMP%]{cursor:grab}#project-titlebar[_ngcontent-%COMP%]{position:fixed;top:0;left:0;right:0;height:64px;padding:0 16px;background-color:var(--mat-sys-primary);color:var(--mat-sys-on-primary);display:flex;justify-content:space-between;align-items:center;z-index:2;transition:background-color .2s ease}#project-titlebar[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary)}#project-titlebar[_ngcontent-%COMP%] .gns3-button[_ngcontent-%COMP%]{position:relative;top:-2px}#project-titlebar[_ngcontent-%COMP%] .gns3-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:30px;height:30px}#project-titlebar[_ngcontent-%COMP%] .primary-controls[_ngcontent-%COMP%]{border-right:1px solid color-mix(in srgb,var(--mat-sys-on-primary) var(--gns3-border-opacity-medium),transparent);padding-right:16px;margin-right:16px}#project-titlebar[_ngcontent-%COMP%] .menu-button-group[_ngcontent-%COMP%]{display:flex;align-items:center;height:40px}#project-titlebar[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;height:40px;width:40px;margin:0 8px;border-radius:20px;background:none;font-size:14px;transition:transform .1s ease}#project-titlebar[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary)}#project-titlebar[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%]:hover{transform:scale(1.3)}#project-titlebar[_ngcontent-%COMP%] .menu-button.selected[_ngcontent-%COMP%]:hover{transform:scale(1.15)}#project-titlebar[_ngcontent-%COMP%] .add-menu-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:28px}#project-titlebar[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--mat-sys-on-primary) 30%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--mat-sys-on-primary) 50%,transparent);transform:scale(1.15)}#project-titlebar[_ngcontent-%COMP%] .project-titlebar-controls[_ngcontent-%COMP%]{display:flex;align-items:center}#project-toolbar[_ngcontent-%COMP%]{position:fixed;top:64px;left:0;width:56px;margin:16px;background-color:var(--mat-sys-surface-container);border-radius:4px;z-index:2;transition:background-color .2s ease;display:flex;flex-direction:column;align-items:center}#project-toolbar[_ngcontent-%COMP%] button.mat-mdc-icon-button[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;--mdc-icon-button-icon-size: 20px;--mat-icon-button-icon-size: 20px;--mat-icon-button-state-layer-size: 40px;--mdc-icon-button-state-layer-size: 40px}#project-toolbar[_ngcontent-%COMP%] button.mat-mdc-icon-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;font-size:20px;margin:0}#project-toolbar[_ngcontent-%COMP%] button.mat-mdc-icon-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:20px;height:20px}#project-toolbar[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%], #project-toolbar[_ngcontent-%COMP%] .zoom-button[_ngcontent-%COMP%], #project-toolbar[_ngcontent-%COMP%] .reset-zoom-button[_ngcontent-%COMP%], #project-toolbar[_ngcontent-%COMP%] .selection-button[_ngcontent-%COMP%], #project-toolbar[_ngcontent-%COMP%] .snapshot-button[_ngcontent-%COMP%]{width:40px;height:40px;border-radius:20px;margin:2px 0;transition:transform .1s ease}#project-toolbar[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%]:hover, #project-toolbar[_ngcontent-%COMP%] .zoom-button[_ngcontent-%COMP%]:hover, #project-toolbar[_ngcontent-%COMP%] .reset-zoom-button[_ngcontent-%COMP%]:hover, #project-toolbar[_ngcontent-%COMP%] .selection-button[_ngcontent-%COMP%]:hover, #project-toolbar[_ngcontent-%COMP%] .snapshot-button[_ngcontent-%COMP%]:hover{transform:scale(1.3)}#project-toolbar[_ngcontent-%COMP%] .menu-button.tool-active[_ngcontent-%COMP%], #project-toolbar[_ngcontent-%COMP%] .selection-button.tool-active[_ngcontent-%COMP%]{background-color:var(--mat-sys-secondary-container)}#project-toolbar[_ngcontent-%COMP%] .menu-button.tool-active[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], #project-toolbar[_ngcontent-%COMP%] .selection-button.tool-active[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-secondary-container)}#project-toolbar[_ngcontent-%COMP%] .selection-button[_ngcontent-%COMP%]{margin-bottom:0}#project-toolbar[_ngcontent-%COMP%] .section[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:center;align-items:center;border-top:1px solid var(--mat-sys-outline-variant);padding:5px 0}#project-toolbar[_ngcontent-%COMP%] .section[_ngcontent-%COMP%]:first-child{border:none}img[_ngcontent-%COMP%]{-webkit-filter:invert(1);filter:invert(1)}#show-menu-wrapper[_ngcontent-%COMP%]{position:fixed;background:transparent;top:0;left:92px;background:var(--mat-sys-surface);height:48px;padding-top:16px;transition:background-color .2s ease}#show-menu-wrapper[_ngcontent-%COMP%] .arrow-button[_ngcontent-%COMP%]{outline:0}.non-visible[_ngcontent-%COMP%]{display:none}#menu-wrapper[_ngcontent-%COMP%]{position:fixed;background:transparent;top:0;left:92px;right:0;background:var(--mat-sys-surface);height:48px;padding-top:16px;padding-bottom:16px;transition:35s;width:0;overflow:hidden;transition:.1s ease;display:flex}#menu-wrapper[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%]{outline:0;transition:.5s;margin-bottom:16px;width:40px;margin-right:16px;margin-left:16px;background:transparent;padding:0;border:none;background-color:transparent}#menu-wrapper[_ngcontent-%COMP%] .arrow-button[_ngcontent-%COMP%]{outline:0;transition:.5s;margin-bottom:16px}.extended[_ngcontent-%COMP%]{width:200px;height:100%;overflow:hidden}mat-divider.divider[_ngcontent-%COMP%]{height:40px;margin-left:1px;margin-right:7px;width:10px;color:var(--mat-sys-outline-variant)}@-moz-document url-prefix(){.mat-drawer-content{display:inline}}.mat-drawer-backdrop.mat-drawer-shown[_ngcontent-%COMP%]{background-color:transparent}.project-toolbar[_ngcontent-%COMP%] .mat-toolbar-multiple-rows[_ngcontent-%COMP%]{width:auto}.loading-spinner[_ngcontent-%COMP%]{position:absolute;top:50%;width:100px;margin-left:-50px;margin-top:-50px;left:50%}svg.map[_ngcontent-%COMP%] image[_ngcontent-%COMP%]:hover, svg.map[_ngcontent-%COMP%] image.chosen[_ngcontent-%COMP%], g.selected[_ngcontent-%COMP%]{filter:url(#grayscale)}.selected[_ngcontent-%COMP%] > .interface_label_border[_ngcontent-%COMP%]{stroke:var(--mat-sys-on-surface);fill:none}g.node[_ngcontent-%COMP%] text[_ngcontent-%COMP%], .noselect[_ngcontent-%COMP%]{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.project-toolbar[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{outline:0;border:none;-moz-outline-style:none}.options-item[_ngcontent-%COMP%]{padding-left:16px;padding-right:16px}.context-menu-items[_ngcontent-%COMP%] .mat-menu-item[_ngcontent-%COMP%]{line-height:32px;height:32px;font-size:12px;padding:0 6px;outline:none}.context-menu-items[_ngcontent-%COMP%] .mat-menu-item[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{margin-right:3px}.context-menu-items[_ngcontent-%COMP%] .mat-menu-item[_ngcontent-%COMP%]:focus{background:none}.context-menu-items[_ngcontent-%COMP%] .mat-menu-item.cdk-focused[_ngcontent-%COMP%]:not(:hover), .context-menu-items[_ngcontent-%COMP%] .mat-menu-item.cdk-program-focused[_ngcontent-%COMP%]:not(:hover), .context-menu-items[_ngcontent-%COMP%] .mat-menu-item.cdk-keyboard-focused[_ngcontent-%COMP%]:not(:hover){background:none}.context-menu-items[_ngcontent-%COMP%] .mat-menu-item[_ngcontent-%COMP%]:hover{background-color:var(--mat-sys-surface-container)}.visible[_ngcontent-%COMP%]{display:none}mat-menu-panel[_ngcontent-%COMP%]{min-height:0}.unmarked[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface)}.inline-taskbar[_ngcontent-%COMP%]{position:fixed;bottom:20px;left:0;z-index:999;display:flex;gap:8px}.inline-taskbar__icon[_ngcontent-%COMP%]{position:absolute;bottom:0;display:flex;align-items:center;gap:8px;padding:8px 12px;height:48px;width:180px;cursor:pointer;user-select:none;transition:background-color .15s var(--mat-sys-motion-easing-linear);background:var(--mat-sys-surface);border-radius:8px;box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 25%,transparent),0 0 0 1px var(--mat-sys-outline-variant)}.inline-taskbar__icon[_ngcontent-%COMP%]:hover{background:var(--mat-sys-hover-state-layer)}.inline-taskbar__icon[_ngcontent-%COMP%]:active{background:var(--mat-sys-focus-state-layer)}.inline-taskbar__icon--minimized[_ngcontent-%COMP%]{opacity:.7}.inline-taskbar__icon--minimized[_ngcontent-%COMP%]:hover{opacity:1}.inline-taskbar__icon-type[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;color:var(--mat-sys-primary);flex-shrink:0}.inline-taskbar__label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--mat-sys-on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}"],changeDetection:0})}return t})();var oT=(()=>{class t{dialogRef=f(Pe);projectService=f(Fi);cd=f(K);controller;project;name=ae("");ngOnInit(){this.name.set(this.project.name),this.cd.markForCheck()}onCloseClick(){this.dialogRef.close()}onSaveClick(){this.projectService.duplicate(this.controller,this.project.project_id,this.name()).subscribe(()=>{this.dialogRef.close()})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-choose-name-dialog"]],inputs:{controller:"controller",project:"project",name:[1,"name"]},outputs:{name:"nameChange"},decls:10,vars:1,consts:[["mat-dialog-title",""],[1,"modal-form-container"],[1,"form-field"],["matInput","","placeholder","Project name","type","text",3,"input","value"],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Save project as"),l(),s(2,"div",1)(3,"mat-form-field",2)(4,"input",3),v("input",function(a){return o.name.set(a.target.value)}),l()()(),s(5,"div",4)(6,"button",5),v("click",function(){return o.onCloseClick()}),d(7,"Cancel"),l(),s(8,"button",6),v("click",function(){return o.onSaveClick()}),d(9,"Save project"),l()()),n&2&&(u(4),x("value",o.name()))},dependencies:[Z,nt,Ce,Ve,Be,$,le,we,Te,ke,Me],styles:[".form-field[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();var IPe=t=>({"deleted-error-text":t});function APe(t,i){if(t&1&&(s(0,"p"),d(1),l()),t&2){let e=i.$implicit,n=i.$index;u(),Hi("",n+1,". ",e==null?null:e.filename)}}function OPe(t,i){if(t&1){let e=j();s(0,"h1",0),d(1,"Do you want delete all projects?"),l(),s(2,"div",1)(3,"p"),d(4,"Your selected projects"),l(),J(5,APe,2,2,"p",null,Ii),l(),s(7,"div",2)(8,"button",3),v("click",function(){D(e);let o=b();return P(o.deleteAll())}),d(9,"Delete"),l(),s(10,"button",4),d(11,"Cancel"),l()()}if(t&2){let e=b();u(5),ee(e.deleteData==null?null:e.deleteData.deleteFilesPaths)}}function NPe(t,i){t&1&&(s(0,"h1",5),d(1,"Please wait."),l(),s(2,"div",6),F(3,"mat-spinner",7),l())}function RPe(t,i){if(t&1&&(s(0,"span"),d(1),l()),t&2){let e=b(),n=e.$implicit,o=e.$index;u(),Hi("",o+1,". ",n==null||n.error==null?null:n.error.message)}}function FPe(t,i){if(t&1&&(s(0,"p",10),A(1,RPe,2,2,"span"),l()),t&2){let e=i.$implicit;x("ngClass",ln(2,IPe,e==null||e.error==null?null:e.error.message)),u(),O(e!==null?1:-1)}}function LPe(t,i){if(t&1&&(s(0,"h5"),d(1,"Project can't be deleted because image used in one or more template."),l(),J(2,FPe,2,4,"p",10,Ii)),t&2){let e=b(2);u(2),ee(e.deleteFliesDetails())}}function BPe(t,i){if(t&1&&(s(0,"h5",8),d(1),l()),t&2){let e=b(2);u(),X("",e.fileNotDeleted().length," Projects deleted successfully.")}}function VPe(t,i){if(t&1){let e=j();s(0,"div",1),A(1,LPe,4,0),A(2,BPe,2,1,"h5",8),l(),s(3,"div",2)(4,"button",9),v("click",function(){D(e);let o=b();return P(o.dialogRef.close(!1))}),d(5,"Close"),l()()}if(t&2){let e=b();u(),O(e.deleteFliesDetails().length>0?1:-1),u(),O(e.fileNotDeleted().length>0?2:-1)}}var rT=(()=>{class t{deleteData;dialogRef=f(Pe);projectService=f(Fi);toasterService=f(fe);isDelete=me(!1);isUsedFiles=me(!1);deleteFliesDetails=me([]);fileNotDeleted=me([]);constructor(e){this.deleteData=e}async deleteAll(){this.isDelete.set(!0),await this.deleteFile()}deleteFile(){let e=[];this.deleteData.deleteFilesPaths.forEach(n=>{e.push(this.projectService.delete(this.deleteData.controller,n.project_id).pipe(hi(o=>xt(o))))}),lo(e).subscribe(n=>{this.deleteFliesDetails.set(n.filter(o=>o!==null)),this.fileNotDeleted.set(n.filter(o=>o===null)),this.isUsedFiles.set(!0),this.isDelete.set(!0)})}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-confirmation-delete-all-projects"]],decls:3,vars:3,consts:[["mat-dialog-title",""],["mat-dialog-content",""],["mat-dialog-actions","","align","end"],["mat-button","",3,"click"],["mat-button","","mat-dialog-close","","cdkFocusInitial",""],["align","center","mat-dialog-title",""],["mat-dialog-content","","align","center"],["color","accent"],[1,"delete-text"],["mat-raised-button","","color","primary",3,"click"],[3,"ngClass"]],template:function(n,o){n&1&&(A(0,OPe,12,0),A(1,NPe,4,0),A(2,VPe,6,2)),n&2&&(O(!o.isDelete()&&!o.isUsedFiles()?0:-1),u(),O(o.isDelete()&&!o.isUsedFiles()?1:-1),u(),O(o.isDelete()&&o.isUsedFiles()?2:-1))},dependencies:[Z,Zi,Ce,Kc,Ve,Be,Wt,$,le,Si,Xo],encapsulation:2,changeDetection:0})}return t})();var QU=(()=>{class t{transform(e,n){return e?n?(n=n.toLowerCase(),e.projectDatabase.data.filter(o=>o.filename.toLowerCase().includes(n))):e:[]}static \u0275fac=function(n){return new(n||t)};static \u0275pipe=Cr({name:"projectsfilter",type:t,pure:!0})}return t})();var zPe=(t,i)=>["/controller",t,"project",i];function jPe(t,i){if(t&1){let e=j();s(0,"mat-header-cell")(1,"mat-checkbox",33),v("change",function(o){D(e);let r=b();return P(o?r.selectAllImages():null)}),l()()}if(t&2){let e=b();u(),x("checked",e.selection.hasValue()&&e.isAllSelected())("indeterminate",e.selection.hasValue()&&!e.isAllSelected())}}function $Pe(t,i){if(t&1){let e=j();s(0,"mat-cell")(1,"mat-checkbox",34),v("click",function(o){return o.stopPropagation()})("change",function(o){let r=D(e).$implicit,a=b();return P(o?a.selection.toggle(r):null)}),l()()}if(t&2){let e=i.$implicit,n=b();u(),x("checked",n.selection.isSelected(e))}}function HPe(t,i){t&1&&(s(0,"mat-header-cell",35),d(1," Name "),l())}function UPe(t,i){if(t&1&&(s(0,"mat-cell")(1,"a",36),d(2),l()()),t&2){let e=i.$implicit,n=b();u(),x("routerLink",il(2,zPe,n.controller.id,e.project_id)),u(),X(" ",e.name," ")}}function GPe(t,i){t&1&&(s(0,"mat-header-cell",37),d(1," Actions "),l())}function WPe(t,i){if(t&1){let e=j();s(0,"button",46),v("click",function(){D(e);let o=b().$implicit,r=b();return P(r.open(o))}),s(1,"mat-icon",47),d(2,"play_arrow"),l()()}}function qPe(t,i){t&1&&F(0,"mat-progress-spinner",49)}function XPe(t,i){t&1&&(s(0,"mat-icon",50),d(1,"pause"),l())}function QPe(t,i){if(t&1){let e=j();s(0,"button",48),v("click",function(){D(e);let o=b().$implicit,r=b();return P(r.close(o))}),A(1,qPe,1,0,"mat-progress-spinner",49)(2,XPe,2,0,"mat-icon",50),l()}if(t&2){let e=b().$implicit,n=b();x("disabled",n.isProjectLoading(e.project_id)),u(),O(n.isProjectLoading(e.project_id)?1:2)}}function YPe(t,i){if(t&1){let e=j();s(0,"button",51),v("click",function(){D(e);let o=b().$implicit,r=b();return P(r.duplicate(o))}),s(1,"mat-icon",52),d(2,"content_copy"),l()()}}function KPe(t,i){if(t&1){let e=j();s(0,"mat-cell",37)(1,"div",38),A(2,WPe,3,0,"button",39),A(3,QPe,3,2,"button",40),s(4,"button",41),v("click",function(){let o=D(e).$implicit,r=b();return P(r.editProject(o))}),s(5,"mat-icon",42),d(6,"edit"),l()(),A(7,YPe,3,0,"button",43),s(8,"button",44),v("click",function(){let o=D(e).$implicit,r=b();return P(r.exportSelectProject(o))}),s(9,"mat-icon",45),d(10,"file_download"),l()()()()}if(t&2){let e=i.$implicit;u(2),O(e.status==="closed"?2:-1),u(),O(e.status==="opened"?3:-1),u(4),O(e.status==="closed"?7:-1)}}function ZPe(t,i){if(t&1){let e=j();s(0,"button",54),v("click",function(){D(e);let o=b(2);return P(o.deleteAllFiles())}),s(1,"mat-icon"),d(2,"delete"),l()()}}function JPe(t,i){if(t&1&&(s(0,"mat-header-cell",37),A(1,ZPe,3,0,"button",53),l()),t&2){let e=b();u(),O(e.selection.selected.length>1?1:-1)}}function eIe(t,i){t&1&&F(0,"mat-progress-spinner",49)}function tIe(t,i){t&1&&(s(0,"mat-icon",57),d(1,"delete"),l())}function nIe(t,i){if(t&1){let e=j();s(0,"button",56),v("click",function(){D(e);let o=b().$implicit,r=b();return P(r.delete(o))}),A(1,eIe,1,0,"mat-progress-spinner",49)(2,tIe,2,0,"mat-icon",57),l()}if(t&2){let e=b().$implicit,n=b();x("disabled",n.isProjectLoading(e.project_id)),u(),O(n.isProjectLoading(e.project_id)?1:2)}}function iIe(t,i){if(t&1&&(s(0,"mat-cell",37),A(1,nIe,3,2,"button",55),l()),t&2){let e=i.$implicit,n=b();u(),O(e.status==="closed"&&n.selection.isSelected(e)?1:-1)}}function oIe(t,i){t&1&&F(0,"mat-header-row")}function rIe(t,i){t&1&&F(0,"mat-row")}function aIe(t,i){t&1&&F(0,"mat-icon",31)}function sIe(t,i){t&1&&F(0,"mat-icon",32)}var aT=(()=>{class t{controller;projectDatabase=new t5;dataSource;displayedColumns=["select","name","actions","delete"];settings;project;searchText=ae("");isAllDelete=!1;selection=new ha(!0,[]);version=b_;currentYear=new Date().getFullYear();loadingProjects=new Set;sort=Ut(Oo);route=f(Ye);projectService=f(Fi);settingsService=f(ea);progressService=f(zo);dialog=f(Je);router=f(ut);bottomSheet=f(mc);toasterService=f(fe);recentlyOpenedProjectService=f(xm);cdr=f(K);themeService=f(yi);constructor(){}ngOnInit(){this.controller=this.route.snapshot.data.controller,this.controller||this.router.navigate(["/controllers"]),this.recentlyOpenedProjectService.setcontrollerIdProjectList(this.controller.id.toString()),this.refresh(),this.sort().sort({id:"name",start:"asc"}),this.dataSource=new n5(this.projectDatabase,this.sort()),this.settings=this.settingsService.getAll(),this.projectService.projectListSubject.subscribe(()=>this.refresh())}refresh(){this.projectService.list(this.controller).subscribe(e=>{this.projectDatabase.addProjects(e)},e=>{this.progressService.setError(e)})}delete(e){let o=this.bottomSheet.open(ns,{data:{message:"Do you want to delete the project?"},panelClass:"confirmation-bottom-sheet"}).afterDismissed().subscribe(r=>{r&&(this.setProjectLoading(e.project_id,!0),this.projectService.delete(this.controller,e.project_id).subscribe({next:()=>{this.refresh()},error:()=>{this.setProjectLoading(e.project_id,!1)},complete:()=>{this.setProjectLoading(e.project_id,!1)}}))})}open(e){this.progressService.activate(),this.projectService.open(this.controller,e.project_id).subscribe(()=>{this.refresh()},()=>{this.refresh(),this.progressService.deactivate(),this.toasterService.error("Project was deleted.")},()=>{this.progressService.deactivate()})}close(e){let o=this.bottomSheet.open(ns,{data:{message:"Do you want to close the project?"},panelClass:"confirmation-bottom-sheet"}).afterDismissed().subscribe(r=>{r&&(this.setProjectLoading(e.project_id,!0),this.projectService.close(this.controller,e.project_id).subscribe({next:()=>{this.refresh(),this.progressService.deactivate()},error:()=>{this.setProjectLoading(e.project_id,!1),this.progressService.deactivate()},complete:()=>{this.setProjectLoading(e.project_id,!1)}}))})}duplicate(e){let n=this.dialog.open(oT,{panelClass:["base-dialog-panel","choose-name-dialog-panel"],autoFocus:!1,disableClose:!0}),o=n.componentInstance;o.controller=this.controller,o.project=e,n.afterClosed().subscribe(()=>{this.refresh()})}editProject(e){let n=this.dialog.open(Zg,{autoFocus:!1,disableClose:!0,panelClass:["base-dialog-panel","configurator-dialog-panel","edit-project-dialog-panel"]}),o=n.componentInstance;o.controller=this.controller,o.project=e,n.afterClosed().subscribe(()=>{this.refresh()})}addBlankProject(){let n=this.dialog.open(Qg,{panelClass:["base-dialog-panel","add-blank-project-dialog-panel"],autoFocus:!1,disableClose:!0}).componentInstance;n.controller=this.controller}importProject(){let e="",n=this.dialog.open(Jg,{panelClass:["base-dialog-panel","import-project-dialog-panel"],autoFocus:!1,disableClose:!0}),o=n.componentInstance;o.controller=this.controller;let r=n.componentInstance.onImportProject.subscribe(a=>{e=a});n.afterClosed().subscribe(()=>{if(this.refresh(),r.unsubscribe(),e){this.bottomSheet.open(e_);let a=this.bottomSheet._openedBottomSheetRef;a.instance.projectMessage="imported project";let c=a.afterDismissed().subscribe(m=>{m&&this.projectService.open(this.controller,e).subscribe({next:()=>{this.router.navigate(["/controller",this.controller.id,"project",e])},error:p=>{let h=p.error?.message||p.message||"Failed to open project";this.toasterService.error(h),this.cdr.markForCheck()}})})}})}deleteAllFiles(){this.dialog.open(rT,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel","delete-all-projects-dialog-panel"],autoFocus:!1,disableClose:!0,data:{controller:this.controller,deleteFilesPaths:this.selection.selected}}).afterClosed().subscribe(n=>{if(n)this.unChecked(),this.refresh(),this.toasterService.success("All projects deleted");else return this.unChecked(),this.refresh(),!1})}isAllSelected(){let e=this.selection.selected.length,n=this.projectDatabase.data.length;return e===n}selectAllImages(){this.isAllSelected()?this.unChecked():this.allChecked()}unChecked(){this.selection.clear(),this.isAllDelete=!1}allChecked(){this.projectDatabase.data.forEach(e=>this.selection.select(e)),this.isAllDelete=!0}exportSelectProject(e){this.project=e,this.project.project_id&&this.exportPortableProjectDialog()}exportPortableProjectDialog(){this.dialog.open(ig,{panelClass:["base-dialog-panel","simple-dialog-panel"],autoFocus:!1,disableClose:!0,data:{controllerDetails:this.controller,projectDetails:this.project}}).afterClosed().subscribe(n=>{})}isLightThemeEnabled(){return this.themeService.getActualTheme()==="light"}isProjectLoading(e){return this.loadingProjects.has(e)}setProjectLoading(e,n){n?this.loadingProjects.add(e):this.loadingProjects.delete(e),this.cdr.markForCheck()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-projects"]],viewQuery:function(n,o){n&1&&tn(o.sort,Oo,5),n&2&&nn()},inputs:{searchText:[1,"searchText"]},outputs:{searchText:"searchTextChange"},decls:51,vars:12,consts:[["table",""],[1,"projects"],[1,"projects__content"],[1,"projects__header"],[1,"projects__title"],[1,"projects__buttons-bar"],["mat-raised-button","","color","primary",1,"projects__button",3,"click"],[1,"projects__search-form"],[1,"projects__search"],["matPrefix",""],["matInput","","placeholder","Search projects",3,"input","value"],[1,"projects__table-container"],["matSort","",3,"dataSource"],["matColumnDef","select"],[4,"matHeaderCellDef"],[4,"matCellDef"],["matColumnDef","name"],["mat-sort-header","",4,"matHeaderCellDef"],["matColumnDef","actions"],["class","projects__cell--actions",4,"matHeaderCellDef"],["class","projects__cell--actions",4,"matCellDef"],["matColumnDef","delete"],[4,"matHeaderRowDef","matHeaderRowDefSticky"],[4,"matRowDef","matRowDefColumns"],[1,"projects__footer"],[1,"projects__footer-content"],[1,"projects__footer-info"],[1,"projects__footer-social"],["href","https://github.com/GNS3","target","_blank","rel","noopener noreferrer","matTooltip","GitHub",1,"projects__footer-social-link"],["svgIcon","github",1,"projects__footer-icon"],["href","https://www.gns3.com/","target","_blank","rel","noopener noreferrer","matTooltip","Website",1,"projects__footer-social-link"],["svgIcon","gns3",1,"projects__footer-icon"],["svgIcon","gns3black",1,"projects__footer-icon"],[3,"change","checked","indeterminate"],[3,"click","change","checked"],["mat-sort-header",""],[1,"projects__link",3,"routerLink"],[1,"projects__cell--actions"],[1,"projects__actions-cell"],["mat-icon-button","","matTooltip","Open project"],["mat-icon-button","","matTooltip","Close project",3,"disabled"],["mat-icon-button","","matTooltip","Rename/Edit project",3,"click"],["aria-label","Rename project"],["mat-icon-button","","matTooltip","Duplicate project"],["mat-icon-button","","matTooltip","Export project",3,"click"],["aria-label","Export project"],["mat-icon-button","","matTooltip","Open project",3,"click"],["aria-label","Open project"],["mat-icon-button","","matTooltip","Close project",3,"click","disabled"],["diameter","20","mode","indeterminate"],["aria-label","Close project"],["mat-icon-button","","matTooltip","Duplicate project",3,"click"],["aria-label","Save project as"],["mat-button","","color","warn","matTooltip","Delete all selected"],["mat-button","","color","warn","matTooltip","Delete all selected",3,"click"],["mat-icon-button","","color","warn","matTooltip","Delete project",3,"disabled"],["mat-icon-button","","color","warn","matTooltip","Delete project",3,"click","disabled"],["aria-label","Delete project"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"div",2)(2,"div",3)(3,"h1",4),d(4,"Projects"),l(),s(5,"div",5)(6,"button",6),v("click",function(){return o.addBlankProject()}),s(7,"mat-icon"),d(8,"add"),l(),d(9," Add Blank Project "),l(),s(10,"button",6),v("click",function(){return o.importProject()}),s(11,"mat-icon"),d(12,"cloud_upload"),l(),d(13," Import Project "),l(),s(14,"button",6),v("click",function(){return o.refresh()}),s(15,"mat-icon"),d(16,"refresh"),l(),d(17," Refresh Projects "),l()()(),s(18,"form",7)(19,"mat-form-field",8)(20,"mat-icon",9),d(21,"search"),l(),s(22,"input",10),v("input",function(a){return o.searchText.set(a.target.value)}),l()()(),s(23,"div",11)(24,"mat-table",12,0),on(26,"projectsfilter"),qe(27,13),Ae(28,jPe,2,2,"mat-header-cell",14)(29,$Pe,2,1,"mat-cell",15),Xe(),qe(30,16),Ae(31,HPe,2,0,"mat-header-cell",17)(32,UPe,3,5,"mat-cell",15),Xe(),qe(33,18),Ae(34,GPe,2,0,"mat-header-cell",19)(35,KPe,11,3,"mat-cell",20),Xe(),qe(36,21),Ae(37,JPe,2,1,"mat-header-cell",19)(38,iIe,2,1,"mat-cell",20),Xe(),Ae(39,oIe,1,0,"mat-header-row",22)(40,rIe,1,0,"mat-row",23),l()(),s(41,"footer",24)(42,"div",25)(43,"div",26),d(44),l(),s(45,"div",27)(46,"a",28),F(47,"mat-icon",29),l(),s(48,"a",30),A(49,aIe,1,0,"mat-icon",31),A(50,sIe,1,0,"mat-icon",32),l()()()()()()),n&2&&(u(22),x("value",o.searchText()),u(2),x("dataSource",$r(26,9,o.dataSource,o.searchText())),u(15),x("matHeaderRowDef",o.displayedColumns)("matHeaderRowDefSticky",!0),u(),x("matRowDefColumns",o.displayedColumns),u(4),Hi("GNS3 Web-UI \xA92018-",o.currentYear," v",o.version),u(5),O(o.isLightThemeEnabled()?-1:49),u(),O(o.isLightThemeEnabled()?50:-1))},dependencies:[Z,nt,Ue,He,Ci,at,cn,id,Ce,zr,Oo,ma,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,$,le,ze,te,se,Me,ke,al,we,Te,Ot,Ht,Si,Xo,QU],styles:['[_nghost-%COMP%]{display:block;width:100%;background:transparent}.projects__header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;max-width:1000px;margin:0 auto;padding:24px 20px 16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.projects__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.projects__content[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.projects__buttons-bar[_ngcontent-%COMP%]{display:flex;gap:12px}.projects__button[_ngcontent-%COMP%]{margin:12px 0;height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px;transition:all .2s cubic-bezier(.4,0,.2,1)}.projects__button[_ngcontent-%COMP%]:hover:not([disabled]){transform:translateY(-2px);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.projects__button[_ngcontent-%COMP%]:active:not([disabled]){transform:translateY(0)}.projects__search-form[_ngcontent-%COMP%]{display:flex;justify-content:center;margin:16px auto;width:100%;max-width:1000px;padding:0 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .05s both}.projects__search[_ngcontent-%COMP%]{width:100%}.projects__table-container[_ngcontent-%COMP%]{border-radius:16px;overflow:hidden;width:100%;max-width:1000px;margin:0 auto;background:var(--mat-sys-surface);box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .15s both}mat-row[_ngcontent-%COMP%]{transition:all .2s cubic-bezier(.4,0,.2,1);cursor:default;position:relative}mat-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 3%,transparent);transform:scale(1.002)}mat-row[_ngcontent-%COMP%]:nth-child(2n){background-color:color-mix(in srgb,var(--mat-sys-on-surface) 1%,transparent)}mat-row[_ngcontent-%COMP%]:nth-child(2n):hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 4%,transparent)}.mat-header-row[_ngcontent-%COMP%]{position:sticky;top:0;z-index:10;background:var(--mat-sys-surface)}.mat-header-row[_ngcontent-%COMP%] mat-header-cell[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--mat-sys-on-surface-variant);letter-spacing:.5px;text-transform:uppercase}.mat-table-sticky[_ngcontent-%COMP%]{top:0}mat-header-cell[_ngcontent-%COMP%], mat-cell[_ngcontent-%COMP%]{justify-content:center;padding:0 16px}mat-cell[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}mat-cell[mat-column=name][_ngcontent-%COMP%]{justify-content:flex-start;font-weight:500}.projects__cell--actions[_ngcontent-%COMP%]{justify-content:center;padding:0 16px}.projects__link[_ngcontent-%COMP%]{transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-block;transform-origin:left center;color:var(--mat-sys-primary);text-decoration:none;font-weight:500;position:relative}.projects__link[_ngcontent-%COMP%]:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:2px;background-color:currentColor;transition:width .2s cubic-bezier(.4,0,.2,1)}.projects__link[_ngcontent-%COMP%]:hover{color:color-mix(in srgb,var(--mat-sys-primary) 80%,black);transform:translateY(-2px)}.projects__link[_ngcontent-%COMP%]:hover:after{width:100%}.projects__actions-cell[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:4px}button[mat-icon-button][_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;transition:all .2s cubic-bezier(.4,0,.2,1);border-radius:50%;--mat-icon-button-state-layer-size: 32px;--mat-icon-button-icon-size: 20px}button[mat-icon-button][_ngcontent-%COMP%]:before{content:"";position:absolute;inset:0;border-radius:inherit;background-color:var(--mat-icon-button-state-layer);opacity:0;transition:opacity .15s cubic-bezier(.4,0,.2,1)}button[mat-icon-button][_ngcontent-%COMP%]:hover:before{opacity:var(--mat-icon-button-hover-state-layer-opacity)}button[mat-icon-button][_ngcontent-%COMP%]:active:before{opacity:var(--mat-icon-button-pressed-state-layer-opacity)}button[mat-icon-button][_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{transition:transform .15s cubic-bezier(.4,0,.2,1);position:relative;z-index:1}button[mat-icon-button][_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{transform:scale(1.15)}button[mat-icon-button][_ngcontent-%COMP%]:active mat-icon[_ngcontent-%COMP%]{transform:scale(.95)}.projects__actions-cell[_ngcontent-%COMP%] button[mat-icon-button][_ngcontent-%COMP%]:first-child:before{background-color:var(--mat-sys-primary)}.projects__actions-cell[_ngcontent-%COMP%] button[mat-icon-button][_ngcontent-%COMP%]:first-child:hover:before{opacity:.12}.projects__actions-cell[_ngcontent-%COMP%] button[mat-icon-button][_ngcontent-%COMP%]:first-child:hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}button[color=warn][_ngcontent-%COMP%]:before{background-color:var(--mat-sys-error)}button[color=warn][_ngcontent-%COMP%]:hover:before{opacity:.12}button[color=warn][_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-error)}button[mat-icon-button][_ngcontent-%COMP%] mat-progress-spinner[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;position:relative;z-index:1}button[mat-icon-button][_ngcontent-%COMP%]:disabled{cursor:wait;opacity:.7}.projects__footer[_ngcontent-%COMP%]{padding:24px 20px;color:var(--mat-sys-on-surface-variant);font-size:14px;opacity:.7;flex-shrink:0}.projects__footer-content[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;max-width:1000px;margin:0 auto;gap:16px}.projects__footer-info[_ngcontent-%COMP%]{flex:1}.projects__footer-social[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.projects__footer-social-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;color:var(--mat-sys-on-surface-variant);transition:all .2s cubic-bezier(.4,0,.2,1);text-decoration:none}.projects__footer-social-link[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);color:var(--mat-sys-primary);transform:translateY(-2px)}.projects__footer-social-link[_ngcontent-%COMP%]:active{transform:translateY(0)}.projects__footer-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;line-height:1;overflow:visible}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0}to{opacity:1}}@media(max-width:768px){.projects__header[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:12px;padding:16px 16px 12px}.projects__title[_ngcontent-%COMP%]{font-size:28px}.projects__button[_ngcontent-%COMP%]{margin:8px 0;width:100%;height:44px;font-size:15px}.projects__buttons-bar[_ngcontent-%COMP%]{flex-direction:column;width:100%}.projects__actions-cell[_ngcontent-%COMP%]{flex-wrap:wrap;gap:4px}mat-cell[_ngcontent-%COMP%]{padding:0 12px;font-size:13px}.projects__footer[_ngcontent-%COMP%]{padding:16px;font-size:12px}.projects__footer-content[_ngcontent-%COMP%]{flex-direction:column;gap:12px;text-align:center}}'],changeDetection:0})}return t})(),t5=class{dataChange=new qt([]);get data(){return this.dataChange.value}addProjects(i){this.dataChange.next(i)}remove(i){let e=this.data.indexOf(i);e>=0&&(this.data.splice(e,1),this.dataChange.next(this.data.slice()))}},n5=class extends Kl{projectDatabase;sort;constructor(i,e){super(),this.projectDatabase=i,this.sort=e}connect(){let i=[this.projectDatabase.dataChange,this.sort.sortChange];return Dn(...i).pipe(yt(()=>!this.sort.active||this.sort.direction===""?this.projectDatabase.data:this.projectDatabase.data.sort((e,n)=>{let o=e[this.sort.active],r=n[this.sort.active],a=isNaN(+o)?o:+o,c=isNaN(+r)?r:+r;return(a<c?-1:1)*(this.sort.direction==="asc"?1:-1)})))}disconnect(){}};var w_=(()=>{class t{controllerStatusChanged=new Le;constructor(){}get statusChannel(){return"local-controller-status-events"}async start(e){var n={controllerName:e.name,status:"starting",message:""};return this.controllerStatusChanged.next(n),Promise.resolve()}async stop(e){return Promise.resolve()}async stopAll(){return Promise.resolve()}getRunningControllers(){return[]}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var lIe=(t,i)=>i.key;function cIe(t,i){t&1&&(s(0,"mat-error"),d(1,"You must enter a value"),l())}function dIe(t,i){if(t&1&&(s(0,"mat-option",8),d(1),l()),t&2){let e=i.$implicit;x("value",e.key),u(),X(" ",e.name," ")}}function mIe(t,i){if(t&1&&(s(0,"div",2)(1,"mat-error"),d(2),l()()),t&2){let e=b();u(2),U(e.connectionError)}}function pIe(t,i){if(t&1&&(s(0,"div",2)(1,"mat-error"),d(2),l()()),t&2){let e=b();u(2),U(e.duplicateNameError)}}function uIe(t,i){if(t&1){let e=j();s(0,"button",13),v("click",function(){D(e);let o=b();return P(o.onAddAnywayClick())}),d(1,"Add anyway"),l()}}var sT=(()=>{class t{dialogRef=f(Pe);controllerService=f(We);toasterService=f(fe);changeDetector=f(K);data=f(Nt);protocols=[{key:"http:",name:"HTTP"},{key:"https:",name:"HTTPS"}];connectionError="";canAddAnyway=!1;isCheckingConnection=!1;duplicateNameError="";controllerForm=new Dr({name:new re("",[be.required]),host:new re("",[be.required]),port:new re("",[be.required,be.min(1)]),protocol:new re("http:")});getDefaultHost(){return"127.0.0.1"}getDefaultPort(){return 3080}constructor(){this.controllerForm.get("host").setValue(this.getDefaultHost()),this.controllerForm.get("port").setValue(this.getDefaultPort())}detectLocation(e){return e==="127.0.0.1"||e==="localhost"?"local":"remote"}onAddClick(){if(!this.controllerForm.valid)return;let e=this.controllerForm.get("name").value;if(this.controllerService.isControllerNameTaken(e)){this.duplicateNameError=`Controller with name "${e}" already exists`,this.toasterService.error(this.duplicateNameError),this.changeDetector.markForCheck();return}this.connectionError="",this.duplicateNameError="",this.canAddAnyway=!1,this.isCheckingConnection=!0,this.changeDetector.markForCheck();let n=Object.assign({},this.controllerForm.value);n.location=this.detectLocation(n.host),this.controllerService.checkControllerVersion(n).subscribe(o=>{this.isCheckingConnection=!1,o.version.split(".")[0]>=3?(this.dialogRef.close(n),this.toasterService.success(`Controller ${n.name} added.`)):(this.connectionError="Controller version is not supported.",this.canAddAnyway=!0,this.toasterService.error("Controller version is not supported.")),this.changeDetector.markForCheck()},o=>{this.isCheckingConnection=!1,this.connectionError="Cannot connect to the controller. It appears offline.",this.canAddAnyway=!0,this.toasterService.error("Cannot connect to the controller: "+o),this.changeDetector.markForCheck()})}onAddAnywayClick(){if(!this.controllerForm.valid)return;let e=this.controllerForm.get("name").value;if(this.controllerService.isControllerNameTaken(e)){this.duplicateNameError=`Controller with name "${e}" already exists`,this.toasterService.error(this.duplicateNameError),this.changeDetector.markForCheck();return}let n=Object.assign({},this.controllerForm.value);n.location=this.detectLocation(n.host),this.dialogRef.close(n),this.toasterService.warning(`Controller ${n.name} added in offline mode.`)}onNoClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-add-controller-dialog"]],decls:31,vars:6,consts:[["mat-dialog-title",""],[3,"formGroup"],["mat-dialog-content",""],["appearance","fill",1,"full-width-field"],["matInput","","tabindex","1","formControlName","name","placeholder","Controller name"],["matInput","","tabindex","1","formControlName","host","placeholder","127.0.0.1"],["matInput","","type","number","tabindex","1","formControlName","port","placeholder","3080"],["formControlName","protocol"],[3,"value"],["mat-dialog-actions","","align","end"],["mat-button","","tabindex","-1","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click","disabled"],["mat-button","","mat-raised-button","","color","warn"],["mat-button","","mat-raised-button","","color","warn",3,"click"]],template:function(n,o){n&1&&(s(0,"h2",0),d(1,"Add controller"),l(),s(2,"form",1)(3,"div",2)(4,"mat-form-field",3)(5,"mat-label"),d(6,"Name"),l(),F(7,"input",4),A(8,cIe,2,0,"mat-error"),l(),s(9,"mat-form-field",3)(10,"mat-label"),d(11,"Host"),l(),F(12,"input",5),l(),s(13,"mat-form-field",3)(14,"mat-label"),d(15,"Port"),l(),F(16,"input",6),l(),s(17,"mat-form-field",3)(18,"mat-label"),d(19,"Protocol"),l(),s(20,"mat-select",7),J(21,dIe,2,2,"mat-option",8,lIe),l()()(),A(23,mIe,3,1,"div",2),A(24,pIe,3,1,"div",2),s(25,"div",9)(26,"button",10),v("click",function(){return o.onNoClick()}),d(27,"Cancel"),l(),s(28,"button",11),v("click",function(){return o.onAddClick()}),d(29," Add "),l(),A(30,uIe,2,0,"button",12),l()()),n&2&&(u(2),x("formGroup",o.controllerForm),u(6),O(o.controllerForm.get("name").hasError("required")?8:-1),u(13),ee(o.protocols),u(2),O(o.connectionError?23:-1),u(),O(o.duplicateNameError?24:-1),u(4),x("disabled",o.isCheckingConnection),u(2),O(o.canAddAnyway?30:-1))},dependencies:[Z,ct,Ue,vt,xi,mt,He,pt,bt,Ce,Ve,Be,Wt,$,le,Me,ke,lt,Ni,we,Te,Mt,At,St,Jo],encapsulation:2,changeDetection:0})}return t})();function hIe(t,i){t&1&&(s(0,"mat-error"),d(1,"Name is required"),l())}function fIe(t,i){t&1&&(s(0,"mat-error"),d(1,"Host is required"),l())}function gIe(t,i){t&1&&(s(0,"mat-error"),d(1,"Port is required"),l())}function _Ie(t,i){t&1&&(s(0,"mat-error"),d(1,"Port must be at least 1"),l())}function vIe(t,i){if(t&1&&(s(0,"mat-error"),d(1),l()),t&2){let e=b();u(),U(e.duplicateNameError)}}var YU=(()=>{class t{dialogRef=f(Pe);controllerService=f(We);toasterService=f(fe);changeDetector=f(K);controller;controllerForm;duplicateNameError="";ngOnInit(){this.controllerForm=new Dr({name:new re(this.controller.name,[be.required]),host:new re(this.controller.host,[be.required]),port:new re(this.controller.port,[be.required,be.min(1)]),protocol:new re(this.controller.protocol||"http:")})}onSave(){if(!this.controllerForm.valid)return;let e=this.controllerForm.value.name;if(e!==this.controller.name&&this.controllerService.isControllerNameTaken(e)){this.duplicateNameError=`Controller with name "${e}" already exists`,this.toasterService.error(this.duplicateNameError),this.changeDetector.markForCheck();return}this.duplicateNameError="";let n=tt(H({},this.controller),{name:e,host:this.controllerForm.value.host,port:this.controllerForm.value.port,protocol:this.controllerForm.value.protocol});this.controllerService.update(n).then(()=>{this.dialogRef.close(n),this.toasterService.success(`Controller ${n.name} updated.`)})}onCancel(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-edit-controller-dialog"]],decls:34,vars:7,consts:[["mat-dialog-title",""],[3,"formGroup"],["appearance","fill",1,"full-width-field"],["matInput","","formControlName","name","placeholder","Controller name"],["matInput","","formControlName","host","placeholder","127.0.0.1"],["matInput","","type","number","formControlName","port","placeholder","3080"],["formControlName","protocol"],["value","http:"],["value","https:"],["align","end"],["mat-button","",3,"click"],["mat-raised-button","","color","primary",3,"click","disabled"]],template:function(n,o){n&1&&(s(0,"h2",0),d(1,"Edit Controller"),l(),s(2,"mat-dialog-content")(3,"form",1)(4,"mat-form-field",2)(5,"mat-label"),d(6,"Name"),l(),F(7,"input",3),A(8,hIe,2,0,"mat-error"),l(),s(9,"mat-form-field",2)(10,"mat-label"),d(11,"Host"),l(),F(12,"input",4),A(13,fIe,2,0,"mat-error"),l(),s(14,"mat-form-field",2)(15,"mat-label"),d(16,"Port"),l(),F(17,"input",5),A(18,gIe,2,0,"mat-error"),A(19,_Ie,2,0,"mat-error"),l(),s(20,"mat-form-field",2)(21,"mat-label"),d(22,"Protocol"),l(),s(23,"mat-select",6)(24,"mat-option",7),d(25,"HTTP"),l(),s(26,"mat-option",8),d(27,"HTTPS"),l()()(),A(28,vIe,2,1,"mat-error"),l()(),s(29,"mat-dialog-actions",9)(30,"button",10),v("click",function(){return o.onCancel()}),d(31,"Cancel"),l(),s(32,"button",11),v("click",function(){return o.onSave()}),d(33,"Save"),l()()),n&2&&(u(3),x("formGroup",o.controllerForm),u(5),O(o.controllerForm.get("name").hasError("required")?8:-1),u(5),O(o.controllerForm.get("host").hasError("required")?13:-1),u(5),O(o.controllerForm.get("port").hasError("required")?18:-1),u(),O(o.controllerForm.get("port").hasError("min")?19:-1),u(9),O(o.duplicateNameError?28:-1),u(4),x("disabled",!o.controllerForm.valid))},dependencies:[Z,ct,Ue,vt,xi,mt,He,pt,bt,Ce,Ve,Be,Wt,$,le,Me,ke,lt,Ni,we,Te,Mt,At,St,Jo],encapsulation:2,changeDetection:0})}return t})();var bIe=t=>["/controller",t,"projects"];function CIe(t,i){t&1&&F(0,"mat-icon",4)}function xIe(t,i){t&1&&F(0,"mat-icon",5)}function yIe(t,i){t&1&&(s(0,"mat-header-cell",40),d(1," ID "),l())}function SIe(t,i){if(t&1&&(s(0,"mat-cell",41),d(1),l()),t&2){let e=i.$implicit;u(),X(" ",e.id," ")}}function wIe(t,i){t&1&&(s(0,"mat-header-cell",42),d(1," Name "),l())}function MIe(t,i){if(t&1&&(s(0,"a",43),d(1),l()),t&2){let e=b().$implicit;x("routerLink",ln(2,bIe,e.id)),u(),X(" ",e.name," ")}}function kIe(t,i){if(t&1&&(s(0,"span",44),d(1),l()),t&2){let e=b().$implicit;u(),U(e.name)}}function TIe(t,i){if(t&1&&(s(0,"mat-cell"),A(1,MIe,2,4,"a",43)(2,kIe,2,1,"span",44),l()),t&2){let e=i.$implicit,n=b();u(),O(n.getControllerStatus(e)==="running"?1:2)}}function EIe(t,i){t&1&&(s(0,"mat-header-cell",42),d(1," Status "),l())}function DIe(t,i){t&1&&(s(0,"div",45),F(1,"span",48),s(2,"span"),d(3,"Running"),l()())}function PIe(t,i){t&1&&(s(0,"div",46),F(1,"span",48),s(2,"span"),d(3,"Starting"),l()())}function IIe(t,i){t&1&&(s(0,"div",47),F(1,"span",48),s(2,"span"),d(3,"Stopped"),l()())}function AIe(t,i){if(t&1&&(s(0,"mat-cell"),A(1,DIe,4,0,"div",45)(2,PIe,4,0,"div",46)(3,IIe,4,0,"div",47),l()),t&2){let e,n=i.$implicit,o=b();u(),O((e=o.getControllerStatus(n))==="running"?1:e==="starting"?2:3)}}function OIe(t,i){t&1&&(s(0,"mat-header-cell",40),d(1," Location "),l())}function NIe(t,i){if(t&1&&(s(0,"mat-cell",41),d(1),l()),t&2){let e=i.$implicit;u(),X(" ",e.location," ")}}function RIe(t,i){t&1&&(s(0,"mat-header-cell",42),d(1," Host "),l())}function FIe(t,i){if(t&1&&(s(0,"mat-cell")(1,"span",49),d(2),l(),s(3,"span",41),d(4),l()()),t&2){let e=i.$implicit;u(2),Hi("",e.host,":",e.port),u(2),U(e.host)}}function LIe(t,i){t&1&&(s(0,"mat-header-cell",40),d(1," Port "),l())}function BIe(t,i){if(t&1&&(s(0,"mat-cell",41),d(1),l()),t&2){let e=i.$implicit;u(),X(" ",e.port," ")}}function VIe(t,i){t&1&&(s(0,"mat-header-cell"),d(1," Actions "),l())}function zIe(t,i){if(t&1){let e=j();s(0,"button",54),v("click",function(){D(e);let o=b().$implicit,r=b();return P(r.openProjects(o))}),s(1,"mat-icon"),d(2,"folder_open"),l()()}}function jIe(t,i){if(t&1){let e=j();s(0,"mat-cell")(1,"div",50),A(2,zIe,3,0,"button",51),s(3,"button",52),v("click",function(){let o=D(e).$implicit,r=b();return P(r.editController(o))}),s(4,"mat-icon"),d(5,"edit"),l()(),s(6,"button",53),v("click",function(){let o=D(e).$implicit,r=b();return P(r.deleteController(o))}),s(7,"mat-icon"),d(8,"delete"),l()()()()}if(t&2){let e=i.$implicit,n=b();u(2),O(n.getControllerStatus(e)==="running"?2:-1)}}function $Ie(t,i){t&1&&F(0,"mat-header-row")}function HIe(t,i){if(t&1&&F(0,"mat-row"),t&2){let e=i.$implicit,n=b();je("controllers__row--running",n.getControllerStatus(e)==="running")("controllers__row--starting",n.getControllerStatus(e)==="starting")("controllers__row--stopped",n.getControllerStatus(e)==="stopped")}}function UIe(t,i){t&1&&F(0,"mat-icon",38)}function GIe(t,i){t&1&&F(0,"mat-icon",39)}var lT=(()=>{class t{dialog=f(Je);controllerService=f(We);controllerDatabase=f(np);controllerManagement=f(w_);changeDetector=f(K);bottomSheet=f(mc);route=f(Ye);router=f(ut);themeService=f(yi);dataSource=null;displayedColumns=["id","name","status","location","ip","port","actions"];controllerStatusSubscription;searchText=ae("");minStartingDisplayMs=700;statusRefreshIntervalMs=5e3;startingTimestamps=new Map;startingTimeouts=new Map;statusRefreshSubscription;version=b_;currentYear=new Date().getFullYear();sort;constructor(){}getControllers(){let e=this.controllerManagement.getRunningControllers();this.controllerService.findAll().then(n=>{n.forEach(o=>{o.status="stopped",e.findIndex(a=>o.name===a)>=0&&(o.status="running"),o.protocol||(o.protocol=location.protocol)}),this.controllerDatabase.addControllers(n),this.changeDetector.markForCheck(),n.forEach(o=>{this.updateControllerOnlineStatus(o)})})}ngOnInit(){this.controllerService&&this.controllerService.isServiceInitialized?this.getControllers():this.controllerService.serviceInitialized.subscribe(async e=>{e&&this.getControllers()}),this.startStatusAutoRefresh(),this.controllerStatusSubscription=this.controllerManagement.controllerStatusChanged.subscribe(e=>{let n=this.controllerDatabase.find(e.controllerName);if(!n)return;let o=this.startingTimeouts.get(n.name);if(o&&e.status!=="started"&&(clearTimeout(o),this.startingTimeouts.delete(n.name)),e.status==="starting"&&(n.status="starting",this.startingTimestamps.set(n.name,Date.now()),this.changeDetector.markForCheck()),e.status==="stopped"&&(n.status="stopped",this.startingTimestamps.delete(n.name),this.changeDetector.markForCheck()),e.status==="errored"&&(n.status="stopped",this.startingTimestamps.delete(n.name),this.changeDetector.markForCheck()),e.status==="started"){let r=this.startingTimestamps.get(n.name)||Date.now(),a=Date.now()-r,c=Math.max(0,this.minStartingDisplayMs-a);if(c>0){let m=setTimeout(()=>{n.status="running",this.controllerDatabase.update(n),this.startingTimeouts.delete(n.name),this.startingTimestamps.delete(n.name),this.changeDetector.markForCheck()},c);this.startingTimeouts.set(n.name,m);return}n.status="running",this.startingTimestamps.delete(n.name),this.controllerDatabase.update(n),this.changeDetector.markForCheck()}})}ngAfterViewInit(){this.sort&&(this.sort.sort({id:"id",start:"asc"}),this.dataSource=new i5(this.controllerDatabase,this.sort),this.changeDetector.markForCheck())}ngOnDestroy(){this.controllerStatusSubscription.unsubscribe(),this.startingTimeouts.forEach(e=>clearTimeout(e)),this.startingTimeouts.clear(),this.statusRefreshSubscription&&this.statusRefreshSubscription.unsubscribe()}openProjects(e){this.router.navigate(["/controller",e.id,"projects"])}createModal(){this.dialog.open(sT,{panelClass:["base-dialog-panel","controller-small-dialog-panel","add-controller-dialog-panel"],autoFocus:!1,disableClose:!0}).afterClosed().subscribe(n=>{n&&this.controllerService.create(n).then(o=>{o.status="stopped",this.controllerDatabase.addController(o),this.updateControllerOnlineStatus(o),this.changeDetector.markForCheck()}).catch(o=>{this.changeDetector.markForCheck()})})}startStatusAutoRefresh(){this.statusRefreshSubscription=_C(this.statusRefreshIntervalMs).subscribe(()=>{this.refreshControllersStatuses()})}refreshControllersStatuses(){this.controllerDatabase.data.slice().forEach(e=>{e.status!=="starting"&&this.updateControllerOnlineStatus(e)})}updateControllerOnlineStatus(e){this.controllerService.checkControllerVersion(e).subscribe(n=>{e.status=n.version.split(".")[0]>=3?"running":"stopped",this.controllerDatabase.update(e),this.changeDetector.markForCheck()},()=>{e.status="stopped",this.controllerDatabase.update(e),this.changeDetector.markForCheck()})}getControllerStatus(e){return e.status===void 0?"stopped":e.status}deleteController(e){let o=this.bottomSheet.open(ns,{data:{message:"Do you want to delete the controller?"},panelClass:"confirmation-bottom-sheet"}).afterDismissed().subscribe(r=>{r&&this.controllerService.delete(e).then(()=>{this.controllerDatabase.remove(e),this.changeDetector.markForCheck()})})}editController(e){let n=this.dialog.open(YU,{panelClass:["base-dialog-panel","controller-dialog-panel","edit-controller-dialog-panel"],autoFocus:!1,disableClose:!0,data:{controller:e}});n.componentRef.instance.controller=e,n.afterClosed().subscribe(o=>{o&&(this.controllerDatabase.update(o),this.changeDetector.markForCheck())})}onSearchChange(e){this.searchText.set(e),this.dataSource&&this.dataSource.setFilter(e)}isLightThemeEnabled(){return this.themeService.getActualTheme()==="light"}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-controller-list"]],viewQuery:function(n,o){if(n&1&&gn(Oo,5),n&2){let r;gt(r=_t())&&(o.sort=r.first)}},inputs:{searchText:[1,"searchText"]},outputs:{searchText:"searchTextChange"},decls:65,vars:17,consts:[["table",""],[1,"controllers"],[1,"controllers__header"],[1,"controllers__header-content"],["svgIcon","gns3",1,"controllers__logo-icon"],["svgIcon","gns3black",1,"controllers__logo-icon"],[1,"controllers__content"],[1,"controllers__search-form"],[1,"controllers__search"],["matPrefix",""],["matInput","","placeholder","Search controllers",3,"input","value"],[1,"controllers__empty-state"],["mat-raised-button","","color","primary",3,"click"],[1,"controllers__table-container"],["matSort","",3,"dataSource"],["matColumnDef","id"],["mat-sort-header","","class","hide-mobile",4,"matHeaderCellDef"],["class","hide-mobile",4,"matCellDef"],["matColumnDef","name"],["mat-sort-header","",4,"matHeaderCellDef"],[4,"matCellDef"],["matColumnDef","status"],["matColumnDef","location"],["matColumnDef","ip"],["matColumnDef","port"],["matColumnDef","actions"],[4,"matHeaderCellDef"],[4,"matHeaderRowDef","matHeaderRowDefSticky"],[3,"controllers__row--running","controllers__row--starting","controllers__row--stopped",4,"matRowDef","matRowDefColumns"],[1,"controllers__buttons-bar"],["mat-raised-button","","color","primary",1,"controllers__button",3,"click"],[1,"controllers__footer"],[1,"controllers__footer-content"],[1,"controllers__footer-info"],[1,"controllers__footer-social"],["href","https://github.com/GNS3","target","_blank","rel","noopener noreferrer","matTooltip","GitHub",1,"controllers__footer-social-link"],["svgIcon","github",1,"controllers__footer-icon"],["href","https://www.gns3.com/","target","_blank","rel","noopener noreferrer","matTooltip","Website",1,"controllers__footer-social-link"],["svgIcon","gns3",1,"controllers__footer-icon"],["svgIcon","gns3black",1,"controllers__footer-icon"],["mat-sort-header","",1,"hide-mobile"],[1,"hide-mobile"],["mat-sort-header",""],[1,"controllers__link",3,"routerLink"],[1,"controllers__name--inactive"],[1,"controllers__status-indicator","controllers__status--running"],[1,"controllers__status-indicator","controllers__status--starting"],[1,"controllers__status-indicator","controllers__status--stopped"],[1,"controllers__status-dot"],[1,"hide-desktop"],[1,"controllers__actions-cell"],["mat-icon-button","","color","primary",1,"primary-action-btn"],["mat-icon-button","",3,"click"],["mat-icon-button","","color","warn",3,"click"],["mat-icon-button","","color","primary",1,"primary-action-btn",3,"click"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"div",2)(2,"div",3),A(3,CIe,1,0,"mat-icon",4),A(4,xIe,1,0,"mat-icon",5),s(5,"h1"),d(6,"Controllers"),l()()(),s(7,"div",6)(8,"form",7)(9,"mat-form-field",8)(10,"mat-icon",9),d(11,"search"),l(),s(12,"input",10),v("input",function(a){return o.onSearchChange(a.target.value)}),l()()(),s(13,"div",11)(14,"mat-icon"),d(15,"cloud_off"),l(),s(16,"h3"),d(17,"No controllers found"),l(),s(18,"p"),d(19,"Add a controller to get started with GNS3"),l(),s(20,"button",12),v("click",function(){return o.createModal()}),s(21,"mat-icon"),d(22,"add"),l(),d(23," Add Controller "),l()(),s(24,"div",13)(25,"mat-table",14,0),qe(27,15),Ae(28,yIe,2,0,"mat-header-cell",16)(29,SIe,2,1,"mat-cell",17),Xe(),qe(30,18),Ae(31,wIe,2,0,"mat-header-cell",19)(32,TIe,3,1,"mat-cell",20),Xe(),qe(33,21),Ae(34,EIe,2,0,"mat-header-cell",19)(35,AIe,4,1,"mat-cell",20),Xe(),qe(36,22),Ae(37,OIe,2,0,"mat-header-cell",16)(38,NIe,2,1,"mat-cell",17),Xe(),qe(39,23),Ae(40,RIe,2,0,"mat-header-cell",19)(41,FIe,5,3,"mat-cell",20),Xe(),qe(42,24),Ae(43,LIe,2,0,"mat-header-cell",16)(44,BIe,2,1,"mat-cell",17),Xe(),qe(45,25),Ae(46,VIe,2,0,"mat-header-cell",26)(47,jIe,9,1,"mat-cell",20),Xe(),Ae(48,$Ie,1,0,"mat-header-row",27)(49,HIe,1,6,"mat-row",28),l()(),s(50,"div",29)(51,"button",30),v("click",function(){return o.createModal()}),s(52,"mat-icon"),d(53,"add"),l(),d(54," Add Controller "),l()(),s(55,"footer",31)(56,"div",32)(57,"div",33),d(58),l(),s(59,"div",34)(60,"a",35),F(61,"mat-icon",36),l(),s(62,"a",37),A(63,UIe,1,0,"mat-icon",38),A(64,GIe,1,0,"mat-icon",39),l()()()()()()),n&2&&(u(3),O(o.isLightThemeEnabled()?-1:3),u(),O(o.isLightThemeEnabled()?4:-1),u(8),x("value",o.searchText()),u(),je("controllers__empty-state--hidden",o.controllerDatabase&&o.controllerDatabase.data.length>0),u(11),je("controllers__table-container--hidden",!o.controllerDatabase||o.controllerDatabase.data.length===0),u(),x("dataSource",o.dataSource),u(23),x("matHeaderRowDef",o.displayedColumns)("matHeaderRowDefSticky",!0),u(),x("matRowDefColumns",o.displayedColumns),u(),je("controllers__buttons-bar--hidden",!o.controllerDatabase||o.controllerDatabase.data.length===0),u(8),Hi("GNS3 Web-UI \xA92018-",o.currentYear," v",o.version),u(5),O(o.isLightThemeEnabled()?-1:63),u(),O(o.isLightThemeEnabled()?64:-1))},dependencies:[Z,nt,Ue,He,Ci,at,cn,Ce,zr,Oo,ma,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,Me,ke,al,we,Te,te,se,$,le,ze,id,Qe,Gt,Kt],styles:['[_nghost-%COMP%]{display:block;width:100%;background:transparent}.controllers__header[_ngcontent-%COMP%]{max-width:1000px;margin:0 auto;padding:32px 20px 16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.controllers__header-content[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-start;gap:16px;animation:fadeIn .5s ease-out}.controllers__logo-icon[_ngcontent-%COMP%]{font-size:72px;width:72px;height:72px;display:flex;align-items:center;justify-content:center;line-height:1;overflow:visible}.controllers__header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.controllers__content[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.controllers__buttons-bar[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;max-width:1000px;margin:0 auto;padding:0 20px 20px}.controllers__buttons-bar--hidden[_ngcontent-%COMP%]{display:none}.controllers__button[_ngcontent-%COMP%]{margin:12px 0;height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px;transition:all .2s cubic-bezier(.4,0,.2,1)}.controllers__button[_ngcontent-%COMP%]:hover:not([disabled]){transform:translateY(-2px);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.controllers__button[_ngcontent-%COMP%]:active:not([disabled]){transform:translateY(0)}.controllers__search-form[_ngcontent-%COMP%]{display:flex;justify-content:center;margin:16px auto;width:100%;max-width:1000px;padding:0 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .05s both}.controllers__search[_ngcontent-%COMP%]{width:100%}.controllers__table-container[_ngcontent-%COMP%]{border-radius:16px;overflow:hidden;width:100%;max-width:1000px;margin:0 auto;background:var(--mat-sys-surface);box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .15s both}.controllers__table-container--hidden[_ngcontent-%COMP%]{display:none}mat-row[_ngcontent-%COMP%]{transition:all .2s cubic-bezier(.4,0,.2,1);cursor:default;position:relative}mat-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 3%,transparent);transform:scale(1.002)}mat-row.controllers__row--running[_ngcontent-%COMP%]{border-left:3px solid var(--mat-sys-primary)}mat-row.controllers__row--running[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 4%,transparent)}mat-row.controllers__row--starting[_ngcontent-%COMP%]{border-left:3px solid var(--mat-sys-secondary)}mat-row.controllers__row--starting[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-secondary) 4%,transparent)}mat-row.controllers__row--stopped[_ngcontent-%COMP%]{border-left:3px solid var(--mat-sys-outline-variant)}mat-row.controllers__row--stopped[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-outline-variant) 6%,transparent)}mat-row[_ngcontent-%COMP%]:nth-child(2n){background-color:color-mix(in srgb,var(--mat-sys-on-surface) 1%,transparent)}mat-row[_ngcontent-%COMP%]:nth-child(2n):hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 4%,transparent)}.mat-header-row[_ngcontent-%COMP%]{position:sticky;top:0;z-index:10;background:var(--mat-sys-surface)}.mat-header-row[_ngcontent-%COMP%] mat-header-cell[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--mat-sys-on-surface-variant);letter-spacing:.5px;text-transform:uppercase}.mat-table-sticky[_ngcontent-%COMP%]{top:0}mat-header-cell[_ngcontent-%COMP%], mat-cell[_ngcontent-%COMP%]{justify-content:center;padding:0 16px}mat-cell[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}mat-cell[mat-column=name][_ngcontent-%COMP%]{justify-content:flex-start;font-weight:500}.controllers__name--inactive[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);transition:color .2s cubic-bezier(.4,0,.2,1)}.controllers__name--inactive[_ngcontent-%COMP%]:hover{color:var(--mat-sys-on-surface)}mat-cell[mat-column=status][_ngcontent-%COMP%]{justify-content:center}mat-cell[mat-column=actions][_ngcontent-%COMP%], mat-header-cell[mat-column=actions][_ngcontent-%COMP%]{justify-content:flex-end;padding:0 16px}mat-cell[mat-column=actions][_ngcontent-%COMP%]{overflow:visible}.controllers__status-indicator[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:20px;font-size:13px;font-weight:500;transition:background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1);animation:_ngcontent-%COMP%_status-fade-in .3s cubic-bezier(.4,0,.2,1);background-color:var(--mat-sys-surface-container-highest);color:var(--mat-sys-on-surface-variant);border:1px solid var(--mat-sys-outline-variant)}.controllers__status-indicator[_ngcontent-%COMP%]:hover{transform:translateY(-1px);box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.controllers__status-dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:50%;background-color:var(--mat-sys-on-surface-variant);transition:background-color .2s cubic-bezier(.4,0,.2,1)}.controllers__status--running[_ngcontent-%COMP%]{background-color:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container);border:1px solid var(--mat-sys-primary)}.controllers__status--running[_ngcontent-%COMP%] .controllers__status-dot[_ngcontent-%COMP%]{background-color:var(--mat-sys-primary);animation:_ngcontent-%COMP%_pulse-green 2s cubic-bezier(.4,0,.6,1) infinite}.controllers__status--running[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 20%,var(--mat-sys-primary-container));box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-primary) 25%,transparent)}.controllers__status--starting[_ngcontent-%COMP%]{background-color:var(--mat-sys-secondary-container);color:var(--mat-sys-on-secondary-container);border:1px solid var(--mat-sys-secondary)}.controllers__status--starting[_ngcontent-%COMP%] .controllers__status-dot[_ngcontent-%COMP%]{background-color:var(--mat-sys-secondary);animation:_ngcontent-%COMP%_pulse-orange 1.5s cubic-bezier(.4,0,.6,1) infinite}.controllers__status--starting[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-secondary) 20%,var(--mat-sys-secondary-container));box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-secondary) 25%,transparent)}@keyframes _ngcontent-%COMP%_status-fade-in{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes _ngcontent-%COMP%_pulse-green{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.15)}}@keyframes _ngcontent-%COMP%_pulse-orange{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.15)}}.controllers__link[_ngcontent-%COMP%]{transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-block;transform-origin:left center;color:var(--mat-sys-primary);text-decoration:none;font-weight:500;position:relative}.controllers__link[_ngcontent-%COMP%]:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:2px;background-color:currentColor;transition:width .2s cubic-bezier(.4,0,.2,1)}.controllers__link[_ngcontent-%COMP%]:hover{color:color-mix(in srgb,var(--mat-sys-primary) 80%,black);transform:translateY(-2px)}.controllers__link[_ngcontent-%COMP%]:hover:after{width:100%}.controllers__actions-cell[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-end;gap:4px}button[mat-icon-button][_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;transition:all .2s cubic-bezier(.4,0,.2,1);border-radius:50%;--mat-icon-button-state-layer-size: 32px;--mat-icon-button-icon-size: 20px}button[mat-icon-button][_ngcontent-%COMP%]:before{content:"";position:absolute;inset:0;border-radius:inherit;background-color:var(--mat-icon-button-state-layer);opacity:0;transition:opacity .15s cubic-bezier(.4,0,.2,1)}button[mat-icon-button][_ngcontent-%COMP%]:hover:before{opacity:var(--mat-icon-button-hover-state-layer-opacity)}button[mat-icon-button][_ngcontent-%COMP%]:active:before{opacity:var(--mat-icon-button-pressed-state-layer-opacity)}button[mat-icon-button][_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{transition:transform .15s cubic-bezier(.4,0,.2,1);position:relative;z-index:1}button[mat-icon-button][_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{transform:scale(1.15)}button[mat-icon-button][_ngcontent-%COMP%]:active mat-icon[_ngcontent-%COMP%]{transform:scale(.95)}.primary-action-btn[_ngcontent-%COMP%]{margin-right:4px}.primary-action-btn[_ngcontent-%COMP%]:before{background-color:var(--mat-sys-primary)}.primary-action-btn[_ngcontent-%COMP%]:hover:before{opacity:.12}.primary-action-btn[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}button[mat-icon-button][_ngcontent-%COMP%]:has(.mat-icon[aria-label*=Start]):before{background-color:var(--mat-sys-tertiary)}button[mat-icon-button][_ngcontent-%COMP%]:has(.mat-icon[aria-label*=Start]):hover:before{opacity:.12}button[mat-icon-button][_ngcontent-%COMP%]:has(.mat-icon[aria-label*=Start]):hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-tertiary)}button[mat-icon-button][_ngcontent-%COMP%]:has(.mat-icon[aria-label*=Stop]):before{background-color:var(--mat-sys-error)}button[mat-icon-button][_ngcontent-%COMP%]:has(.mat-icon[aria-label*=Stop]):hover:before{opacity:.12}button[mat-icon-button][_ngcontent-%COMP%]:has(.mat-icon[aria-label*=Stop]):hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-error)}button[color=warn][_ngcontent-%COMP%]:before{background-color:var(--mat-sys-error)}button[color=warn][_ngcontent-%COMP%]:hover:before{opacity:.12}button[color=warn][_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.controllers__empty-state[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 32px;text-align:center;margin:20px auto;max-width:1000px;border-radius:16px;background:var(--mat-sys-surface);box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .2s both}.controllers__empty-state--hidden[_ngcontent-%COMP%]{display:none}.controllers__empty-state[_ngcontent-%COMP%] > mat-icon[_ngcontent-%COMP%]{font-size:64px;width:64px;height:64px;margin-bottom:16px;opacity:.4;color:var(--mat-sys-on-surface-variant)}.controllers__empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:20px;font-weight:500;margin:0 0 8px;color:var(--mat-sys-on-surface)}.controllers__empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:14px;color:color-mix(in srgb,var(--mat-sys-on-surface) 60%,transparent);margin:0 0 24px}.controllers__empty-state[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;padding:0 24px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.controllers__footer[_ngcontent-%COMP%]{padding:24px 20px;color:var(--mat-sys-on-surface-variant);font-size:14px;opacity:.7}.controllers__footer-content[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;max-width:1000px;margin:0 auto;gap:16px}.controllers__footer-info[_ngcontent-%COMP%]{flex:1}.controllers__footer-social[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.controllers__footer-social-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;color:var(--mat-sys-on-surface-variant);transition:all .2s cubic-bezier(.4,0,.2,1);text-decoration:none}.controllers__footer-social-link[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);color:var(--mat-sys-primary);transform:translateY(-2px)}.controllers__footer-social-link[_ngcontent-%COMP%]:active{transform:translateY(0)}.controllers__footer-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;line-height:1;overflow:visible}@media(max-width:768px){.controllers__header-content[_ngcontent-%COMP%]{gap:12px}.controllers__logo-icon[_ngcontent-%COMP%]{font-size:48px;width:48px;height:48px}.controllers__header[_ngcontent-%COMP%]{padding:24px 16px 12px}.controllers__header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:24px}.controllers__button[_ngcontent-%COMP%]{margin:8px 0;width:100%;height:44px;font-size:15px}.controllers__actions-cell[_ngcontent-%COMP%]{flex-wrap:wrap;gap:4px}.primary-action-btn[_ngcontent-%COMP%]{margin-right:4px}.hide-mobile[_ngcontent-%COMP%]{display:none}.hide-desktop[_ngcontent-%COMP%]{display:inline}.controllers__status-indicator[_ngcontent-%COMP%]{padding:4px 10px;font-size:12px}mat-cell[_ngcontent-%COMP%]{padding:0 12px;font-size:13px}.controllers__empty-state[_ngcontent-%COMP%]{margin:16px;padding:48px 24px}.controllers__footer[_ngcontent-%COMP%]{padding:16px;font-size:12px}.controllers__footer-content[_ngcontent-%COMP%]{flex-direction:column;gap:12px;text-align:center}}@media(min-width:769px){.hide-desktop[_ngcontent-%COMP%]{display:none}}'],changeDetection:0})}return t})(),i5=class extends Kl{controllerDatabase;sort;filterChange=new qt("");constructor(i,e){super(),this.controllerDatabase=i,this.sort=e}setFilter(i){this.filterChange.next((i||"").trim().toLowerCase())}connect(){return Dn(this.controllerDatabase.dataChange,this.sort.sortChange,this.filterChange).pipe(yt(()=>{let i=this.controllerDatabase.data.slice(),e=this.filterChange.value;return e&&(i=i.filter(n=>[n.id,n.name,n.location,n.host,n.port,n.status||"stopped"].map(r=>String(r||"").toLowerCase()).join(" ").includes(e))),!this.sort.active||this.sort.direction===""?i:i.sort((n,o)=>{let r=n[this.sort.active]!==void 0?n[this.sort.active]:"",a=o[this.sort.active]!==void 0?o[this.sort.active]:"",c=isNaN(+r)?r:+r,m=isNaN(+a)?a:+a;return(c<m?-1:1)*(this.sort.direction==="asc"?1:-1)})}))}disconnect(){}};var cT=(()=>{class t{constructor(){}get(){}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var dT=(()=>{class t{defaultConsoleService;settingsService;constructor(e,n){this.defaultConsoleService=e,this.settingsService=n}get command(){let e=this.settingsService.getConsoleSettings();return e===void 0?this.defaultConsoleService.get():e}set command(e){this.settingsService.setConsoleSettings(e)}static \u0275fac=function(n){return new(n||t)(ge(cT),ge(ea))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var mT=(()=>{class t{consoleForm=new Dr({command:new re("")});router=f(ut);consoleService=f(dT);toasterService=f(fe);ngOnInit(){this.consoleForm.get("command").setValue(this.consoleService.command)}goBack(){this.router.navigate(["/settings"])}save(){let e=this.consoleForm.value;this.consoleService.command=e.command,this.toasterService.success("Console command has been updated."),this.goBack()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-console"]],decls:30,vars:1,consts:[[1,"content"],[1,"default-header"],[1,"row"],[1,"col"],[1,"default-content"],[3,"formGroup"],[1,"form-field","full-width-field"],["matInput","","formControlName","command","placeholder","Command"],[1,"help"],[1,"buttons-bar"],["mat-button","",1,"cancel-button",3,"click"],["mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1",3),d(4,"Console settings"),l()()(),s(5,"div",4)(6,"mat-card")(7,"form",5)(8,"mat-form-field",6),F(9,"textarea",7),l(),s(10,"div",8),d(11," The following variables are replaced by GNS3:"),F(12,"br"),d(13," %h: console IP or hostname"),F(14,"br"),d(15," %p: console port"),F(16,"br"),d(17," %s: path of the serial connection"),F(18,"br"),d(19," %d: title of the console"),F(20,"br"),d(21," %i: Project UUID"),F(22,"br"),d(23," %c: controller URL (http://user:password@controller:port) "),l()()(),s(24,"div",9)(25,"button",10),v("click",function(){return o.goBack()}),d(26,"Cancel"),l(),s(27,"button",11),v("click",function(){return o.save()}),d(28,"Save"),l(),F(29,"br"),l()()()),n&2&&(u(7),x("formGroup",o.consoleForm))},dependencies:[ct,Ue,vt,mt,He,pt,bt,$,le,Dt,Tn,Me,ke,we,Te],styles:[".help[_ngcontent-%COMP%]{font-size:14px}"],changeDetection:0})}return t})();var pT=(()=>{class t{httpClient;constructor(e){this.httpClient=e}getLatestVersion(){return this.httpClient.get("http://update.gns3.net/")}static \u0275fac=function(n){return new(n||t)(ge(os))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var uT=(t,i)=>i.key;function XIe(t,i){if(t&1&&(s(0,"mat-radio-button",13)(1,"span",22),F(2,"span",23),s(3,"span",24),d(4),l()()()),t&2){let e=i.$implicit;x("value",e.key),u(2),yn("background",e.primaryColor),u(2),U(e.label)}}function QIe(t,i){if(t&1&&(s(0,"mat-radio-button",13)(1,"span",22),F(2,"span",23),s(3,"span",24),d(4),l()()()),t&2){let e=i.$implicit;x("value",e.key),u(2),yn("background",e.primaryColor),u(2),U(e.label)}}function YIe(t,i){if(t&1&&(s(0,"div",16)(1,"mat-radio-button",13)(2,"span",22),F(3,"span",25),s(4,"span",24),d(5),l()()()()),t&2){let e=b();u(),x("value",e.autoMapBackground.key),u(4),U(e.autoMapBackground.label)}}function KIe(t,i){if(t&1&&(s(0,"mat-radio-button",13)(1,"span",22)(2,"span",26)(3,"span",27),d(4,"A"),l()(),s(5,"span",24),d(6),l()()()),t&2){let e=i.$implicit;x("value",e.key),u(2),yn("background",e.background)("color",e.textColor),u(4),U(e.label)}}function ZIe(t,i){if(t&1&&(s(0,"mat-radio-button",13)(1,"span",22)(2,"span",26)(3,"span",27),d(4,"A"),l()(),s(5,"span",24),d(6),l()()()),t&2){let e=i.$implicit;x("value",e.key),u(2),yn("background",e.background)("color",e.textColor),u(4),U(e.label)}}var hT=(()=>{class t{settingsService=f(ea);toaster=f(fe);themeService=f(yi);mapSettingsService=f(To);updatesService=f(pT);cdr=f(K);settings;integrateLinksLabelsToLinks=ae(!1);openReadme=ae(!1);openConsolesInWidget=ae(!1);crashReports=ae(!1);anonymousStatistics=ae(!1);mapTheme;currentTheme;availableThemes=this.themeService.availableThemes;availableMapBackgrounds=this.themeService.availableMapBackgrounds;get lightThemes(){return this.themeService.availableThemes.filter(e=>e.type==="light")}get darkThemes(){return this.themeService.availableThemes.filter(e=>e.type==="dark")}get lightMapBackgrounds(){return this.themeService.availableMapBackgrounds.filter(e=>e.type==="light"&&e.key!=="auto")}get darkMapBackgrounds(){return this.themeService.availableMapBackgrounds.filter(e=>e.type==="dark")}get autoMapBackground(){return this.themeService.availableMapBackgrounds.find(e=>e.key==="auto")}ngOnInit(){this.settings=this.settingsService.getAll(),this.integrateLinksLabelsToLinks.set(this.mapSettingsService.integrateLinkLabelsToLinks),this.openReadme.set(this.mapSettingsService.openReadme),this.openConsolesInWidget.set(this.mapSettingsService.openConsolesInWidget),this.crashReports.set(this.settings.crash_reports),this.anonymousStatistics.set(this.settings.anonymous_statistics),this.mapTheme=this.themeService.savedMapTheme,this.currentTheme=this.themeService.getCurrentTheme(),this.cdr.markForCheck()}save(){this.settings.crash_reports=this.crashReports(),this.settings.anonymous_statistics=this.anonymousStatistics(),this.settingsService.setAll(this.settings),this.toaster.success("Settings have been saved."),this.mapSettingsService.toggleIntegrateInterfaceLabels(this.integrateLinksLabelsToLinks()),this.mapSettingsService.toggleOpenReadme(this.openReadme()),this.mapSettingsService.toggleOpenConsolesInWidget(this.openConsolesInWidget())}setTheme(e){this.themeService.setTheme(e),this.currentTheme=e,this.cdr.markForCheck()}setMapTheme(e){this.mapTheme=e,this.themeService.setMapTheme(e),this.cdr.markForCheck()}checkForUpdates(){window.open("https://gns3.com/software")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-settings"]],inputs:{integrateLinksLabelsToLinks:[1,"integrateLinksLabelsToLinks"],openReadme:[1,"openReadme"],openConsolesInWidget:[1,"openConsolesInWidget"],crashReports:[1,"crashReports"],anonymousStatistics:[1,"anonymousStatistics"]},outputs:{integrateLinksLabelsToLinks:"integrateLinksLabelsToLinksChange",openReadme:"openReadmeChange",openConsolesInWidget:"openConsolesInWidgetChange",crashReports:"crashReportsChange",anonymousStatistics:"anonymousStatisticsChange"},decls:72,vars:11,consts:[[1,"settings"],[1,"settings__header"],[1,"settings__title"],[1,"settings__content"],[1,"settings__card"],[3,"expanded"],[1,"settings__checkbox-group"],[3,"change","checked"],[1,"settings__theme-section"],[1,"settings__label"],[1,"settings__radio-group",3,"change","value"],[1,"settings__theme-group"],[1,"settings__theme-group-label"],[3,"value"],[1,"settings__theme-section","settings__theme-section--map"],[1,"settings__map-background-group",3,"change","value"],[1,"settings__map-background-auto"],[1,"settings__map-background-row"],[1,"settings__update-section"],["mat-raised-button","",1,"settings__update-button",3,"click"],[1,"settings__actions"],["mat-raised-button","","color","primary",1,"settings__save-button",3,"click"],[1,"settings__theme-option"],[1,"settings__theme-swatch"],[1,"settings__theme-name"],[1,"settings__theme-swatch","settings__theme-swatch--auto"],[1,"settings__theme-swatch","settings__theme-swatch--bg"],[1,"settings__theme-swatch-text"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"h1",2),d(3,"Settings"),l()(),s(4,"div",3)(5,"div",4)(6,"mat-accordion")(7,"mat-expansion-panel",5)(8,"mat-expansion-panel-header")(9,"mat-panel-title"),d(10," Local settings "),l(),s(11,"mat-panel-description"),d(12," Customize your local settings "),l()(),s(13,"div",6)(14,"mat-checkbox",7),v("change",function(a){return o.crashReports.set(a.checked)}),d(15,"Send anonymous crash reports"),l(),s(16,"mat-checkbox",7),v("change",function(a){return o.integrateLinksLabelsToLinks.set(a.checked)}),d(17,"Integrate link labels to links"),l(),s(18,"mat-checkbox",7),v("change",function(a){return o.openReadme.set(a.checked)}),d(19,"Automatically open project README files"),l(),s(20,"mat-checkbox",7),v("change",function(a){return o.anonymousStatistics.set(a.checked)}),d(21,"Send anonymous usage statistics"),l(),s(22,"mat-checkbox",7),v("change",function(a){return o.openConsolesInWidget.set(a.checked)}),d(23,"Open consoles in the widget instead of in new tabs after clicking start consoles for all nodes"),l()()(),s(24,"mat-expansion-panel",5)(25,"mat-expansion-panel-header")(26,"mat-panel-title"),d(27," Theme settings "),l(),s(28,"mat-panel-description"),d(29," Customize theme settings "),l()(),s(30,"div",8)(31,"label",9),d(32,"Global theme"),l(),s(33,"mat-radio-group",10),v("change",function(a){return o.setTheme(a.value)}),s(34,"div",11)(35,"span",12),d(36,"Light"),l(),J(37,XIe,5,4,"mat-radio-button",13,uT),l(),s(39,"div",11)(40,"span",12),d(41,"Dark"),l(),J(42,QIe,5,4,"mat-radio-button",13,uT),l()()(),s(44,"div",14)(45,"label",9),d(46,"Project map background"),l(),s(47,"mat-radio-group",15),v("change",function(a){return o.setMapTheme(a.value)}),A(48,YIe,6,2,"div",16),s(49,"div",17)(50,"div",11)(51,"span",12),d(52,"Light"),l(),J(53,KIe,7,6,"mat-radio-button",13,uT),l(),s(55,"div",11)(56,"span",12),d(57,"Dark"),l(),J(58,ZIe,7,6,"mat-radio-button",13,uT),l()()()()(),s(60,"mat-expansion-panel",5)(61,"mat-expansion-panel-header")(62,"mat-panel-title"),d(63," Updates "),l(),s(64,"mat-panel-description"),d(65," Check for updates "),l()(),s(66,"div",18)(67,"button",19),v("click",function(){return o.checkForUpdates()}),d(68," Check for updates "),l()()()()(),s(69,"div",20)(70,"button",21),v("click",function(){return o.save()}),d(71,"Save settings"),l()()()()),n&2&&(u(7),x("expanded",!0),u(7),x("checked",o.crashReports()),u(2),x("checked",o.integrateLinksLabelsToLinks()),u(2),x("checked",o.openReadme()),u(2),x("checked",o.anonymousStatistics()),u(2),x("checked",o.openConsolesInWidget()),u(2),x("expanded",!1),u(9),x("value",o.currentTheme),u(4),ee(o.lightThemes),u(5),ee(o.darkThemes),u(5),x("value",o.mapTheme),u(),O(o.autoMapBackground?48:-1),u(5),ee(o.lightMapBackgrounds),u(5),ee(o.darkMapBackgrounds),u(2),x("expanded",!1))},dependencies:[Z,nt,wl,op,Ud,Gd,ip,Qy,Ot,Ht,$,le,go,Io,ko],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.settings__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:24px 20px 16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.settings__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.settings__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 24px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.settings__card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);transition:box-shadow .3s cubic-bezier(.4,0,.2,1)}.settings__checkbox-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.settings__checkbox-group[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{margin:0}.settings__theme-section[_ngcontent-%COMP%]{margin-bottom:16px}.settings__theme-section[_ngcontent-%COMP%]:last-child{margin-bottom:0}.settings__theme-section--map[_ngcontent-%COMP%]{padding-top:16px;border-top:1px solid var(--mat-sys-outline-variant);margin-top:16px}.settings__label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:500;color:var(--mat-sys-on-surface);margin-bottom:8px}.settings__radio-group[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:16px}.settings__map-background-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.settings__map-background-auto[_ngcontent-%COMP%]{width:100%;padding-bottom:12px;border-bottom:1px solid var(--mat-sys-outline-variant)}.settings__map-background-row[_ngcontent-%COMP%]{display:flex;flex-direction:row;gap:32px}.settings__theme-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;flex:1;min-width:200px}.settings__theme-group-label[_ngcontent-%COMP%]{font-size:12px;font-weight:600;color:var(--mat-sys-on-surface-variant);text-transform:uppercase;letter-spacing:.5px;padding-bottom:4px;border-bottom:1px solid var(--mat-sys-outline-variant)}.settings__theme-option[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.settings__theme-swatch[_ngcontent-%COMP%]{width:20px;height:20px;border-radius:50%;flex-shrink:0;box-shadow:0 1px 3px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent);transition:transform .15s cubic-bezier(.4,0,.2,1)}.settings__theme-name[_ngcontent-%COMP%]{font-size:14px}mat-radio-button[_ngcontent-%COMP%]:hover .settings__theme-swatch[_ngcontent-%COMP%]{transform:scale(1.1)}.settings__theme-swatch--bg[_ngcontent-%COMP%]{width:28px;height:20px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--mat-sys-outline)}.settings__theme-swatch-text[_ngcontent-%COMP%]{font-size:10px;font-weight:600}.settings__theme-swatch--auto[_ngcontent-%COMP%]{width:28px;height:20px;border-radius:4px;background:linear-gradient(135deg,var(--mat-sys-primary) 0%,var(--mat-sys-secondary) 50%,var(--mat-sys-surface-variant) 100%);border:1px solid var(--mat-sys-outline)}.settings__update-section[_ngcontent-%COMP%]{padding:8px 0}.settings__update-button[_ngcontent-%COMP%]{width:100%}.settings__actions[_ngcontent-%COMP%]{margin-top:20px;display:flex;justify-content:flex-end}.settings__save-button[_ngcontent-%COMP%]{height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px;transition:all .2s cubic-bezier(.4,0,.2,1);padding:0 32px}.settings__save-button[_ngcontent-%COMP%]:hover:not([disabled]){transform:translateY(-2px);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.settings__save-button[_ngcontent-%COMP%]:active:not([disabled]){transform:translateY(0)}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.settings__header[_ngcontent-%COMP%]{padding:16px 16px 12px}.settings__title[_ngcontent-%COMP%]{font-size:28px}.settings__content[_ngcontent-%COMP%]{padding:0 16px 16px}.settings__radio-group[_ngcontent-%COMP%]{flex-direction:column;gap:8px}.settings__save-button[_ngcontent-%COMP%]{width:100%;height:44px;font-size:15px}}"],changeDetection:0})}return t})();var KU=(t,i)=>i[0];function JIe(t,i){if(t&1&&(s(0,"div",13)(1,"span",15),d(2),l(),s(3,"span",16),d(4),l()()),t&2){let e=i.$implicit;u(2),U(e[0]),u(2),U(e[1])}}function e3e(t,i){t&1&&(s(0,"span",14),d(1,"No nodes"),l())}function t3e(t,i){if(t&1&&(s(0,"div",13)(1,"span",15),d(2),l(),s(3,"span",16),d(4),l()()),t&2){let e=i.$implicit;u(2),U(e[0]),u(2),U(e[1])}}function n3e(t,i){if(t&1&&(s(0,"div",1)(1,"h3",2),d(2,"Nodes by Status"),l(),s(3,"div",12),J(4,t3e,5,2,"div",13,KU),l()()),t&2){let e=b(2);u(4),ee(e.getNodeStatusEntries())}}function i3e(t,i){if(t&1&&(s(0,"div",1)(1,"h3",2),d(2,"Projects & Nodes"),l(),s(3,"div",3)(4,"div",4)(5,"span",5),d(6),l(),s(7,"span",6),d(8,"Total Projects"),l()(),s(9,"div",7)(10,"span",5),d(11),l(),s(12,"span",6),d(13,"Open Projects"),l()(),s(14,"div",8)(15,"span",5),d(16),l(),s(17,"span",6),d(18,"Closed Projects"),l()(),s(19,"div",9)(20,"span",5),d(21),l(),s(22,"span",6),d(23,"Total Nodes"),l()(),s(24,"div",10)(25,"span",5),d(26),l(),s(27,"span",6),d(28,"Total Links"),l()(),s(29,"div",11)(30,"span",5),d(31),l(),s(32,"span",6),d(33,"Capturing"),l()()()(),s(34,"div",1)(35,"h3",2),d(36,"Nodes by Type"),l(),s(37,"div",12),J(38,JIe,5,2,"div",13,KU,!1,e3e,2,0,"span",14),l()(),A(41,n3e,6,0,"div",1)),t&2){let e=b();u(6),U(e.projectStats().total),u(5),U(e.projectStats().opened),u(5),U(e.projectStats().closed),u(5),U(e.nodeStats().total),u(5),U(e.linkStats().total),u(5),U(e.linkStats().capturing),u(7),ee(e.getNodeTypeEntries()),u(3),O(e.getNodeStatusEntries().length>0?41:-1)}}function o3e(t,i){if(t&1&&(s(0,"div",1)(1,"h3",2),d(2),l(),s(3,"div",17)(4,"div",4)(5,"span",5),d(6),l(),s(7,"span",6),d(8,"CPU Usage"),l()(),s(9,"div",4)(10,"span",5),d(11),l(),s(12,"span",6),d(13,"Disk Usage"),l()(),s(14,"div",4)(15,"span",5),d(16),l(),s(17,"span",6),d(18,"Memory Usage"),l()(),s(19,"div",4)(20,"span",5),d(21),l(),s(22,"span",6),d(23,"SWAP Usage"),l()()(),s(24,"div",18)(25,"div",19)(26,"span",20),d(27,"Load Average (1m / 5m / 15m)"),l(),s(28,"span",21),d(29),l()(),s(30,"div",19)(31,"span",20),d(32,"Memory"),l(),s(33,"span",21),d(34),l()(),s(35,"div",19)(36,"span",20),d(37,"SWAP"),l(),s(38,"span",21),d(39),l()()()()),t&2){let e=b();u(2),X("Compute: ",e.computeStatistics().compute_name),u(4),X("",e.computeStatistics().statistics.cpu_usage_percent,"%"),u(5),X("",e.computeStatistics().statistics.disk_usage_percent,"%"),u(5),X("",e.computeStatistics().statistics.memory_usage_percent,"%"),u(5),X("",e.computeStatistics().statistics.swap_usage_percent,"%"),u(8),kC(" ",e.computeStatistics().statistics.load_average_percent[0]," / ",e.computeStatistics().statistics.load_average_percent[1]," / ",e.computeStatistics().statistics.load_average_percent[2]," "),u(5),kC(" ",e.formatBytes(e.computeStatistics().statistics.memory_used)," / ",e.formatBytes(e.computeStatistics().statistics.memory_total)," (",e.formatBytes(e.computeStatistics().statistics.memory_free)," free) "),u(5),kC(" ",e.formatBytes(e.computeStatistics().statistics.swap_used)," / ",e.formatBytes(e.computeStatistics().statistics.swap_total)," (",e.formatBytes(e.computeStatistics().statistics.swap_free)," free) ")}}var fT=(()=>{class t{computeStatistics=oe(void 0);projectStats=oe(void 0);nodeStats=oe(void 0);linkStats=oe(void 0);formatBytes(e,n=2){if(e==null||e===0)return"0 Bytes";let o=1024,r=n<0?0:n,a=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],c=Math.floor(Math.log(e)/Math.log(o));return parseFloat((e/Math.pow(o,c)).toFixed(r))+" "+a[c]}getNodeTypeEntries(){let e=this.nodeStats();return e?Object.entries(e.by_type):[]}getNodeStatusEntries(){let e=this.nodeStats();return e?Object.entries(e.by_status):[]}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-status-chart"]],inputs:{computeStatistics:[1,"computeStatistics"],projectStats:[1,"projectStats"],nodeStats:[1,"nodeStats"],linkStats:[1,"linkStats"]},decls:3,vars:2,consts:[[1,"status-chart"],[1,"status-chart__section"],[1,"status-chart__section-title"],[1,"status-chart__stats-grid"],[1,"stat-card"],[1,"stat-card__value"],[1,"stat-card__label"],[1,"stat-card","stat-card--opened"],[1,"stat-card","stat-card--closed"],[1,"stat-card","stat-card--nodes"],[1,"stat-card","stat-card--links"],[1,"stat-card","stat-card--capturing"],[1,"status-chart__breakdown"],[1,"breakdown-item"],[1,"status-chart__empty"],[1,"breakdown-item__label"],[1,"breakdown-item__value"],[1,"status-chart__compute-grid"],[1,"status-chart__info-table"],[1,"info-row"],[1,"info-row__label"],[1,"info-row__value"]],template:function(n,o){n&1&&(s(0,"mat-card",0),A(1,i3e,42,8),A(2,o3e,40,14,"div",1),l()),n&2&&(u(),O(o.projectStats()?1:-1),u(),O(o.computeStatistics()?2:-1))},dependencies:[Z,Dt,Tn],styles:["[_nghost-%COMP%]{display:block}.status-chart[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;padding:24px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);transition:box-shadow .3s cubic-bezier(.4,0,.2,1)}.status-chart__gauges[_ngcontent-%COMP%]{display:flex;justify-content:space-around;align-items:center;margin-bottom:24px}.status-chart__gauges[_ngcontent-%COMP%]:last-child{margin-bottom:0}.gauge--empty[_ngcontent-%COMP%]{flex:1;max-width:200px;visibility:hidden}.status-chart__section[_ngcontent-%COMP%]{margin-bottom:24px;padding-bottom:24px;border-bottom:1px solid var(--mat-sys-outline-variant)}.status-chart__section[_ngcontent-%COMP%]:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.status-chart__section-title[_ngcontent-%COMP%]{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--mat-sys-on-surface-variant);margin-bottom:16px}.status-chart__empty[_ngcontent-%COMP%]{font-size:13px;color:var(--mat-sys-on-surface-variant);font-style:italic}.status-chart__chips[_ngcontent-%COMP%]{margin-top:16px;padding-top:16px;border-top:1px solid var(--mat-sys-outline-variant)}.status-chart__chip-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:16px;margin-bottom:12px}.status-chart__chip-row[_ngcontent-%COMP%]:last-child{margin-bottom:0}.chip[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;padding:12px 20px;border-radius:var(--mat-sys-corner-medium);flex:1;min-width:0;transition:all .2s ease}.chip__label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;opacity:.8}.chip__value[_ngcontent-%COMP%]{font-size:16px;font-weight:600;margin-top:4px}.chip--memory[_ngcontent-%COMP%]{background:var(--mat-sys-secondary-container);color:var(--mat-sys-on-secondary-container)}.chip--swap[_ngcontent-%COMP%]{background:var(--mat-sys-tertiary-container);color:var(--mat-sys-on-tertiary-container)}.status-chart__stats-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}.stat-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;padding:16px 12px;border-radius:var(--mat-sys-corner-medium);background:var(--mat-sys-surface-container-high)}.stat-card__value[_ngcontent-%COMP%]{font-size:24px;font-weight:700;color:var(--mat-sys-on-surface)}.stat-card__label[_ngcontent-%COMP%]{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.3px;color:var(--mat-sys-on-surface-variant);margin-top:4px;text-align:center}.stat-card--opened[_ngcontent-%COMP%]{background:var(--mat-sys-primary-container)}.stat-card--opened[_ngcontent-%COMP%] .stat-card__value[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary-container)}.stat-card--opened[_ngcontent-%COMP%] .stat-card__label[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary-container);opacity:.8}.stat-card--closed[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-highest)}.stat-card--nodes[_ngcontent-%COMP%]{background:var(--mat-sys-secondary-container)}.stat-card--nodes[_ngcontent-%COMP%] .stat-card__value[_ngcontent-%COMP%]{color:var(--mat-sys-on-secondary-container)}.stat-card--nodes[_ngcontent-%COMP%] .stat-card__label[_ngcontent-%COMP%]{color:var(--mat-sys-on-secondary-container);opacity:.8}.stat-card--links[_ngcontent-%COMP%]{background:var(--mat-sys-tertiary-container)}.stat-card--links[_ngcontent-%COMP%] .stat-card__value[_ngcontent-%COMP%]{color:var(--mat-sys-on-tertiary-container)}.stat-card--links[_ngcontent-%COMP%] .stat-card__label[_ngcontent-%COMP%]{color:var(--mat-sys-on-tertiary-container);opacity:.8}.stat-card--capturing[_ngcontent-%COMP%]{background:var(--mat-sys-error-container)}.stat-card--capturing[_ngcontent-%COMP%] .stat-card__value[_ngcontent-%COMP%]{color:var(--mat-sys-on-error-container)}.stat-card--capturing[_ngcontent-%COMP%] .stat-card__label[_ngcontent-%COMP%]{color:var(--mat-sys-on-error-container);opacity:.8}.status-chart__breakdown[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px}.breakdown-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--mat-sys-surface-container);border-radius:var(--mat-sys-corner-small);min-width:100px}.breakdown-item__label[_ngcontent-%COMP%]{font-size:13px;color:var(--mat-sys-on-surface-variant);text-transform:capitalize}.breakdown-item__value[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:var(--mat-sys-on-surface);margin-left:auto}@media(max-width:768px){.status-chart[_ngcontent-%COMP%]{padding:16px;border-radius:var(--mat-sys-corner-medium)}.status-chart__gauges[_ngcontent-%COMP%]{flex-wrap:wrap;gap:16px}.gauge--empty[_ngcontent-%COMP%]{display:none}.status-chart__chip-row[_ngcontent-%COMP%]{flex-direction:column;gap:8px}.chip[_ngcontent-%COMP%]{flex-direction:row;justify-content:space-between;padding:10px 16px}.status-chart__stats-grid[_ngcontent-%COMP%]{grid-template-columns:repeat(3,1fr)}.breakdown-item[_ngcontent-%COMP%]{flex:1 1 calc(50% - 8px);min-width:0}.status-chart__compute-grid[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}}.status-chart__info-table[_ngcontent-%COMP%]{margin-top:16px;padding-top:16px;border-top:1px solid var(--mat-sys-outline-variant)}.info-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--mat-sys-outline-variant)}.info-row[_ngcontent-%COMP%]:last-child{border-bottom:none}.info-row__label[_ngcontent-%COMP%]{font-size:13px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.info-row__value[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:var(--mat-sys-on-surface);text-align:right}.status-chart__compute-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.status-chart__compute-grid[_ngcontent-%COMP%] .stat-card__value[_ngcontent-%COMP%]{font-size:20px}"],changeDetection:0})}return t})();var r3e=(t,i)=>i.compute_name;function a3e(t,i){t&1&&(s(0,"div"),d(1,"Statistics not loaded"),l())}function s3e(t,i){if(t&1&&(s(0,"div",2)(1,"h3",3),d(2),l(),F(3,"app-status-chart",4),l()),t&2){let e=i.$implicit;u(2),U(e.compute_name),u(),x("computeStatistics",e)}}var gT=(()=>{class t{route=f(Ye);computeService=f(Lo);controllerService=f(We);toasterService=f(fe);controllerId="";computeStatistics=me([]);projectStats=me({total:0,opened:0,closed:0});nodeStats=me({total:0,open_project_nodes:0,closed_project_nodes:0,by_type:{},by_status:{}});linkStats=me({total:0,capturing:0});connectionFailed;ngOnInit(){this.controllerId=this.route.snapshot.paramMap.get("controller_id"),this.getStatistics()}getStatistics(){this.controllerService.get(Number(this.controllerId)).then(e=>{this.computeService.getStatistics(e).subscribe({next:n=>{this.computeStatistics.set(n.computes),this.projectStats.set(n.projects),this.nodeStats.set(n.nodes),this.linkStats.set(n.links),setTimeout(()=>{this.getStatistics()},2e4)},error:()=>{this.connectionFailed=!0}})})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-status-info"]],decls:5,vars:4,consts:[[1,"status-info__summary"],[3,"projectStats","nodeStats","linkStats"],[1,"status-info__compute"],[1,"status-info__compute-title"],[3,"computeStatistics"]],template:function(n,o){n&1&&(A(0,a3e,2,0,"div"),s(1,"div",0),F(2,"app-status-chart",1),l(),J(3,s3e,4,2,"div",2,r3e)),n&2&&(O(!o.projectStats().total&&!o.nodeStats().total&&!o.linkStats().total&&!o.computeStatistics().length?0:-1),u(2),x("projectStats",o.projectStats())("nodeStats",o.nodeStats())("linkStats",o.linkStats()),u(),ee(o.computeStatistics()))},dependencies:[Z,fT],styles:[".status-info__summary[_ngcontent-%COMP%], .status-info__compute[_ngcontent-%COMP%]{margin-bottom:24px}.status-info__compute-title[_ngcontent-%COMP%]{font-size:18px;font-weight:600;margin-bottom:12px;color:var(--mat-sys-on-surface)}"],changeDetection:0})}return t})();var _T=(()=>{class t{controllerId="";route=f(Ye);ngOnInit(){this.controllerId=this.route.snapshot.paramMap.get("controller_id")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-system-status"]],decls:6,vars:0,consts:[[1,"system-status"],[1,"system-status__header"],[1,"system-status__title"],[1,"system-status__content"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"h1",2),d(3,"System status"),l()(),s(4,"div",3),F(5,"app-status-info"),l()())},dependencies:[gT],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.system-status__header[_ngcontent-%COMP%]{max-width:1000px;margin:0 auto;padding:24px 20px 16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.system-status__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.system-status__content[_ngcontent-%COMP%]{max-width:1000px;margin:0 auto;padding:0 20px 24px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.system-status__header[_ngcontent-%COMP%]{padding:16px 16px 12px}.system-status__title[_ngcontent-%COMP%]{font-size:28px}.system-status__content[_ngcontent-%COMP%]{padding:0 16px 16px}}"],changeDetection:0})}return t})();var ZU=nl(YN()),JU=nl(ZN()),eG=nl(e5());var l3e=["terminal"],cC=(()=>{class t{controllerId;projectId;nodeId;destroy$=new Le;controller;node;contextMenuCleanup=null;socket=null;consoleService=f(gr);controllerService=f(We);route=f(Ye);title=f(um);nodeService=f(wt);themeService=f(yi);contextMenuService=f(jk);cdr=f(K);xtermService=f($k);term=new ZU.Terminal(H({},this.xtermService.getDefaultTerminalOptions()));fitAddon=new eG.FitAddon;terminal=Ut("terminal");constructor(){}ngOnInit(){this.themeService.themeChanged.pipe(rt(this.destroy$)).subscribe(()=>{this.xtermService.updateTerminalTheme(this.term,this.cdr)}),this.controllerService.isServiceInitialized?this.getData():this.controllerService.serviceInitialized.pipe(rt(this.destroy$)).subscribe(e=>{e&&this.getData()})}getData(){this.controllerId=this.route.snapshot.paramMap.get("controller_id"),this.projectId=this.route.snapshot.paramMap.get("project_id"),this.nodeId=this.route.snapshot.paramMap.get("node_id"),this.consoleService.consoleResized.pipe(rt(this.destroy$)).subscribe(()=>{this.fitAddon.fit()}),this.controllerService.get(+this.controllerId).then(e=>{this.controller=e,this.nodeService.getNodeById(this.controller,this.projectId,this.nodeId).pipe(rt(this.destroy$)).subscribe(n=>{this.node=n,this.title.setTitle(this.node.name),this.openTerminal()})})}openTerminal(){setTimeout(()=>{let e=this.terminal();this.term.open(e.nativeElement),this.xtermService.updateTerminalTheme(this.term,this.cdr),this.socket=new WebSocket(this.consoleService.getUrl(this.controller,this.node)),this.socket.onerror=()=>{console.error("[WebConsoleFullWindow] Socket connection error"),this.term.write(`\r
|
||
\x1B[31mConnection lost. Please check if the node is still running.\x1B[0m\r
|
||
`)},this.socket.onclose=()=>{console.log("[WebConsoleFullWindow] Socket closed"),this.term.write(`\r
|
||
\x1B[33mConnection closed.\x1B[0m\r
|
||
`)};let n=new JU.AttachAddon(this.socket);this.term.loadAddon(n),this.xtermService.initTerminal(this.term,this.fitAddon),this.fitAddon.fit(),this.term.focus(),this.term.attachCustomKeyEventHandler(o=>!((o.code==="KeyC"||o.code==="KeyV")&&o.ctrlKey&&o.shiftKey)),this.contextMenuCleanup=this.contextMenuService.attachContextMenu(this.term,e.nativeElement)},0)}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete(),this.socket&&(this.socket.close(),this.socket=null),this.contextMenuCleanup&&(this.contextMenuCleanup(),this.contextMenuCleanup=null),this.term&&this.term.dispose()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-web-console-full-window"]],viewQuery:function(n,o){n&1&&tn(o.terminal,l3e,5),n&2&&nn()},decls:2,vars:0,consts:[["terminal",""],[1,"terminal",2,"width","100%","height","100%"]],template:function(n,o){n&1&&jr(0,"div",1,0)},dependencies:[Z],styles:["[_nghost-%COMP%]{display:block;width:100vw;height:100vh;overflow:hidden}.terminal[_ngcontent-%COMP%]{width:100%;height:100%}"],changeDetection:0})}return t})();var vT=(()=>{class t{consoleService;bottomSheet;constructor(e,n){this.consoleService=e,this.bottomSheet=n}canDeactivate(){return this.consoleService.openConsoles>0?this.bottomSheet.open(ns,{data:{message:"Exiting the project will close open consoles, do you want to continue?"},panelClass:"confirmation-bottom-sheet"}).afterDismissed():!0}static \u0275fac=function(n){return new(n||t)(ge(gr),ge(mc))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Nn=(()=>{class t{controllerService;loginService;router;constructor(e,n,o){this.controllerService=e,this.loginService=n,this.router=o}async canActivate(e,n){let o=e.paramMap.get("controller_id");this.loginService.controller_id=o;let r=await this.controllerService.get(parseInt(o,10));try{await this.loginService.getLoggedUser(r)}catch{}return this.controllerService.get(parseInt(o,10)).then(a=>{if(a.authToken&&!a.tokenExpired)return!0;this.router.navigate(["/controller",a.id,"login"],{queryParams:{returnUrl:n.url}})})}static \u0275fac=function(n){return new(n||t)(ge(We),ge(Ml),ge(ut))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var c3e=["*",[["mat-toolbar-row"]]],d3e=["*","mat-toolbar-row"],m3e=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["mat-toolbar-row"]],hostAttrs:[1,"mat-toolbar-row"],exportAs:["matToolbarRow"]})}return t})(),tG=(()=>{class t{_elementRef=f(Lt);_platform=f(Ta);_document=f(Pi);color;_toolbarRows;constructor(){}ngAfterViewInit(){this._platform.isBrowser&&(this._checkToolbarMixedModes(),this._toolbarRows.changes.subscribe(()=>this._checkToolbarMixedModes()))}_checkToolbarMixedModes(){this._toolbarRows.length}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-toolbar"]],contentQueries:function(n,o,r){if(n&1&&$i(r,m3e,5),n&2){let a;gt(a=_t())&&(o._toolbarRows=a)}},hostAttrs:[1,"mat-toolbar"],hostVars:6,hostBindings:function(n,o){n&2&&(Mo(o.color?"mat-"+o.color:""),je("mat-toolbar-multiple-rows",o._toolbarRows.length>0)("mat-toolbar-single-row",o._toolbarRows.length===0))},inputs:{color:"color"},exportAs:["matToolbar"],ngContentSelectors:d3e,decls:2,vars:0,template:function(n,o){n&1&&(En(c3e),Yt(0),Yt(1,1))},styles:[`.mat-toolbar{background:var(--mat-toolbar-container-background-color, var(--mat-sys-surface));color:var(--mat-toolbar-container-text-color, var(--mat-sys-on-surface))}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font-family:var(--mat-toolbar-title-text-font, var(--mat-sys-title-large-font));font-size:var(--mat-toolbar-title-text-size, var(--mat-sys-title-large-size));line-height:var(--mat-toolbar-title-text-line-height, var(--mat-sys-title-large-line-height));font-weight:var(--mat-toolbar-title-text-weight, var(--mat-sys-title-large-weight));letter-spacing:var(--mat-toolbar-title-text-tracking, var(--mat-sys-title-large-tracking));margin:0}@media(forced-colors: active){.mat-toolbar{outline:solid 1px}}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar .mat-mdc-button-base.mat-mdc-button-base.mat-unthemed{--mat-button-text-label-text-color: var(--mat-toolbar-container-text-color, var(--mat-sys-on-surface));--mat-button-outlined-label-text-color: var(--mat-toolbar-container-text-color, var(--mat-sys-on-surface))}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap;height:var(--mat-toolbar-standard-height, 64px)}@media(max-width: 599px){.mat-toolbar-row,.mat-toolbar-single-row{height:var(--mat-toolbar-mobile-height, 56px)}}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%;min-height:var(--mat-toolbar-standard-height, 64px)}@media(max-width: 599px){.mat-toolbar-multiple-rows{min-height:var(--mat-toolbar-mobile-height, 56px)}}
|
||
`],encapsulation:2,changeDetection:0})}return t})();var bT=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[wn]})}return t})();var u3e=t=>["controller",t,"systemstatus"],h3e=t=>["controller",t,"settings"],f3e=t=>["controller",t,"management","users"],g3e=t=>["controller",t,"help"],_3e=t=>["/controller",t,"loggeduser"],v3e=()=>["/controllers"],b3e=t=>["/controller",t,"projects"],C3e=t=>["controller",t,"preferences"],x3e=t=>["controller",t,"computes"],y3e=t=>["controller",t,"image-manager"];function S3e(t,i){if(t&1){let e=j();s(0,"button",14),v("click",function(){D(e);let o=b();return P(o.listProjects())}),d(1,"Projects"),l()}}function w3e(t,i){if(t&1){let e=j();s(0,"button",15),v("click",function(){D(e);let o=b();return P(o.backToProject())}),d(1,"Back to project"),l()}}var CT=(()=>{class t{isInstalledSoftwareAvailable=!1;isLoginPage=!1;routeSubscription;controllerStatusSubscription;shouldStopControllersOnClosing=!0;recentlyOpenedcontrollerId;recentlyOpenedProjectId;controllerIdProjectList;controllerId;controller;project;projectMapSubscription=new so;recentlyOpenedProjectService=f(xm);controllerManagement=f(w_);toasterService=f(fe);progressService=f(zo);dialog=f(Je);router=f(ut);route=f(Ye);controllerService=f(We);projectService=f(Fi);cd=f(K);connectionManager=f(rp);ngOnInit(){this.routeSubscription=this.router.events.pipe(Pn(e=>e instanceof Or)).subscribe(()=>{this.controllerId=this.getParamFromRoute(this.route,"controller_id"),this.getData(),this.checkIfUserIsLoginPage(),this.cd.markForCheck()}),this.controllerId=this.getParamFromRoute(this.route,"controller_id"),this.getData(),this.recentlyOpenedcontrollerId=this.recentlyOpenedProjectService.getcontrollerId(),this.recentlyOpenedProjectId=this.recentlyOpenedProjectService.getProjectId(),this.controllerIdProjectList=this.recentlyOpenedProjectService.getcontrollerIdProjectList(),this.isInstalledSoftwareAvailable=!1,this.controllerStatusSubscription=this.controllerManagement.controllerStatusChanged.subscribe(e=>{e.status==="errored"&&(console.error(e.message),this.toasterService.error(e.message)),e.status==="stderr"&&(console.error(e.message),this.toasterService.error(e.message))}),this.shouldStopControllersOnClosing=!1}getParamFromRoute(e,n){let o=e;for(;o.firstChild;){o=o.firstChild;let r=o.snapshot.paramMap.get(n);if(r)return r}return o.snapshot.paramMap.get(n)}goToDocumentation(){this.controllerService.get(+this.controllerId).then(e=>{window.open(`${e.protocol}//${e.host}:${e.port}/docs`)})}checkIfUserIsLoginPage(){this.router.url.includes("login")?this.isLoginPage=!0:this.isLoginPage=!1}logout(){this.controllerService.get(+this.controllerId).then(e=>{e.authToken=null,this.controllerService.update(e).then(n=>{this.connectionManager.disconnect(),this.router.navigate(["/controller",e.id,"login"])})})}listProjects(){this.router.navigate(["/controller",this.controllerIdProjectList,"projects"]).catch(e=>this.toasterService.error("Cannot list projects"))}backToProject(){this.router.navigate(["/controller",this.recentlyOpenedcontrollerId,"project",this.recentlyOpenedProjectId]).catch(e=>this.toasterService.error("Cannot navigate to the last opened project"))}async onBeforeUnload(e){if(this.shouldStopControllersOnClosing)return e.preventDefault(),e.returnValue=!1,this.progressService.activate(),await this.controllerManagement.stopAll(),this.shouldStopControllersOnClosing=!1,this.progressService.deactivate(),window.close(),!1}getData(){this.controllerService.get(+this.controllerId).then(e=>{this.controller=e})}addNewTemplate(){if(!this.controller){this.toasterService.error("Please select a controller first");return}let n=this.dialog.open(p_,{width:"800px",maxHeight:"800px",autoFocus:!1,disableClose:!0,panelClass:["base-dialog-panel","configurator-dialog-panel","new-template-dialog-panel"]}).componentInstance;n.controller=this.controller,n.project=this.project}ngOnDestroy(){this.controllerStatusSubscription.unsubscribe(),this.routeSubscription.unsubscribe()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-default-layout"]],hostBindings:function(n,o){n&1&&v("beforeunload",function(a){return o.onBeforeUnload(a)},br)},decls:82,vars:45,consts:[["menu","matMenu"],["mainMenu","matMenu"],[1,"header"],[1,"toolbar-primary"],["mat-icon-button","",1,"gns3-button","menu-button",3,"matMenuTriggerFor"],["svgIcon","gns3"],["mat-button",""],["mat-button","",1,"back-to-project-button"],[1,"spacer"],["mat-icon-button","",3,"matMenuTriggerFor"],["mat-menu-item","",3,"disabled","routerLink"],["mat-menu-item","",3,"click","disabled"],["mat-menu-item","",3,"routerLink"],[1,"main-content"],["mat-button","",3,"click"],["mat-button","",1,"back-to-project-button",3,"click"]],template:function(n,o){if(n&1&&(s(0,"header",2)(1,"mat-toolbar",3)(2,"button",4),F(3,"mat-icon",5),l(),A(4,S3e,2,0,"button",6),A(5,w3e,2,0,"button",7),F(6,"span",8),s(7,"button",9)(8,"mat-icon"),d(9,"more_vert"),l()(),s(10,"mat-menu",null,0)(12,"button",10)(13,"mat-icon"),d(14,"info"),l(),s(15,"span"),d(16,"System status"),l()(),s(17,"button",10)(18,"mat-icon"),d(19,"settings"),l(),s(20,"span"),d(21,"Settings"),l()(),s(22,"button",10)(23,"mat-icon"),d(24,"groups"),l(),s(25,"span"),d(26,"Management"),l()(),s(27,"button",10)(28,"mat-icon"),d(29,"help"),l(),s(30,"span"),d(31,"Help"),l()(),s(32,"button",10)(33,"mat-icon"),d(34,"person"),l(),s(35,"span"),d(36,"User info"),l()(),s(37,"button",11),v("click",function(){return o.goToDocumentation()}),s(38,"mat-icon"),d(39,"person"),l(),s(40,"span"),d(41,"API documentation"),l()(),s(42,"button",11),v("click",function(){return o.logout()}),s(43,"mat-icon"),d(44,"highlight_off"),l(),s(45,"span"),d(46,"Logout"),l()()(),s(47,"mat-menu",null,1)(49,"button",12)(50,"mat-icon"),d(51,"developer_board"),l(),s(52,"span"),d(53,"Controllers"),l()(),s(54,"button",10)(55,"mat-icon"),d(56,"work"),l(),s(57,"span"),d(58,"Projects"),l()(),s(59,"button",10)(60,"mat-icon"),d(61,"settings_applications"),l(),s(62,"span"),d(63,"Template preferences"),l()(),s(64,"button",10)(65,"mat-icon"),d(66,"cloud"),l(),s(67,"span"),d(68,"Computes"),l()(),s(69,"button",10)(70,"mat-icon"),d(71,"collections"),l(),s(72,"span"),d(73,"Image manager"),l()(),s(74,"button",11),v("click",function(){return o.addNewTemplate()}),s(75,"mat-icon"),d(76,"control_point"),l(),s(77,"span"),d(78,"New template"),l()()()()(),s(79,"main",13),F(80,"router-outlet"),l(),F(81,"app-progress")),n&2){let r=Re(11),a=Re(48);u(2),x("matMenuTriggerFor",a),u(2),O(!o.recentlyOpenedProjectId&&o.controllerIdProjectList?4:-1),u(),O(o.recentlyOpenedProjectId&&o.recentlyOpenedcontrollerId?5:-1),u(2),x("matMenuTriggerFor",r),u(5),x("disabled",!o.controllerId)("routerLink",ln(26,u3e,o.controllerId)),u(5),x("disabled",!o.controllerId)("routerLink",ln(28,h3e,o.controllerId)),u(5),x("disabled",!o.controllerId)("routerLink",ln(30,f3e,o.controllerId)),u(5),x("disabled",!o.controllerId)("routerLink",ln(32,g3e,o.controllerId)),u(5),x("disabled",!o.controllerId)("routerLink",ln(34,_3e,o.controllerId)),u(5),x("disabled",!o.controllerId),u(5),x("disabled",!o.controllerId),u(7),x("routerLink",Jt(36,v3e)),u(5),x("disabled",!o.controllerId)("routerLink",ln(37,b3e,o.controllerId)),u(5),x("disabled",!o.controllerId)("routerLink",ln(39,C3e,o.controllerId)),u(5),x("disabled",!o.controllerId)("routerLink",ln(41,x3e,o.controllerId)),u(5),x("disabled",!o.controllerId)("routerLink",ln(43,y3e,o.controllerId)),u(5),x("disabled",!o.controllerId)}},dependencies:[Z,at,zd,cn,bT,tG,$,le,ze,te,se,Qe,Fn,ot,kn,Gt,Jm],styles:["[_nghost-%COMP%]{display:grid;grid-template-rows:auto 1fr;min-height:100vh;background:linear-gradient(135deg,var(--mat-sys-primary-container) 0%,var(--mat-sys-background) 100%)}.header[_ngcontent-%COMP%]{position:sticky;top:0;box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent);z-index:10}.toolbar-primary[_ngcontent-%COMP%]{background-color:var(--mat-sys-primary);color:var(--mat-sys-white)}.toolbar-primary[_ngcontent-%COMP%] button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary)}.toolbar-primary[_ngcontent-%COMP%] .gns3-button[_ngcontent-%COMP%]{position:relative;top:-2px}.toolbar-primary[_ngcontent-%COMP%] .gns3-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:30px;height:30px}.toolbar-primary[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;height:40px;width:40px;border-radius:20px;margin:2px 0;transition:transform .1s ease}.toolbar-primary[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary)}.toolbar-primary[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%]:hover{transform:scale(1.3)}.toolbar-primary[_ngcontent-%COMP%] .back-to-project-button[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary);transition:transform .1s ease}.toolbar-primary[_ngcontent-%COMP%] .back-to-project-button[_ngcontent-%COMP%]:hover{transform:scale(1.05)}.spacer[_ngcontent-%COMP%]{flex:1 1 auto}.main-content[_ngcontent-%COMP%]{overflow-y:auto;background:transparent}.footer[_ngcontent-%COMP%]{flex-shrink:0;padding:16px 24px;margin:auto 0 0;text-align:center;font-size:14px;border-top:1px solid color-mix(in srgb,var(--mat-sys-outline) 20%,transparent)}"],changeDetection:0})}return t})();var M_=(()=>{class t{controllerService;constructor(e){this.controllerService=e}resolve(e){return this.controllerService.get(parseInt(e.params.controller_id))}static \u0275fac=function(n){return new(n||t)(ge(We))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var pa=(()=>{class t{httpController;constructor(e){this.httpController=e}getInformationAboutLoggedUser(e){return this.httpController.get(e,"/access/users/me/")}get(e,n){return this.httpController.get(e,`/access/users/${n}`)}list(e){return this.httpController.get(e,"/access/users")}add(e,n){return this.httpController.post(e,"/access/users",n)}delete(e,n){return this.httpController.delete(e,`/access/users/${n}`)}update(e,n,o){return o?this.httpController.put(e,"/access/users/me",n):this.httpController.put(e,`/access/users/${n.user_id}`,n)}getGroupsByUserId(e,n){return this.httpController.get(e,`/access/users/${n}/groups`)}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var xT=(t,i,e="")=>n=>Ma(500).pipe(fn(()=>i.list(t)),yt(o=>o.find(r=>r.username===n.value&&n.value!==e)?{userExists:!0}:null));var yT=(t,i,e="")=>n=>Ma(500).pipe(fn(()=>i.list(t)),yt(o=>o.find(r=>r.email===n.value&&n.value!==e)?{emailExists:!0}:null));var Gl=(()=>{class t{httpController;constructor(e){this.httpController=e}getGroups(e){return this.httpController.get(e,"/access/groups")}getGroupMember(e,n){return this.httpController.get(e,`/access/groups/${n}/members`)}addGroup(e,n){return this.httpController.post(e,"/access/groups",{name:n})}delete(e,n){return this.httpController.delete(e,`/access/groups/${n}`)}get(e,n){return this.httpController.get(e,`/access/groups/${n}`)}addMemberToGroup(e,n,o){return this.httpController.put(e,`/access/groups/${n.user_group_id}/members/${o.user_id}`,{})}removeUser(e,n,o){return this.httpController.delete(e,`/access/groups/${n.user_group_id}/members/${o.user_id}`)}update(e,n){return this.httpController.put(e,`/access/groups/${n.user_group_id}`,{name:n.name})}getGroupRole(e,n){return this.httpController.get(e,`/access/groups/${n}/roles`)}removeRole(e,n,o){return this.httpController.delete(e,`/access/groups/${n.user_group_id}/roles/${o.role_id}`)}addRoleToGroup(e,n,o){return this.httpController.put(e,`/access/groups/${n.user_group_id}/roles/${o.role_id}`,{})}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function ST(t){if(t.get("password").value!==t.get("confirmPassword").value){t.get("confirmPassword").setErrors({confirmPasswordMatch:!0});return}}var M3e=(t,i)=>i.name;function k3e(t,i){t&1&&(s(0,"mat-error"),d(1,"Username is required"),l())}function T3e(t,i){t&1&&(s(0,"mat-error"),d(1,"Username is incorrect"),l())}function E3e(t,i){t&1&&(s(0,"mat-error"),d(1,"User with this username exists"),l())}function D3e(t,i){t&1&&(s(0,"mat-error"),d(1,"Email is required"),l())}function P3e(t,i){t&1&&(s(0,"mat-error"),d(1,"Email is invalid"),l())}function I3e(t,i){t&1&&(s(0,"mat-error"),d(1,"A password between 6 and 100 characters is required."),l())}function A3e(t,i){t&1&&(s(0,"mat-error"),d(1,"Password and Confirm password must be the same."),l())}function O3e(t,i){if(t&1&&(s(0,"mat-option",14),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e.name," ")}}function N3e(t,i){if(t&1){let e=j();s(0,"div")(1,"div",19)(2,"div"),d(3),l(),s(4,"mat-icon",20),v("click",function(){let o=D(e).$implicit,r=b();return P(r.deleteGroup(o))}),d(5,"delete"),l()()()}if(t&2){let e=i.$implicit;u(3),U(e.name)}}var wT=(()=>{class t{dialogRef=f(Pe);userService=f(pa);toasterService=f(fe);groupService=f(Gl);cd=f(K);addUserForm;controller;groups=[];groupsToAdd=new Set([]);autocompleteControl=new re;filteredGroups;constructor(){}ngOnInit(){this.addUserForm=new Dr({username:new re(null,[be.required,be.minLength(3),be.pattern("[a-zA-Z0-9_-]+$")],[xT(this.controller,this.userService)]),full_name:new re,email:new re(null,[be.email,be.required],[yT(this.controller,this.userService)]),password:new re(null,[be.required,be.minLength(6),be.maxLength(100)]),confirmPassword:new re(null,[be.minLength(6),be.maxLength(100),be.required]),is_active:new re(!0)},{validators:[ST]}),this.groupService.getGroups(this.controller).subscribe(e=>{this.groups=e,this.filteredGroups=this.autocompleteControl.valueChanges.pipe(li(""),yt(n=>this._filter(n))),this.cd.markForCheck()})}_filter(e){if(typeof e=="string"){let n=e.toLowerCase();return this.groups.filter(o=>o.name.toLowerCase().includes(n))}}get form(){return this.addUserForm.controls}onCancelClick(){this.dialogRef.close()}onAddClick(){if(!this.addUserForm.valid)return;let e=this.addUserForm.value,n=Array.from(this.groupsToAdd.values());this.userService.add(this.controller,e).subscribe(o=>{this.toasterService.success(`User ${o.username} added`),n.forEach(r=>{this.groupService.addMemberToGroup(this.controller,r,o).subscribe(()=>{this.toasterService.success(`user ${o.username} was added to group ${r.name}`)},a=>{this.toasterService.error(`An error occur while trying to add user ${o.username} to group ${r.name}`)})}),this.dialogRef.close()},o=>{this.toasterService.error(`Cannot create user: ${o.error?.message||o.message}`)})}deleteGroup(e){this.groupsToAdd.delete(e)}selectedGroup(e){this.groupsToAdd.add(e)}displayFn(e){return e&&e.name?e.name:""}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-add-user-dialog"]],decls:53,vars:14,consts:[["auto","matAutocomplete"],["mat-dialog-title",""],[3,"formGroup"],["mat-dialog-content",""],["appearance","fill",1,"full-width-field"],["matInput","","type","text","formControlName","username","placeholder","Username"],["matInput","","type","text","formControlName","full_name","placeholder","Full name"],["matInput","","type","text","formControlName","email","placeholder","Email"],["matInput","","type","password","formControlName","password","placeholder","Password"],["matInput","","type","password","formControlName","confirmPassword","placeholder","Confirm Password"],["formControlName","is_active"],[1,"my-2"],["type","text","matInput","",3,"matAutocomplete","formControl"],[3,"optionSelected","displayWith"],[3,"value"],[1,"groups"],["mat-dialog-actions","","align","end"],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click","disabled"],[1,"groupList"],[3,"click"]],template:function(n,o){if(n&1&&(s(0,"h1",1),d(1,"Create new user"),l(),s(2,"form",2)(3,"div",3)(4,"mat-form-field",4)(5,"mat-label"),d(6,"Username"),l(),F(7,"input",5),A(8,k3e,2,0,"mat-error"),A(9,T3e,2,0,"mat-error"),A(10,E3e,2,0,"mat-error"),l(),s(11,"mat-form-field",4)(12,"mat-label"),d(13,"Full name"),l(),F(14,"input",6),l(),s(15,"mat-form-field",4)(16,"mat-label"),d(17,"Email"),l(),F(18,"input",7),A(19,D3e,2,0,"mat-error"),A(20,P3e,2,0,"mat-error"),l(),s(21,"mat-form-field",4)(22,"mat-label"),d(23,"Password"),l(),F(24,"input",8),A(25,I3e,2,0,"mat-error"),l(),s(26,"mat-form-field",4)(27,"mat-label"),d(28,"Confirm Password"),l(),F(29,"input",9),A(30,A3e,2,0,"mat-error"),l(),s(31,"mat-checkbox",10),d(32,"Is active"),l(),F(33,"mat-divider",11),s(34,"h6"),d(35,"Add user to groups:"),l(),s(36,"mat-form-field",4)(37,"mat-label"),d(38,"Groups"),l(),F(39,"input",12),s(40,"mat-autocomplete",13,0),v("optionSelected",function(a){return o.selectedGroup(a.option.value)}),J(42,O3e,2,2,"mat-option",14,Fe),on(44,"async"),l()(),s(45,"div",15),J(46,N3e,6,1,"div",null,M3e),l()(),s(48,"div",16)(49,"button",17),v("click",function(){return o.onCancelClick()}),d(50,"Cancel"),l(),s(51,"button",18),v("click",function(){return o.onAddClick()}),d(52," Add user "),l()()()),n&2){let r=Re(41);u(2),x("formGroup",o.addUserForm),u(6),O(o.form.username!=null&&o.form.username.touched&&(o.form.username!=null&&o.form.username.errors)&&(o.form.username!=null&&o.form.username.errors.required)?8:-1),u(),O(o.form.username!=null&&o.form.username.errors&&(o.form.username!=null&&o.form.username.errors.pattern)?9:-1),u(),O(o.form.username!=null&&o.form.username.errors&&(o.form.username!=null&&o.form.username.errors.userExists)?10:-1),u(9),O(o.form.email!=null&&o.form.email.touched&&(o.form.email!=null&&o.form.email.errors)&&(o.form.email!=null&&o.form.email.errors.required)?19:-1),u(),O(o.form.email!=null&&o.form.email.errors&&(o.form.email!=null&&o.form.email.errors.email)?20:-1),u(5),O(o.form.password!=null&&o.form.password.touched&&(o.form.password!=null&&o.form.password.errors)?25:-1),u(5),O(o.form.confirmPassword!=null&&o.form.confirmPassword.touched&&(o.form.confirmPassword!=null&&o.form.confirmPassword.errors)?30:-1),u(9),x("matAutocomplete",r)("formControl",o.autocompleteControl),u(),x("displayWith",o.displayFn),u(2),ee(oi(44,12,o.filteredGroups)),u(4),ee(o.groupsToAdd),u(5),x("disabled",!o.addUserForm.valid)}},dependencies:[Z,ct,Ue,vt,mt,He,bm,pt,bt,Ce,Ve,Be,Wt,$,le,Me,ke,lt,Ni,we,Te,Ot,Ht,Ea,ls,Ds,Ul,St,el,Jr],styles:[".full-width-field[_ngcontent-%COMP%]{width:100%}.button-div[_ngcontent-%COMP%]{float:right}.groupList[_ngcontent-%COMP%]{display:flex;margin:10px;justify-content:space-between;flex:1 1 auto}.groups[_ngcontent-%COMP%]{display:flex;min-height:40px;overflow:auto;flex-direction:column}"],changeDetection:0})}return t})();var R3e=(t,i)=>i.username;function F3e(t,i){if(t&1&&(s(0,"li"),d(1),l()),t&2){let e=i.$implicit;u(),Hi("",e.username,"",e.full_name?" ("+e.full_name+")":"")}}var dC=(()=>{class t{data;dialogRef=f(Pe);constructor(e){this.data=e}onCancel(){this.dialogRef.close()}onDelete(){this.dialogRef.close(!0)}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-delete-user-dialog"]],decls:10,vars:0,consts:[["mat-dialog-title",""],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",1,"add-project-button",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Are you sure you want to delete the following users ?"),l(),s(2,"ul"),J(3,F3e,2,2,"li",null,R3e),l(),s(5,"div",1)(6,"button",2),v("click",function(){return o.onCancel()}),d(7,"No, cancel"),l(),s(8,"button",3),v("click",function(){return o.onDelete()}),d(9," Yes, delete! "),l()()),n&2&&(u(3),ee(o.data.users))},dependencies:[Z,Ce,Ve,Be,$,le],encapsulation:2,changeDetection:0})}return t})();var nG=(()=>{class t{transform(e,n){return e?n?(n=n.toLowerCase(),e.data.filter(o=>o.username&&o.username.toLowerCase().includes(n)||o.full_name&&o.full_name.toLowerCase().includes(n)||o.email&&o.email.toLowerCase().includes(n))):e:[]}static \u0275fac=function(n){return new(n||t)};static \u0275pipe=Cr({name:"userFilter",type:t,pure:!0})}return t})();var Xp=(()=>{class t{httpController;constructor(e){this.httpController=e}getEndpoints(e){return this.httpController.get(e,"/access/acl/endpoints")}list(e){return this.httpController.get(e,"/access/acl")}add(e,n){return this.httpController.post(e,"/access/acl",n)}get(e,n){return this.httpController.get(e,`/access/acl/${n}`)}delete(e,n){return this.httpController.delete(e,`/access/acl/${n}`)}update(e,n){return this.httpController.put(e,`/access/acl/${n.ace_id}`,n)}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Wl=(()=>{class t{httpController;constructor(e){this.httpController=e}get(e){return this.httpController.get(e,"/access/roles")}delete(e,n){return this.httpController.delete(e,`/access/roles/${n}`)}create(e,n){return this.httpController.post(e,"/access/roles",n)}getById(e,n){return this.httpController.get(e,`/access/roles/${n}`)}update(e,n){return this.httpController.put(e,`/access/roles/${n.role_id}`,{name:n.name,description:n.description})}setPrivileges(e,n,o){return this.httpController.put(e,`/access/roles/${n}/privileges/${o}`,void 0)}removePrivileges(e,n,o){return this.httpController.delete(e,`/access/roles/${n}/privileges/${o}`)}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function B3e(t,i){t&1&&(s(0,"mat-error"),d(1,"Password must be at least 8 characters long and contain at least one digit, one lowercase letter and one uppercase letter."),l())}function V3e(t,i){t&1&&(s(0,"mat-error"),d(1,"Password and Confirm password must be the same."),l())}var k_=(()=>{class t{dialogRef=f(Pe);userService=f(pa);toasterService=f(fe);cd=f(K);data=f(Nt);user=me(this.data.user);editPasswordForm=new Dr({password:new re(null,[be.minLength(6),be.maxLength(100),be.pattern(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$/),be.required]),confirmPassword:new re(null,[be.minLength(6),be.maxLength(100),be.pattern(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$/),be.required])},{validators:[ST]});constructor(){}get passwordForm(){return this.editPasswordForm.controls}onCancel(){this.dialogRef.close()}onPasswordSave(){if(!this.editPasswordForm.valid)return;let e={};e.password=this.editPasswordForm.get("password").value,e.user_id=this.user().user_id,this.userService.update(this.data.controller,e,this.data.self_update).subscribe(n=>{this.toasterService.success(`User ${n.username} password updated`),this.editPasswordForm.reset(),this.dialogRef.close(!0),this.cd.markForCheck()},n=>{this.toasterService.error("Cannot update password for user: "+n),this.cd.markForCheck()})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-change-user-password"]],decls:15,vars:5,consts:[["mat-dialog-title",""],[1,"input-field",3,"formGroup"],[1,"input-field"],["matInput","","type","password","formControlName","password","placeholder","Password"],["matInput","","type","password","formControlName","confirmPassword","placeholder","Confirm Password"],["mat-dialog-actions","",1,"button-div"],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",1,"add-project-button",3,"click","disabled"]],template:function(n,o){if(n&1&&(s(0,"h1",0),d(1),l(),s(2,"div")(3,"form",1)(4,"mat-form-field",2),F(5,"input",3),A(6,B3e,2,0,"mat-error"),l(),s(7,"mat-form-field",2),F(8,"input",4),A(9,V3e,2,0,"mat-error"),l(),s(10,"div",5)(11,"button",6),v("click",function(){return o.onCancel()}),d(12,"Cancel"),l(),s(13,"button",7),v("click",function(){return o.onPasswordSave()}),d(14," Change password "),l()()()()),n&2){let r;u(),X("Change password for ",(r=o.user())==null?null:r.username),u(2),x("formGroup",o.editPasswordForm),u(3),O(o.passwordForm.password!=null&&o.passwordForm.password.touched&&(o.passwordForm.password!=null&&o.passwordForm.password.errors)?6:-1),u(3),O(o.passwordForm.confirmPassword!=null&&o.passwordForm.confirmPassword.touched&&(o.passwordForm.confirmPassword!=null&&o.passwordForm.confirmPassword.errors)?9:-1),u(4),x("disabled",!o.editPasswordForm.valid)}},dependencies:[Z,ct,Ue,vt,mt,He,pt,bt,Ce,Ve,Be,$,le,Me,ke,Ni,we,Te],styles:[".input-field[_ngcontent-%COMP%]{width:100%;padding:0 16px}.button-div[_ngcontent-%COMP%]{float:right}"],changeDetection:0})}return t})();var z3e=(t,i)=>i.user_group_id;function j3e(t,i){t&1&&(s(0,"mat-error"),d(1,"Username is required"),l())}function $3e(t,i){t&1&&(s(0,"mat-error"),d(1,"Username is incorrect"),l())}function H3e(t,i){t&1&&(s(0,"mat-error"),d(1,"User with this username exists"),l())}function U3e(t,i){t&1&&(s(0,"mat-error"),d(1,"Email is required"),l())}function G3e(t,i){t&1&&(s(0,"mat-error"),d(1,"Email is invalid"),l())}function W3e(t,i){t&1&&(s(0,"mat-error"),d(1,"User with this email exists"),l())}function q3e(t,i){t&1&&(s(0,"p",21),d(1,"Loading..."),l())}function X3e(t,i){t&1&&(s(0,"p",22),d(1,"User is not member of any group"),l())}function Q3e(t,i){if(t&1&&(s(0,"li")(1,"span",26),d(2),l()()),t&2){let e=i.$implicit;u(2),U(e.name)}}function Y3e(t,i){if(t&1&&(s(0,"ul"),J(1,Q3e,3,1,"li",null,z3e),l()),t&2){let e=b();u(),ee(e.groups)}}function K3e(t,i){t&1&&(s(0,"p",21),d(1,"Loading..."),l())}function Z3e(t,i){t&1&&(s(0,"p",22),d(1,"No ACEs found for this user"),l())}function J3e(t,i){t&1&&(s(0,"th",35),d(1,"Endpoint"),l())}function eAe(t,i){if(t&1&&(s(0,"td",36),d(1),l()),t&2){let e=i.$implicit;u(),U(e.endpoint_name)}}function tAe(t,i){t&1&&(s(0,"th",35),d(1,"Role"),l())}function nAe(t,i){if(t&1&&(s(0,"td",36),d(1),l()),t&2){let e=i.$implicit;u(),U(e.role_name)}}function iAe(t,i){t&1&&(s(0,"th",35),d(1,"Propagate"),l())}function oAe(t,i){if(t&1&&(s(0,"td",36),d(1),l()),t&2){let e=i.$implicit;u(),U(e.propagate)}}function rAe(t,i){t&1&&(s(0,"th",35),d(1,"Allowed"),l())}function aAe(t,i){if(t&1&&(s(0,"td",36),d(1),l()),t&2){let e=i.$implicit;u(),U(e.allowed)}}function sAe(t,i){t&1&&F(0,"tr",37)}function lAe(t,i){t&1&&F(0,"tr",38)}function cAe(t,i){if(t&1&&(s(0,"table",23),qe(1,27),Ae(2,J3e,2,0,"th",28)(3,eAe,2,1,"td",29),Xe(),qe(4,30),Ae(5,tAe,2,0,"th",28)(6,nAe,2,1,"td",29),Xe(),qe(7,31),Ae(8,iAe,2,0,"th",28)(9,oAe,2,1,"td",29),Xe(),qe(10,32),Ae(11,rAe,2,0,"th",28)(12,aAe,2,1,"td",29),Xe(),Ae(13,sAe,1,0,"tr",33)(14,lAe,1,0,"tr",34),l()),t&2){let e=b();x("dataSource",e.aceDatasource),u(13),x("matHeaderRowDef",e.aceDisplayedColumns),u(),x("matRowDefColumns",e.aceDisplayedColumns)}}var MT=(()=>{class t{data;dialogRef=f(Pe);userService=f(pa);toasterService=f(fe);aclService=f(Xp);roleService=f(Wl);dialog=f(Je);cd=f(K);editUserForm;groups=[];aces=[];aceDatasource=new Nr;aceDisplayedColumns=["endpoint","role","propagate","allowed"];groupsLoaded=!1;acesLoaded=!1;constructor(e){this.data=e,this.user=e.user,this.controller=e.controller}user;controller;ngOnInit(){this.initForm(),this.loadGroupsData(),this.loadAceData()}initForm(){this.editUserForm=new Dr({username:new re(this.user.username,[be.required,be.minLength(3),be.pattern("[a-zA-Z0-9_-]+$")],[xT(this.controller,this.userService,this.user.username)]),full_name:new re(this.user.full_name),email:new re(this.user.email,[be.email,be.required],[yT(this.controller,this.userService,this.user.email)]),is_active:new re(this.user.is_active)})}get form(){return this.editUserForm.controls}loadGroupsData(){this.userService.getGroupsByUserId(this.controller,this.user.user_id).subscribe({next:e=>{this.groups=e,this.groupsLoaded=!0,this.cd.markForCheck()},error:e=>{console.error("Failed to load groups:",e),this.groupsLoaded=!0,this.cd.markForCheck()}})}loadAceData(){this.roleService.get(this.controller).subscribe(e=>{this.aclService.getEndpoints(this.controller).subscribe(n=>{this.aclService.list(this.controller).subscribe({next:o=>{this.aces=o.filter(r=>r.ace_type==="user"&&r.user_id===this.user.user_id),this.aceDatasource.data=this.aces.map(r=>{let a=n.filter(m=>m.endpoint===r.path)[0],c=e.filter(m=>m.role_id===r.role_id)[0];return tt(H({},r),{endpoint_name:a?.name||r.path,role_name:c?.name||"Unknown"})}),this.acesLoaded=!0,this.cd.markForCheck()},error:o=>{console.error("Failed to load ACEs:",o),this.acesLoaded=!0,this.cd.markForCheck()}})})})}onSaveChanges(){if(!this.editUserForm.valid)return;let e=this.getUpdatedValues();e.user_id=this.user.user_id,this.userService.update(this.controller,e,!1).subscribe(n=>{this.toasterService.success(`User ${n.username} updated`),this.dialogRef.close(n)},n=>{this.toasterService.error("Cannot update user : "+n)})}getUpdatedValues(){let e={};return Object.keys(this.editUserForm.controls).forEach(n=>{let o=this.editUserForm.get(n);o.dirty&&o.value!==this.user[n]&&(e[n]=o.value)}),e}onChangePassword(){this.dialog.open(k_,{panelClass:["base-dialog-panel","change-user-password-dialog-panel"],data:{user:this.user,controller:this.controller}})}onCancel(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-user-detail-dialog"]],decls:84,vars:16,consts:[["mat-dialog-title",""],[1,"user-detail-dialog__content"],[1,"user-detail-dialog__section"],[1,"user-detail-dialog__section-title"],[1,"user-detail-dialog__card"],[1,"user-detail-dialog__form",3,"formGroup"],[1,"user-detail-dialog__form-row"],["appearance","fill",1,"user-detail-dialog__field"],["matInput","","type","text","formControlName","username"],["matInput","","type","text","formControlName","full_name"],["matInput","","type","text","formControlName","email"],[1,"user-detail-dialog__checkbox"],["formControlName","is_active"],[1,"user-detail-dialog__card","user-detail-dialog__card--muted"],[1,"user-detail-dialog__info-grid"],[1,"user-detail-dialog__info-item"],[1,"user-detail-dialog__info-label"],[1,"user-detail-dialog__info-value"],[1,"user-detail-dialog__info-item","user-detail-dialog__info-item--full"],[1,"user-detail-dialog__info-value","user-detail-dialog__info-value--mono"],[1,"user-detail-dialog__groups-list"],[1,"user-detail-dialog__loading"],[1,"user-detail-dialog__empty-message"],["mat-table","",1,"user-detail-dialog__ace-table",3,"dataSource"],["mat-button","",3,"click"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"user-detail-dialog__group-name"],["matColumnDef","endpoint"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","role"],["matColumnDef","propagate"],["matColumnDef","allowed"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell",""],["mat-header-row",""],["mat-row",""]],template:function(n,o){n&1&&(s(0,"h2",0),d(1),l(),s(2,"mat-dialog-content")(3,"div",1)(4,"section",2)(5,"h3",3),d(6,"Details"),l(),s(7,"mat-card",4)(8,"mat-card-content")(9,"form",5)(10,"div",6)(11,"mat-form-field",7)(12,"mat-label"),d(13,"Username"),l(),F(14,"input",8),A(15,j3e,2,0,"mat-error"),A(16,$3e,2,0,"mat-error"),A(17,H3e,2,0,"mat-error"),l(),s(18,"mat-form-field",7)(19,"mat-label"),d(20,"Full name"),l(),F(21,"input",9),l()(),s(22,"div",6)(23,"mat-form-field",7)(24,"mat-label"),d(25,"Email"),l(),F(26,"input",10),A(27,U3e,2,0,"mat-error"),A(28,G3e,2,0,"mat-error"),A(29,W3e,2,0,"mat-error"),l(),s(30,"div",11)(31,"mat-checkbox",12),d(32,"Is active"),l()()()()()(),s(33,"mat-card",13)(34,"mat-card-header")(35,"mat-card-title"),d(36,"User Information"),l()(),s(37,"mat-card-content")(38,"div",14)(39,"div",15)(40,"span",16),d(41,"Is Superadmin"),l(),s(42,"span",17),d(43),l()(),s(44,"div",15)(45,"span",16),d(46,"Creation date"),l(),s(47,"span",17),d(48),l()(),s(49,"div",15)(50,"span",16),d(51,"Last update"),l(),s(52,"span",17),d(53),l()(),s(54,"div",15)(55,"span",16),d(56,"Last login"),l(),s(57,"span",17),d(58),l()(),s(59,"div",18)(60,"span",16),d(61,"UUID"),l(),s(62,"span",19),d(63),l()()()()()(),s(64,"section",2)(65,"h3",3),d(66,"Groups"),l(),s(67,"div",20),A(68,q3e,2,0,"p",21)(69,X3e,2,0,"p",22)(70,Y3e,3,0,"ul"),l()(),s(71,"section",2)(72,"h3",3),d(73,"ACEs"),l(),A(74,K3e,2,0,"p",21)(75,Z3e,2,0,"p",22)(76,cAe,15,3,"table",23),l()()(),s(77,"mat-dialog-actions")(78,"button",24),v("click",function(){return o.onChangePassword()}),d(79,"Change Password"),l(),s(80,"button",24),v("click",function(){return o.onCancel()}),d(81,"Cancel"),l(),s(82,"button",25),v("click",function(){return o.onSaveChanges()}),d(83," Save changes "),l()()),n&2&&(u(),X("User ",o.user.username),u(8),x("formGroup",o.editUserForm),u(6),O(o.form.username!=null&&o.form.username.touched&&(o.form.username!=null&&o.form.username.errors)&&(o.form.username!=null&&o.form.username.errors.required)?15:-1),u(),O(o.form.username!=null&&o.form.username.errors&&(o.form.username!=null&&o.form.username.errors.pattern)?16:-1),u(),O(o.form.username!=null&&o.form.username.errors&&(o.form.username!=null&&o.form.username.errors.userExists)?17:-1),u(10),O(o.form.email!=null&&o.form.email.touched&&(o.form.email!=null&&o.form.email.errors)&&(o.form.email!=null&&o.form.email.errors.required)?27:-1),u(),O(o.form.email!=null&&o.form.email.errors&&(o.form.email!=null&&o.form.email.errors.email)?28:-1),u(),O(o.form.email!=null&&o.form.email.errors&&(o.form.email!=null&&o.form.email.errors.emailExists)?29:-1),u(14),U(o.user.is_superadmin?"YES":"NO"),u(5),U(o.user.created_at),u(5),U(o.user.updated_at),u(5),U(o.user.last_login||"Never"),u(5),U(o.user.user_id),u(5),O(o.groupsLoaded?o.groups.length===0?69:70:68),u(6),O(o.acesLoaded?o.aces.length===0?75:76:74),u(8),x("disabled",!o.editUserForm.valid))},dependencies:[Z,nt,Ue,vt,mt,He,ct,pt,bt,at,Ce,Ve,Be,Wt,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,$,le,te,Me,ke,lt,Ni,we,Te,Ot,Ht,Dt,Tn,Sl,ed,Jc],styles:[".user-detail-dialog__content[_ngcontent-%COMP%]{padding:0}.user-detail-dialog__section[_ngcontent-%COMP%]{margin-bottom:24px}.user-detail-dialog__section[_ngcontent-%COMP%]:last-child{margin-bottom:0}.user-detail-dialog__section-title[_ngcontent-%COMP%]{font-size:16px;font-weight:600;color:var(--mat-sys-on-surface);margin:0 0 12px}.user-detail-dialog__card[_ngcontent-%COMP%]{margin-bottom:16px;border-radius:12px}.user-detail-dialog__card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%]{padding-top:16px}.user-detail-dialog__card--muted[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low)}.user-detail-dialog__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.user-detail-dialog__form-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:flex-start}@media(max-width:600px){.user-detail-dialog__form-row[_ngcontent-%COMP%]{grid-template-columns:1fr}}.user-detail-dialog__field[_ngcontent-%COMP%]{width:100%}.user-detail-dialog__checkbox[_ngcontent-%COMP%]{display:flex;align-items:center;padding-top:4px}.user-detail-dialog__info-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}@media(max-width:600px){.user-detail-dialog__info-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}}.user-detail-dialog__info-item[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.user-detail-dialog__info-item--full[_ngcontent-%COMP%]{grid-column:1/-1}.user-detail-dialog__info-label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--mat-sys-on-surface-variant);text-transform:uppercase;letter-spacing:.5px}.user-detail-dialog__info-value[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}.user-detail-dialog__info-value--mono[_ngcontent-%COMP%]{font-family:monospace;font-size:12px}.user-detail-dialog__groups-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low);border-radius:8px;padding:12px 16px}.user-detail-dialog__groups-list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{list-style:none;padding:0;margin:0}.user-detail-dialog__groups-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{padding:8px 0;border-bottom:1px solid var(--mat-sys-outline-variant)}.user-detail-dialog__groups-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:last-child{border-bottom:none}.user-detail-dialog__group-name[_ngcontent-%COMP%]{font-weight:500;color:var(--mat-sys-on-surface)}.user-detail-dialog__ace-table[_ngcontent-%COMP%]{width:100%;background:var(--mat-sys-surface-container-low);border-radius:8px;overflow:hidden}.user-detail-dialog__ace-table[_ngcontent-%COMP%] .mat-header-row[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container)}.user-detail-dialog__ace-table[_ngcontent-%COMP%] mat-header-cell[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--mat-sys-on-surface-variant);text-transform:uppercase}.user-detail-dialog__ace-table[_ngcontent-%COMP%] mat-cell[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}.user-detail-dialog__ace-table[_ngcontent-%COMP%] mat-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 3%,transparent)}.user-detail-dialog__empty-message[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-style:italic;text-align:center;padding:24px}.user-detail-dialog__loading[_ngcontent-%COMP%]{text-align:center;padding:24px;color:var(--mat-sys-on-surface-variant)}"],changeDetection:0})}return t})();var dAe=["button"],mAe=["*"];function pAe(t,i){if(t&1&&(s(0,"div",2),F(1,"mat-pseudo-checkbox",6),l()),t&2){let e=b();u(),x("disabled",e.disabled)}}var iG=new kt("MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS",{providedIn:"root",factory:()=>({hideSingleSelectionIndicator:!1,hideMultipleSelectionIndicator:!1,disabledInteractive:!1})}),oG=new kt("MatButtonToggleGroup"),uAe={provide:Zl,useExisting:ql(()=>o5),multi:!0},kT=class{source;value;constructor(i,e){this.source=i,this.value=e}},o5=(()=>{class t{_changeDetector=f(K);_dir=f(Hr,{optional:!0});_multiple=!1;_disabled=!1;_disabledInteractive=!1;_selectionModel;_rawValue;_controlValueAccessorChangeFn=()=>{};_onTouched=()=>{};_buttonToggles;appearance;get name(){return this._name}set name(e){this._name=e,this._markButtonsForCheck()}_name=f(Oi).getId("mat-button-toggle-group-");vertical=!1;get value(){let e=this._selectionModel?this._selectionModel.selected:[];return this.multiple?e.map(n=>n.value):e[0]?e[0].value:void 0}set value(e){this._setSelectionByValue(e),this.valueChange.emit(this.value)}valueChange=new ve;get selected(){let e=this._selectionModel?this._selectionModel.selected:[];return this.multiple?e:e[0]||null}get multiple(){return this._multiple}set multiple(e){this._multiple=e,this._markButtonsForCheck()}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._markButtonsForCheck()}get disabledInteractive(){return this._disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e,this._markButtonsForCheck()}get dir(){return this._dir&&this._dir.value==="rtl"?"rtl":"ltr"}change=new ve;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._markButtonsForCheck()}_hideSingleSelectionIndicator;get hideMultipleSelectionIndicator(){return this._hideMultipleSelectionIndicator}set hideMultipleSelectionIndicator(e){this._hideMultipleSelectionIndicator=e,this._markButtonsForCheck()}_hideMultipleSelectionIndicator;constructor(){let e=f(iG,{optional:!0});this.appearance=e&&e.appearance?e.appearance:"standard",this._hideSingleSelectionIndicator=e?.hideSingleSelectionIndicator??!1,this._hideMultipleSelectionIndicator=e?.hideMultipleSelectionIndicator??!1}ngOnInit(){this._selectionModel=new ha(this.multiple,void 0,!1)}ngAfterContentInit(){this._selectionModel.select(...this._buttonToggles.filter(e=>e.checked)),this.multiple||this._initializeTabIndex()}writeValue(e){this.value=e,this._changeDetector.markForCheck()}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}_keydown(e){if(this.multiple||this.disabled||cr(e))return;let o=e.target.id,r=this._buttonToggles.toArray().findIndex(c=>c.buttonId===o),a=null;switch(e.keyCode){case 32:case 13:a=this._buttonToggles.get(r)||null;break;case 38:a=this._getNextButton(r,-1);break;case 37:a=this._getNextButton(r,this.dir==="ltr"?-1:1);break;case 40:a=this._getNextButton(r,1);break;case 39:a=this._getNextButton(r,this.dir==="ltr"?1:-1);break;default:return}a&&(e.preventDefault(),a._onButtonClick(),a.focus())}_emitChangeEvent(e){let n=new kT(e,this.value);this._rawValue=n.value,this._controlValueAccessorChangeFn(n.value),this.change.emit(n)}_syncButtonToggle(e,n,o=!1,r=!1){!this.multiple&&this.selected&&!e.checked&&(this.selected.checked=!1),this._selectionModel?n?this._selectionModel.select(e):this._selectionModel.deselect(e):r=!0,r?Promise.resolve().then(()=>this._updateModelValue(e,o)):this._updateModelValue(e,o)}_isSelected(e){return this._selectionModel&&this._selectionModel.isSelected(e)}_isPrechecked(e){return typeof this._rawValue>"u"?!1:this.multiple&&Array.isArray(this._rawValue)?this._rawValue.some(n=>e.value!=null&&n===e.value):e.value===this._rawValue}_initializeTabIndex(){if(this._buttonToggles.forEach(e=>{e.tabIndex=-1}),this.selected)this.selected.tabIndex=0;else for(let e=0;e<this._buttonToggles.length;e++){let n=this._buttonToggles.get(e);if(!n.disabled){n.tabIndex=0;break}}}_getNextButton(e,n){let o=this._buttonToggles;for(let r=1;r<=o.length;r++){let a=(e+n*r+o.length)%o.length,c=o.get(a);if(c&&!c.disabled)return c}return null}_setSelectionByValue(e){if(this._rawValue=e,!this._buttonToggles)return;let n=this._buttonToggles.toArray();if(this.multiple&&e?(Array.isArray(e),this._clearSelection(),e.forEach(o=>this._selectValue(o,n))):(this._clearSelection(),this._selectValue(e,n)),!this.multiple&&n.every(o=>o.tabIndex===-1)){for(let o of n)if(!o.disabled){o.tabIndex=0;break}}}_clearSelection(){this._selectionModel.clear(),this._buttonToggles.forEach(e=>{e.checked=!1,this.multiple||(e.tabIndex=-1)})}_selectValue(e,n){for(let o of n)if(o.value===e){o.checked=!0,this._selectionModel.select(o),this.multiple||(o.tabIndex=0);break}}_updateModelValue(e,n){n&&this._emitChangeEvent(e),this.valueChange.emit(this.value)}_markButtonsForCheck(){this._buttonToggles?.forEach(e=>e._markForCheck())}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["mat-button-toggle-group"]],contentQueries:function(n,o,r){if(n&1&&$i(r,TT,5),n&2){let a;gt(a=_t())&&(o._buttonToggles=a)}},hostAttrs:[1,"mat-button-toggle-group"],hostVars:6,hostBindings:function(n,o){n&1&&v("keydown",function(a){return o._keydown(a)}),n&2&&(It("role",o.multiple?"group":"radiogroup")("aria-disabled",o.disabled),je("mat-button-toggle-vertical",o.vertical)("mat-button-toggle-group-appearance-standard",o.appearance==="standard"))},inputs:{appearance:"appearance",name:"name",vertical:[2,"vertical","vertical",dt],value:"value",multiple:[2,"multiple","multiple",dt],disabled:[2,"disabled","disabled",dt],disabledInteractive:[2,"disabledInteractive","disabledInteractive",dt],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",dt],hideMultipleSelectionIndicator:[2,"hideMultipleSelectionIndicator","hideMultipleSelectionIndicator",dt]},outputs:{valueChange:"valueChange",change:"change"},exportAs:["matButtonToggleGroup"],features:[hn([uAe,{provide:oG,useExisting:t}])]})}return t})(),TT=(()=>{class t{_changeDetectorRef=f(K);_elementRef=f(Lt);_focusMonitor=f(xr);_idGenerator=f(Oi);_animationDisabled=Qi();_checked=!1;ariaLabel;ariaLabelledby=null;_buttonElement;buttonToggleGroup;get buttonId(){return`${this.id}-button`}id;name;value;get tabIndex(){return this._tabIndex()}set tabIndex(e){this._tabIndex.set(e)}_tabIndex;disableRipple=!1;get appearance(){return this.buttonToggleGroup?this.buttonToggleGroup.appearance:this._appearance}set appearance(e){this._appearance=e}_appearance;get checked(){return this.buttonToggleGroup?this.buttonToggleGroup._isSelected(this):this._checked}set checked(e){e!==this._checked&&(this._checked=e,this.buttonToggleGroup&&this.buttonToggleGroup._syncButtonToggle(this,this._checked),this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled||this.buttonToggleGroup&&this.buttonToggleGroup.disabled}set disabled(e){this._disabled=e}_disabled=!1;get disabledInteractive(){return this._disabledInteractive||this.buttonToggleGroup!==null&&this.buttonToggleGroup.disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e}_disabledInteractive;change=new ve;constructor(){f(Go).load(yr);let e=f(oG,{optional:!0}),n=f(new ka("tabindex"),{optional:!0})||"",o=f(iG,{optional:!0});this._tabIndex=me(parseInt(n)||0),this.buttonToggleGroup=e,this._appearance=o&&o.appearance?o.appearance:"standard",this._disabledInteractive=o?.disabledInteractive??!1}ngOnInit(){let e=this.buttonToggleGroup;this.id=this.id||this._idGenerator.getId("mat-button-toggle-"),e&&(e._isPrechecked(this)?this.checked=!0:e._isSelected(this)!==this._checked&&e._syncButtonToggle(this,this._checked))}ngAfterViewInit(){this._animationDisabled||this._elementRef.nativeElement.classList.add("mat-button-toggle-animations-enabled"),this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){let e=this.buttonToggleGroup;this._focusMonitor.stopMonitoring(this._elementRef),e&&e._isSelected(this)&&e._syncButtonToggle(this,!1,!1,!0)}focus(e){this._buttonElement.nativeElement.focus(e)}_onButtonClick(){if(this.disabled)return;let e=this.isSingleSelector()?!0:!this._checked;if(e!==this._checked&&(this._checked=e,this.buttonToggleGroup&&(this.buttonToggleGroup._syncButtonToggle(this,this._checked,!0),this.buttonToggleGroup._onTouched())),this.isSingleSelector()){let n=this.buttonToggleGroup._buttonToggles.find(o=>o.tabIndex===0);n&&(n.tabIndex=-1),this.tabIndex=0}this.change.emit(new kT(this,this.value))}_markForCheck(){this._changeDetectorRef.markForCheck()}_getButtonName(){return this.isSingleSelector()?this.buttonToggleGroup.name:this.name||null}isSingleSelector(){return this.buttonToggleGroup&&!this.buttonToggleGroup.multiple}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-button-toggle"]],viewQuery:function(n,o){if(n&1&&gn(dAe,5),n&2){let r;gt(r=_t())&&(o._buttonElement=r.first)}},hostAttrs:["role","presentation",1,"mat-button-toggle"],hostVars:14,hostBindings:function(n,o){n&1&&v("focus",function(){return o.focus()}),n&2&&(It("aria-label",null)("aria-labelledby",null)("id",o.id)("name",null),je("mat-button-toggle-standalone",!o.buttonToggleGroup)("mat-button-toggle-checked",o.checked)("mat-button-toggle-disabled",o.disabled)("mat-button-toggle-disabled-interactive",o.disabledInteractive)("mat-button-toggle-appearance-standard",o.appearance==="standard"))},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],id:"id",name:"name",value:"value",tabIndex:"tabIndex",disableRipple:[2,"disableRipple","disableRipple",dt],appearance:"appearance",checked:[2,"checked","checked",dt],disabled:[2,"disabled","disabled",dt],disabledInteractive:[2,"disabledInteractive","disabledInteractive",dt]},outputs:{change:"change"},exportAs:["matButtonToggle"],ngContentSelectors:mAe,decls:7,vars:13,consts:[["button",""],["type","button",1,"mat-button-toggle-button","mat-focus-indicator",3,"click","id","disabled"],[1,"mat-button-toggle-checkbox-wrapper"],[1,"mat-button-toggle-label-content"],[1,"mat-button-toggle-focus-overlay"],["matRipple","",1,"mat-button-toggle-ripple",3,"matRippleTrigger","matRippleDisabled"],["state","checked","aria-hidden","true","appearance","minimal",3,"disabled"]],template:function(n,o){if(n&1&&(En(),s(0,"button",1,0),v("click",function(){return o._onButtonClick()}),A(2,pAe,2,1,"div",2),s(3,"span",3),Yt(4),l()(),F(5,"span",4)(6,"span",5)),n&2){let r=Re(1);x("id",o.buttonId)("disabled",o.disabled&&!o.disabledInteractive||null),It("role",o.isSingleSelector()?"radio":"button")("tabindex",o.disabled&&!o.disabledInteractive?-1:o.tabIndex)("aria-pressed",o.isSingleSelector()?null:o.checked)("aria-checked",o.isSingleSelector()?o.checked:null)("name",o._getButtonName())("aria-label",o.ariaLabel)("aria-labelledby",o.ariaLabelledby)("aria-disabled",o.disabled&&o.disabledInteractive?"true":null),u(2),O(o.buttonToggleGroup&&(!o.buttonToggleGroup.multiple&&!o.buttonToggleGroup.hideSingleSelectionIndicator||o.buttonToggleGroup.multiple&&!o.buttonToggleGroup.hideMultipleSelectionIndicator)?2:-1),u(4),x("matRippleTrigger",r)("matRippleDisabled",o.disableRipple||o.disabled)}},dependencies:[as,yR],styles:[`.mat-button-toggle-standalone,.mat-button-toggle-group{position:relative;display:inline-flex;flex-direction:row;white-space:nowrap;overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:var(--mat-button-toggle-legacy-shape);transform:translateZ(0)}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}@media(forced-colors: active){.mat-button-toggle-standalone,.mat-button-toggle-group{outline:solid 1px}}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard .mat-pseudo-checkbox,.mat-button-toggle-group-appearance-standard .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-button-toggle-selected-state-text-color, var(--mat-sys-on-secondary-container))}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}@media(forced-colors: active){.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{outline:0}}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle{white-space:nowrap;position:relative;color:var(--mat-button-toggle-legacy-text-color);font-family:var(--mat-button-toggle-legacy-label-text-font);font-size:var(--mat-button-toggle-legacy-label-text-size);line-height:var(--mat-button-toggle-legacy-label-text-line-height);font-weight:var(--mat-button-toggle-legacy-label-text-weight);letter-spacing:var(--mat-button-toggle-legacy-label-text-tracking);--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-button-toggle-legacy-selected-state-text-color)}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:var(--mat-button-toggle-legacy-focus-state-layer-opacity)}.mat-button-toggle .mat-icon svg{vertical-align:top}.mat-button-toggle-checkbox-wrapper{display:inline-block;justify-content:flex-start;align-items:center;width:0;height:18px;line-height:18px;overflow:hidden;box-sizing:border-box;position:absolute;top:50%;left:16px;transform:translate3d(0, -50%, 0)}[dir=rtl] .mat-button-toggle-checkbox-wrapper{left:auto;right:16px}.mat-button-toggle-appearance-standard .mat-button-toggle-checkbox-wrapper{left:12px}[dir=rtl] .mat-button-toggle-appearance-standard .mat-button-toggle-checkbox-wrapper{left:auto;right:12px}.mat-button-toggle-checked .mat-button-toggle-checkbox-wrapper{width:18px}.mat-button-toggle-animations-enabled .mat-button-toggle-checkbox-wrapper{transition:width 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-button-toggle-vertical .mat-button-toggle-checkbox-wrapper{transition:none}.mat-button-toggle-checked{color:var(--mat-button-toggle-legacy-selected-state-text-color);background-color:var(--mat-button-toggle-legacy-selected-state-background-color)}.mat-button-toggle-disabled{pointer-events:none;color:var(--mat-button-toggle-legacy-disabled-state-text-color);background-color:var(--mat-button-toggle-legacy-disabled-state-background-color);--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color: var(--mat-button-toggle-legacy-disabled-state-text-color)}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:var(--mat-button-toggle-legacy-disabled-selected-state-background-color)}.mat-button-toggle-disabled-interactive{pointer-events:auto}.mat-button-toggle-appearance-standard{color:var(--mat-button-toggle-text-color, var(--mat-sys-on-surface));background-color:var(--mat-button-toggle-background-color, transparent);font-family:var(--mat-button-toggle-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-toggle-label-text-size, var(--mat-sys-label-large-size));line-height:var(--mat-button-toggle-label-text-line-height, var(--mat-sys-label-large-line-height));font-weight:var(--mat-button-toggle-label-text-weight, var(--mat-sys-label-large-weight));letter-spacing:var(--mat-button-toggle-label-text-tracking, var(--mat-sys-label-large-tracking))}.mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:none;border-right:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:none;border-right:none;border-top:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}.mat-button-toggle-appearance-standard.mat-button-toggle-checked{color:var(--mat-button-toggle-selected-state-text-color, var(--mat-sys-on-secondary-container));background-color:var(--mat-button-toggle-selected-state-background-color, var(--mat-sys-secondary-container))}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled{color:var(--mat-button-toggle-disabled-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-toggle-disabled-state-background-color, transparent)}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color: var(--mat-button-toggle-disabled-selected-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled.mat-button-toggle-checked{color:var(--mat-button-toggle-disabled-selected-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-toggle-disabled-selected-state-background-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:var(--mat-button-toggle-state-layer-color, var(--mat-sys-on-surface))}.mat-button-toggle-appearance-standard:hover .mat-button-toggle-focus-overlay{opacity:var(--mat-button-toggle-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-button-toggle-appearance-standard.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:var(--mat-button-toggle-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}@media(hover: none){.mat-button-toggle-appearance-standard:hover .mat-button-toggle-focus-overlay{display:none}}.mat-button-toggle-label-content{-webkit-user-select:none;user-select:none;display:inline-block;padding:0 16px;line-height:var(--mat-button-toggle-legacy-height);position:relative}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{padding:0 12px;line-height:var(--mat-button-toggle-height, 40px)}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;pointer-events:none;opacity:0;background-color:var(--mat-button-toggle-legacy-state-layer-color)}@media(forced-colors: active){.mat-button-toggle-checked .mat-button-toggle-focus-overlay{border-bottom:solid 500px;opacity:.5;height:0}.mat-button-toggle-checked:hover .mat-button-toggle-focus-overlay{opacity:.6}.mat-button-toggle-checked.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{border-bottom:solid 500px}}.mat-button-toggle .mat-button-toggle-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-toggle-button{border:0;background:none;color:inherit;padding:0;margin:0;font:inherit;outline:none;width:100%;cursor:pointer}.mat-button-toggle-animations-enabled .mat-button-toggle-button{transition:padding 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-button-toggle-vertical .mat-button-toggle-button{transition:none}.mat-button-toggle-disabled .mat-button-toggle-button{cursor:default}.mat-button-toggle-button::-moz-focus-inner{border:0}.mat-button-toggle-checked .mat-button-toggle-button:has(.mat-button-toggle-checkbox-wrapper){padding-left:30px}[dir=rtl] .mat-button-toggle-checked .mat-button-toggle-button:has(.mat-button-toggle-checkbox-wrapper){padding-left:0;padding-right:30px}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard{--mat-focus-indicator-border-radius: var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard:not(.mat-button-toggle-vertical) .mat-button-toggle:last-of-type .mat-button-toggle-button::before{border-top-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-bottom-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard:not(.mat-button-toggle-vertical) .mat-button-toggle:first-of-type .mat-button-toggle-button::before{border-top-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-bottom-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle:last-of-type .mat-button-toggle-button::before{border-bottom-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-bottom-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle:first-of-type .mat-button-toggle-button::before{border-top-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-top-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),ET=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[ss,TT,wn]})}return t})();var rG=(()=>{class t{dialogRef=f(Pe);close(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-model-type-help-dialog"]],decls:271,vars:0,consts:[["mat-dialog-title",""],[1,"help-content"],[1,"help-section"],[1,"field-item"],[1,"info-card"],[1,"status-text"],[1,"status-icon"],[1,"note"],[1,"warning-card"],[1,"strategy-table","mat-elevation-z1"],["align","end"],["mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h2",0)(1,"mat-icon"),d(2,"help_outline"),l(),d(3,` Custom Mode Field Documentation
|
||
`),l(),s(4,"mat-dialog-content",1)(5,"div",2)(6,"h3"),d(7,"Basic Configuration"),l(),s(8,"div",3)(9,"h4"),d(10,"Configuration Name"),l(),s(11,"p"),d(12,"A unique identifier for this LLM model configuration."),l(),s(13,"ul")(14,"li")(15,"strong"),d(16,"Format:"),l(),d(17," 1-100 characters"),l(),s(18,"li")(19,"strong"),d(20,"Allowed characters:"),l(),d(21," Letters, numbers, underscores, and hyphens"),l(),s(22,"li")(23,"strong"),d(24,"Example:"),l(),s(25,"code"),d(26,"gpt-4o-config"),l(),d(27,", "),s(28,"code"),d(29,"claude-3-5-sonnet"),l()()()(),s(30,"div",3)(31,"h4"),d(32,"Model Type"),l(),s(33,"p"),d(34,"The category of AI model you are configuring. This field is reserved for future use."),l(),s(35,"mat-card",4)(36,"mat-card-content")(37,"p",5)(38,"mat-icon",6),d(39,"info"),l(),d(40," Currently, only "),s(41,"strong"),d(42,"text"),l(),d(43," model type is supported. Other options (vision, stt, tts, multimodal, embedding, reranking, other) are reserved for future enhancements. "),l()()()(),s(44,"div",3)(45,"h4"),d(46,"Select LLM Provider"),l(),s(47,"p"),d(48,"Choose a preset provider to auto-configure the connection settings."),l(),s(49,"ul")(50,"li")(51,"strong"),d(52,"OpenRouter:"),l(),d(53," Access to multiple models through openrouter.ai"),l(),s(54,"li")(55,"strong"),d(56,"DeepSeek:"),l(),d(57," DeepSeek's official API endpoint"),l(),s(58,"li")(59,"strong"),d(60,"Custom:"),l(),d(61," Manually configure all settings"),l()(),s(62,"p",7),d(63,"Presets automatically fill in the Base URL and default model list."),l()(),s(64,"div",3)(65,"h4"),d(66,"Model Name"),l(),s(67,"p"),d(68,"The specific model to use from the selected provider."),l(),s(69,"ul")(70,"li")(71,"strong"),d(72,"From preset:"),l(),d(73," Select from a dropdown list of available models"),l(),s(74,"li")(75,"strong"),d(76,"Custom:"),l(),d(77," Enter any model name manually"),l()(),s(78,"p")(79,"strong"),d(80,"Examples:"),l(),s(81,"code"),d(82,"gpt-4o"),l(),d(83,", "),s(84,"code"),d(85,"claude-3-5-sonnet-20241022"),l(),d(86,", "),s(87,"code"),d(88,"deepseek-chat"),l()()()(),s(89,"div",2)(90,"h3"),d(91,"API Configuration"),l(),s(92,"div",3)(93,"h4"),d(94,"Model Provider"),l(),s(95,"p"),d(96,"The provider type for API communication."),l(),s(97,"p"),d(98,' Select the provider that matches your API endpoint. For OpenAI-compatible APIs, choose "OpenAI" and customize the Base URL. '),l()(),s(99,"div",3)(100,"h4"),d(101,"Base URL"),l(),s(102,"p"),d(103,"The API endpoint URL for the provider."),l(),s(104,"ul")(105,"li")(106,"strong"),d(107,"Default:"),l(),d(108," Leave empty to use the provider's default endpoint"),l(),s(109,"li")(110,"strong"),d(111,"Custom:"),l(),d(112," Enter a full URL (e.g., "),s(113,"code"),d(114,"https://api.openai.com/v1"),l(),d(115,")"),l()(),s(116,"p",7),d(117,"This field is auto-filled when using presets."),l()(),s(118,"div",3)(119,"h4"),d(120,"API Key"),l(),s(121,"p"),d(122,"Your authentication key for accessing the API."),l(),s(123,"ul")(124,"li")(125,"strong"),d(126,"Create mode:"),l(),d(127," Required field, minimum 10 characters"),l(),s(128,"li")(129,"strong"),d(130,"Edit mode:"),l(),d(131," Leave empty to keep existing key"),l()(),s(132,"mat-card",8)(133,"mat-card-content")(134,"p",5)(135,"mat-icon",6),d(136,"lock"),l(),d(137," API keys are encrypted on the server for security. "),l()()()()(),s(138,"div",2)(139,"h3"),d(140,"Model Parameters"),l(),s(141,"div",3)(142,"h4"),d(143,"Temperature"),l(),s(144,"p"),d(145,"Controls the randomness of the model's responses."),l(),s(146,"ul")(147,"li")(148,"strong"),d(149,"Range:"),l(),d(150," 0.0 to 2.0"),l(),s(151,"li")(152,"strong"),d(153,"Lower values (0.0-0.3):"),l(),d(154," More focused, deterministic output"),l(),s(155,"li")(156,"strong"),d(157,"Higher values (0.7-2.0):"),l(),d(158," More creative, diverse output"),l(),s(159,"li")(160,"strong"),d(161,"Recommended:"),l(),d(162," 0.3 for technical tasks, 0.7 for creative tasks"),l()()(),s(163,"div",3)(164,"h4"),d(165,"Context Limit"),l(),s(166,"p"),d(167,"The maximum context window size in thousands (K) of tokens."),l(),s(168,"ul")(169,"li")(170,"strong"),d(171,"Range:"),l(),d(172," 1 to 10000"),l(),s(173,"li")(174,"strong"),d(175,"Unit:"),l(),d(176," K tokens (e.g., 128 = 128K tokens)"),l(),s(177,"li")(178,"strong"),d(179,"Meaning:"),l(),d(180," Maximum amount of text the model can consider"),l()(),s(181,"p",7),d(182,"Different models have different context limits. Check your model's documentation."),l()(),s(183,"div",3)(184,"h4"),d(185,"Context Strategy"),l(),s(186,"p"),d(187,"Determines how aggressively the system uses the available context limit."),l(),s(188,"table",9)(189,"thead")(190,"tr")(191,"th"),d(192,"Strategy"),l(),s(193,"th"),d(194,"Usage"),l()()(),s(195,"tbody")(196,"tr")(197,"td")(198,"strong"),d(199,"Conservative"),l()(),s(200,"td"),d(201,"60% of context limit (safer, more reserved)"),l()(),s(202,"tr")(203,"td")(204,"strong"),d(205,"Balanced"),l()(),s(206,"td"),d(207,"75% of context limit (recommended)"),l()(),s(208,"tr")(209,"td")(210,"strong"),d(211,"Aggressive"),l()(),s(212,"td"),d(213,"85% of context limit (maximizes capacity)"),l()()()()(),s(214,"div",3)(215,"h4"),d(216,"Copilot Mode"),l(),s(217,"p"),d(218,"Determines the AI assistant's operational permissions within GNS3."),l(),s(219,"table",9)(220,"thead")(221,"tr")(222,"th"),d(223,"Mode"),l(),s(224,"th"),d(225,"Capabilities"),l()()(),s(226,"tbody")(227,"tr")(228,"td")(229,"strong"),d(230,"Teaching Assistant"),l()(),s(231,"td"),d(232,"Diagnostics and suggestions only (read-only)"),l()(),s(233,"tr")(234,"td")(235,"strong"),d(236,"Lab Automation Assistant"),l()(),s(237,"td"),d(238,"Full configuration access (can modify settings)"),l()()()()()(),s(239,"div",2)(240,"h3"),d(241,"Advanced Parameters (Optional)"),l(),s(242,"p"),d(243,"Add custom parameters to pass additional options to the API."),l(),s(244,"ul")(245,"li")(246,"strong"),d(247,"Key:"),l(),d(248," Parameter name (e.g., "),s(249,"code"),d(250,"max_tokens"),l(),d(251,")"),l(),s(252,"li")(253,"strong"),d(254,"Value:"),l(),d(255," Parameter value (e.g., "),s(256,"code"),d(257,"4096"),l(),d(258,")"),l()(),s(259,"p",7),d(260,"This field is reserved for future use. Additional parameters may be supported in later versions."),l()(),s(261,"div",2)(262,"h3"),d(263,"Default Configuration"),l(),s(264,"p"),d(265,"When enabled, this configuration will be used as the default for AI Chat and other AI-powered features."),l(),s(266,"p"),d(267,"Only one configuration can be set as default at a time."),l()()(),s(268,"mat-dialog-actions",10)(269,"button",11),v("click",function(){return o.close()}),d(270,"Got it"),l()())},dependencies:[Ce,Ve,Be,Wt,$,le,te,se,Dt,Tn,Sl],styles:["[_nghost-%COMP%]{display:block}mat-dialog-title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}mat-dialog-title[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:24px;width:24px;height:24px}.help-content[_ngcontent-%COMP%]{max-width:700px;max-height:60vh;overflow-y:auto}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%]{margin-bottom:32px}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%]:last-child{margin-bottom:0}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:18px;font-weight:600;margin:0 0 20px;padding-bottom:8px;color:var(--mat-sys-on-surface);border-bottom:1px solid var(--mat-sys-outline-variant)}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{font-size:16px;font-weight:600;margin:16px 0 8px;color:var(--mat-sys-on-surface)}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:14px;line-height:1.6;margin:8px 0;color:var(--mat-sys-on-surface-variant)}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-weight:500;color:var(--mat-sys-on-surface)}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font-family:Courier New,monospace;font-size:13px;background:var(--mat-sys-surface-container-high);color:var(--mat-sys-on-surface);padding:2px 6px;border-radius:4px}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{margin:8px 0;padding-left:24px}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{font-size:14px;line-height:1.6;margin:4px 0;color:var(--mat-sys-on-surface-variant)}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .note[_ngcontent-%COMP%]{display:block;margin-top:12px;padding:12px;background:var(--mat-sys-surface-container);border-radius:8px;font-size:13px;color:var(--mat-sys-on-surface-variant)}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .info-card[_ngcontent-%COMP%], .help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .warning-card[_ngcontent-%COMP%]{margin:12px 0;border-radius:8px;background:var(--mat-sys-surface-container)}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .info-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%], .help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .warning-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%]{padding:12px 16px}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .info-card[_ngcontent-%COMP%] .status-text[_ngcontent-%COMP%], .help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .warning-card[_ngcontent-%COMP%] .status-text[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:12px;margin:0;font-size:14px;line-height:1.6;color:var(--mat-sys-on-surface-variant)}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .info-card[_ngcontent-%COMP%] .status-text[_ngcontent-%COMP%] .status-icon[_ngcontent-%COMP%], .help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .warning-card[_ngcontent-%COMP%] .status-text[_ngcontent-%COMP%] .status-icon[_ngcontent-%COMP%]{flex-shrink:0;margin-top:2px}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .field-item[_ngcontent-%COMP%]{margin-bottom:24px}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .field-item[_ngcontent-%COMP%]:last-child{margin-bottom:0}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .strategy-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;margin:12px 0}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .strategy-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{text-align:left;padding:10px 12px;font-size:14px;font-weight:500;color:var(--mat-sys-on-surface);border-bottom:2px solid var(--mat-sys-outline)}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .strategy-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]{border-bottom:1px solid var(--mat-sys-outline-variant)}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .strategy-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child{border-bottom:none}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .strategy-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:10px 12px;font-size:14px;color:var(--mat-sys-on-surface-variant)}.help-content[_ngcontent-%COMP%] .help-section[_ngcontent-%COMP%] .strategy-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-weight:500}"],changeDetection:0})}return t})();var aG=(t,i)=>i.id,mC=(t,i)=>i.value;function fAe(t,i){if(t&1&&(s(0,"mat-error"),d(1),l()),t&2){let e=b(2);u(),U(e.getErrorMessage("name"))}}function gAe(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e.id),u(),X(" ",e.label," ")}}function _Ae(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function vAe(t,i){if(t&1){let e=j();s(0,"mat-form-field",13)(1,"mat-label"),d(2,"Model Name"),l(),s(3,"mat-select",15),v("selectionChange",function(o){D(e);let r=b(2);return P(r.onModelChange(o.value))}),J(4,_Ae,2,2,"mat-option",16,Fe),l(),s(6,"mat-hint"),d(7,"Select a model from the list"),l()()}if(t&2){let e,n=b(2);u(3),x("value",(e=n.form.get("model"))==null?null:e.value),u(),ee(n.selectedPreset.models)}}function bAe(t,i){t&1&&(s(0,"mat-error"),d(1,"Model name is required"),l())}function CAe(t,i){if(t&1&&(s(0,"mat-form-field",13)(1,"mat-label"),d(2,"Model Name"),l(),F(3,"input",24),A(4,bAe,2,0,"mat-error"),s(5,"mat-hint"),d(6,"Enter your model name (e.g., gpt-4o, claude-3-5-sonnet-20241022)"),l()()),t&2){let e,n=b(2);u(4),O((e=n.form.get("model"))!=null&&e.value?-1:4)}}function xAe(t,i){if(t&1&&(s(0,"mat-error"),d(1),l()),t&2){let e=b(2);u(),U(e.getErrorMessage("api_key"))}}function yAe(t,i){t&1&&(s(0,"span",18),d(1,"A saved API key exists for this configuration. Leave empty to keep it, or enter a new key to update."),l())}function SAe(t,i){t&1&&(s(0,"span"),d(1,"API key will be encrypted on the server. Minimum length: 10 characters"),l())}function wAe(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e.value),u(),X(" ",e.label," ")}}function MAe(t,i){if(t&1){let e=j();s(0,"div",7)(1,"div",12)(2,"h3"),d(3,"Quick Setup"),l()(),s(4,"mat-form-field",13)(5,"mat-label"),d(6,"Configuration Name"),l(),F(7,"input",14),A(8,fAe,2,1,"mat-error"),s(9,"mat-hint"),d(10,"A name to identify this configuration"),l()(),s(11,"mat-form-field",13)(12,"mat-label"),d(13,"Select LLM Provider"),l(),s(14,"mat-select",15),v("selectionChange",function(o){D(e);let r=b();return P(r.onPresetChange(o.value))}),J(15,gAe,2,2,"mat-option",16,aG),l(),s(17,"mat-hint"),d(18,"Select a preset to auto-configure"),l()(),A(19,vAe,8,1,"mat-form-field",13),A(20,CAe,7,1,"mat-form-field",13),s(21,"mat-form-field",13)(22,"mat-label"),d(23,"API Key"),l(),F(24,"input",17),A(25,xAe,2,1,"mat-error"),s(26,"mat-hint"),A(27,yAe,2,0,"span",18),A(28,SAe,2,0,"span"),l()(),s(29,"mat-form-field",13)(30,"mat-label"),d(31,"Copilot Mode"),l(),s(32,"mat-select",19),J(33,wAe,2,2,"mat-option",16,mC),l(),s(35,"mat-hint"),d(36),l()(),s(37,"div",20)(38,"mat-icon",21),d(39,"info"),l(),s(40,"p")(41,"strong"),d(42,"Teaching Assistant:"),l(),d(43," Diagnostics and suggestions only. "),s(44,"strong"),d(45,"Lab Automation Assistant:"),l(),d(46," Full configuration access. "),l()(),s(47,"div",22)(48,"mat-checkbox",23),d(49," Set as default configuration "),l()()()}if(t&2){let e=b();u(8),O(e.hasError("name")?8:-1),u(6),x("value",e.selectedPresetId),u(),ee(e.basicModePresets),u(4),O(e.selectedPreset&&e.selectedPresetId!=="custom"&&!e.useCustomModel?19:-1),u(),O(e.selectedPresetId==="custom"||e.useCustomModel?20:-1),u(4),x("placeholder",e.mode==="edit"?"Leave empty to keep existing key":""),u(),O(e.hasError("api_key")?25:-1),u(2),O(e.mode==="edit"?27:-1),u(),O(e.mode==="create"?28:-1),u(5),ee(e.copilotModes),u(3),U(e.getCopilotModeDescription())}}function kAe(t,i){if(t&1&&(s(0,"mat-error"),d(1),l()),t&2){let e=b(2);u(),U(e.getErrorMessage("name"))}}function TAe(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e.value),u(),X(" ",e.label," ")}}function EAe(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e.id),u(),X(" ",e.label," ")}}function DAe(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function PAe(t,i){if(t&1){let e=j();s(0,"mat-form-field",13)(1,"mat-label"),d(2,"Model Name"),l(),s(3,"mat-select",15),v("selectionChange",function(o){D(e);let r=b(2);return P(r.onModelChange(o.value))}),J(4,DAe,2,2,"mat-option",16,Fe),s(6,"mat-option",40),d(7,"Custom model name..."),l()()()}if(t&2){let e,n=b(2);u(3),x("value",(e=n.form.get("model"))==null?null:e.value),u(),ee(n.selectedPreset.models)}}function IAe(t,i){t&1&&(s(0,"mat-error"),d(1,"Model name is required"),l())}function AAe(t,i){if(t&1&&(s(0,"mat-form-field",13)(1,"mat-label"),d(2,"Model Name"),l(),F(3,"input",24),A(4,IAe,2,0,"mat-error"),l()),t&2){let e,n=b(2);u(4),O((e=n.form.get("model"))!=null&&e.value?-1:4)}}function OAe(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e.value),u(),X(" ",e.label," ")}}function NAe(t,i){if(t&1&&(s(0,"mat-error"),d(1),l()),t&2){let e=b(2);u(),U(e.getErrorMessage("api_key"))}}function RAe(t,i){if(t&1&&(s(0,"mat-error"),d(1),l()),t&2){let e=b(2);u(),U(e.getErrorMessage("temperature"))}}function FAe(t,i){if(t&1&&(s(0,"mat-error"),d(1),l()),t&2){let e=b(2);u(),U(e.getErrorMessage("context_limit"))}}function LAe(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e.value),u(),X(" ",e.label," ")}}function BAe(t,i){if(t&1&&(s(0,"mat-option",16),d(1),l()),t&2){let e=i.$implicit;x("value",e.value),u(),X(" ",e.label," ")}}function VAe(t,i){if(t&1){let e=j();s(0,"div",41)(1,"mat-form-field",42)(2,"mat-label"),d(3,"Key"),l(),F(4,"input",43),l(),s(5,"mat-form-field",44)(6,"mat-label"),d(7,"Value"),l(),F(8,"input",45),l(),s(9,"button",46),v("click",function(){let o=D(e).$index,r=b(3);return P(r.removeCustomField(o))}),s(10,"mat-icon"),d(11,"delete"),l()()()}if(t&2){let e=i.$index;x("formGroupName",e)}}function zAe(t,i){if(t&1&&(s(0,"div",38),J(1,VAe,12,1,"div",41,Ii),l()),t&2){let e=b(2);x("formGroup",e.form),u(),ee(e.customFieldsArray.controls)}}function jAe(t,i){t&1&&(s(0,"div",39)(1,"mat-icon",47),d(2,"info"),l(),s(3,"p"),d(4,"No custom fields"),l()())}function $Ae(t,i){if(t&1){let e=j();s(0,"div",8)(1,"div",25)(2,"h3"),d(3,"Custom Mode Configuration"),l(),s(4,"button",10),v("click",function(){D(e);let o=b();return P(o.openCustomModeHelp())}),s(5,"mat-icon",26),d(6,"help_outline"),l(),s(7,"span"),d(8,"Field Documentation"),l()()(),s(9,"div",12)(10,"h4"),d(11,"Basic Configuration"),l()(),s(12,"mat-form-field",13)(13,"mat-label"),d(14,"Configuration Name"),l(),F(15,"input",27),A(16,kAe,2,1,"mat-error"),l(),s(17,"mat-form-field",13)(18,"mat-label"),d(19,"Model Type"),l(),s(20,"mat-select",28),J(21,TAe,2,2,"mat-option",16,mC),l()(),s(23,"mat-form-field",13)(24,"mat-label"),d(25,"Select LLM Provider"),l(),s(26,"mat-select",15),v("selectionChange",function(o){D(e);let r=b();return P(r.onPresetChange(o.value))}),J(27,EAe,2,2,"mat-option",16,aG),l()(),A(29,PAe,8,1,"mat-form-field",13),A(30,AAe,5,1,"mat-form-field",13),s(31,"div",12)(32,"h4"),d(33,"API Configuration"),l()(),s(34,"mat-form-field",13)(35,"mat-label"),d(36,"Model Provider"),l(),s(37,"mat-select",29),J(38,OAe,2,2,"mat-option",16,mC),l(),s(40,"mat-error"),d(41,"Provider is required"),l()(),s(42,"mat-form-field",13)(43,"mat-label"),d(44,"Base URL"),l(),F(45,"input",30),l(),s(46,"mat-form-field",13)(47,"mat-label"),d(48,"API Key"),l(),F(49,"input",17),A(50,NAe,2,1,"mat-error"),l(),s(51,"div",12)(52,"h4"),d(53,"Model Parameters"),l()(),s(54,"div",31)(55,"mat-form-field",32)(56,"mat-label"),d(57,"Temperature"),l(),F(58,"input",33),A(59,RAe,2,1,"mat-error"),l(),s(60,"mat-form-field",32)(61,"mat-label"),d(62,"Context Limit"),l(),F(63,"input",34),A(64,FAe,2,1,"mat-error"),l()(),s(65,"div",31)(66,"mat-form-field",32)(67,"mat-label"),d(68,"Context Strategy"),l(),s(69,"mat-select",35),J(70,LAe,2,2,"mat-option",16,mC),l()(),s(72,"mat-form-field",32)(73,"mat-label"),d(74,"Copilot Mode"),l(),s(75,"mat-select",19),J(76,BAe,2,2,"mat-option",16,mC),l()()(),s(78,"div",22)(79,"mat-checkbox",23),d(80," Set as default configuration "),l()(),s(81,"div",36)(82,"div",12)(83,"h4"),d(84,"Advanced Parameters (Optional)"),l(),s(85,"button",37),v("click",function(){D(e);let o=b();return P(o.addCustomField())}),s(86,"mat-icon"),d(87,"add_circle"),l()()(),A(88,zAe,3,1,"div",38)(89,jAe,5,0,"div",39),l()()}if(t&2){let e=b();u(16),O(e.hasError("name")?16:-1),u(5),ee(e.modelTypes),u(5),x("value",e.selectedPresetId),u(),ee(e.providerPresets),u(2),O(e.selectedPreset&&e.selectedPresetId!=="custom"&&!e.useCustomModel?29:-1),u(),O(e.selectedPresetId==="custom"||e.useCustomModel?30:-1),u(8),ee(e.supportedProviders),u(11),x("placeholder",e.mode==="edit"?"Leave empty to keep existing key":""),u(),O(e.hasError("api_key")?50:-1),u(9),O(e.hasError("temperature")?59:-1),u(5),O(e.hasError("context_limit")?64:-1),u(6),ee(e.contextStrategies),u(6),ee(e.copilotModes),u(12),O(e.customFieldsArray.length>0?88:89)}}var HAe=[{id:"custom",label:"Custom (User Defined)",provider:"openai",baseUrl:"",models:[],defaultTemperature:.3},{id:"openrouter",label:"OpenRouter",provider:"openai",baseUrl:"https://openrouter.ai/api/v1",models:["deepseek/deepseek-v3.2","x-ai/grok-3","anthropic/claude-sonnet-4","z-ai/glm-4.7","openai/gpt-4o","google/gemini-2.5-flash"],defaultTemperature:.3,modelContextLimits:{"deepseek/deepseek-v3.2":128,"x-ai/grok-3":128,"anthropic/claude-sonnet-4":200,"z-ai/glm-4.7":200,"openai/gpt-4o":128,"google/gemini-2.5-flash":1e3}},{id:"deepseek",label:"DeepSeek",provider:"deepseek",baseUrl:"https://api.deepseek.com/v1",models:["deepseek-chat"],defaultTemperature:.3,modelContextLimits:{"deepseek-chat":128}}],UAe=[{value:"text",label:"Text",description:"Text generation models"},{value:"vision",label:"Vision",description:"Image understanding models"},{value:"stt",label:"STT",description:"Speech-to-Text models"},{value:"tts",label:"TTS",description:"Text-to-Speech models"},{value:"multimodal",label:"Multimodal",description:"Multiple input types"},{value:"embedding",label:"Embedding",description:"Text embedding models"},{value:"reranking",label:"Reranking",description:"Reranking models"},{value:"other",label:"Other",description:"Other model types"}],GAe=[{value:"conservative",label:"Conservative",description:"60% of context limit"},{value:"balanced",label:"Balanced",description:"75% of context limit (default)"},{value:"aggressive",label:"Aggressive",description:"85% of context limit"}],WAe=[{value:"teaching_assistant",label:"Teaching Assistant",description:"Diagnostics only"},{value:"lab_automation_assistant",label:"Lab Automation Assistant",description:"Full configuration access"}],qAe=["name","model_type","provider","model","api_key","base_url","temperature","context_limit","context_strategy","copilot_mode","is_default"],Qp=(()=>{class t{fb;dialogRef;dialog;cd;data;form;mode;existingNames;customFieldsArray;configMode="basic";providerPresets=HAe;selectedPresetId="custom";selectedPreset=null;useCustomModel=!1;supportedProviders=[{value:"openai",label:"OpenAI"},{value:"anthropic",label:"Anthropic"},{value:"google",label:"Google"},{value:"aws",label:"AWS Bedrock"},{value:"ollama",label:"Ollama"},{value:"deepseek",label:"DeepSeek"},{value:"xai",label:"xAI"}];providerDefaultUrls={openai:"https://api.openai.com/v1",anthropic:"https://api.anthropic.com",google:"https://generativelanguage.googleapis.com",deepseek:"https://api.deepseek.com/v1",xai:"https://api.x.ai"};get basicModePresets(){return this.providerPresets.filter(e=>e.id!=="custom")}modelTypes=UAe;contextStrategies=GAe;copilotModes=WAe;get isPresetSelected(){return this.selectedPresetId!=="custom"&&this.selectedPreset!==null}constructor(e,n,o,r,a){this.fb=e,this.dialogRef=n,this.dialog=o,this.cd=r,this.data=a,this.mode=a.mode,this.existingNames=a.existingNames,this.form=this.createForm()}ngOnInit(){if(this.mode==="edit"&&this.data.config){let e=this.data.config,n=this.form.get("api_key");n&&(n.clearValidators(),n.setValidators([be.minLength(10)]),n.updateValueAndValidity()),this.form.patchValue({name:e.name,model_type:e.model_type,provider:e.config.provider,model:e.config.model,api_key:"",base_url:e.config.base_url,temperature:e.config.temperature,context_limit:e.config.context_limit,context_strategy:e.config.context_strategy||"balanced",copilot_mode:e.config.copilot_mode||"teaching_assistant",is_default:e.is_default});let o=Object.entries(e.config).filter(([r])=>!qAe.includes(r)&&r!=="max_tokens");for(;this.customFieldsArray.length!==0;)this.customFieldsArray.removeAt(0);o.forEach(([r,a])=>{this.customFieldsArray.push(this.fb.group({key:[r],value:[String(a)]}))}),this.detectPresetFromConfig(),this.cd.markForCheck()}this.form.get("provider")?.valueChanges.subscribe(e=>{if(this.selectedPresetId==="custom"&&e){let n=this.providerDefaultUrls[e],o=this.form.get("base_url");n&&o&&!o.value&&o.setValue(n)}this.cd.markForCheck()})}createForm(){return this.customFieldsArray=this.fb.array([]),this.fb.group({name:["",[be.required,be.minLength(1),be.maxLength(100),be.pattern(/^[a-zA-Z0-9_-]+$/)]],model_type:["text",be.required],provider:["",be.required],model:["",be.required],api_key:["",[be.required,be.minLength(10)]],base_url:[""],temperature:[.7,[be.min(0),be.max(2)]],context_limit:[128,[be.required,be.min(1),be.max(1e4)]],context_strategy:["balanced"],copilot_mode:["teaching_assistant"],is_default:[!1],customFields:this.customFieldsArray},{validators:this.nameUniqueValidator.bind(this)})}detectPresetFromConfig(){let e=this.form.get("provider")?.value,n=this.form.get("base_url")?.value,o=this.providerPresets.find(r=>r.id!=="custom"&&r.provider===e&&r.baseUrl===n);o?(this.selectedPresetId=o.id,this.selectedPreset=o,this.setPresetMode(!0),o.models.includes(this.form.get("model")?.value)||(this.useCustomModel=!0)):(this.selectedPresetId="custom",this.selectedPreset=null,this.setPresetMode(!1))}onPresetChange(e){if(this.selectedPresetId=e,this.selectedPreset=this.providerPresets.find(n=>n.id===e)||null,this.selectedPreset&&e!=="custom"){if(this.form.get("provider")?.setValue(this.selectedPreset.provider),this.form.get("base_url")?.setValue(this.selectedPreset.baseUrl),this.selectedPreset.models.length>0){let n=this.selectedPreset.models[0];this.form.get("model")?.setValue(n),this.useCustomModel=!1,this.selectedPreset.modelContextLimits&&this.selectedPreset.modelContextLimits[n]&&this.form.get("context_limit")?.setValue(this.selectedPreset.modelContextLimits[n])}this.selectedPreset.defaultTemperature!==void 0&&this.form.get("temperature")?.setValue(this.selectedPreset.defaultTemperature),this.setPresetMode(!0)}else this.setPresetMode(!1)}setPresetMode(e){e?(this.form.get("provider")?.disable(),this.form.get("base_url")?.disable()):(this.form.get("provider")?.enable(),this.form.get("base_url")?.enable())}onModelChange(e){e==="__custom__"?(this.useCustomModel=!0,this.form.get("model")?.setValue("")):(this.useCustomModel=!1,this.form.get("model")?.setValue(e),this.selectedPreset&&this.selectedPreset.modelContextLimits&&this.selectedPreset.modelContextLimits[e]&&this.form.get("context_limit")?.setValue(this.selectedPreset.modelContextLimits[e]))}nameUniqueValidator(e){let n=e.get("name")?.value;return n&&this.existingNames.includes(n)?{duplicateName:!0}:null}getErrorMessage(e){let n=this.form.get(e);if(!n||!n.errors)return"";let o=n.errors,r=this.form.errors;return e==="name"?o.required?"Name is required":o.minlength?"Name must be at least 1 character":o.maxlength?"Name cannot exceed 100 characters":o.pattern?"Name can only contain letters, numbers, underscores and hyphens":r?.duplicateName?"Name already exists":"Invalid name format":e==="api_key"?o.required?"API Key is required":o.minlength?"API Key is too short (minimum 10 characters)":"Invalid API Key format":e==="temperature"?o.min?"Temperature cannot be less than 0":o.max?"Temperature cannot be greater than 2":"Invalid temperature value":e==="context_limit"?o.required?"Context limit is required":o.min?"Context limit must be at least 1K":o.max?"Context limit cannot exceed 10000K":"Invalid context limit":o.required?"This field is required":"Invalid format"}hasError(e){let n=this.form.get(e);return n?n.invalid&&(n.dirty||n.touched):!1}getContextStrategyDescription(){let e=this.form.get("context_strategy")?.value,n=this.contextStrategies.find(o=>o.value===e);return n?n.description:""}getCopilotModeDescription(){let e=this.form.get("copilot_mode")?.value,n=this.copilotModes.find(o=>o.value===e);return n?n.description:""}addCustomField(){this.customFieldsArray.push(this.fb.group({key:[""],value:[""]}))}removeCustomField(e){this.customFieldsArray.removeAt(e)}getCustomFieldsControls(){return this.customFieldsArray.controls}onSubmit(){if(this.form.invalid){this.form.markAllAsTouched();return}let e=this.form.getRawValue(),n={name:e.name,model_type:e.model_type,provider:e.provider,base_url:e.base_url||"",model:e.model,temperature:parseFloat(e.temperature),context_limit:parseInt(e.context_limit,10),context_strategy:e.context_strategy,copilot_mode:e.copilot_mode,is_default:e.is_default||!1};e.api_key&&e.api_key.trim()&&(n.api_key=e.api_key.trim()),this.customFieldsArray.controls.forEach(o=>{let r=o.get("key")?.value,a=o.get("value")?.value;r&&r.trim()&&a!==null&&a!==void 0&&a!==""&&(n[r.trim()]=a)}),this.dialogRef.close(n)}onCancel(){this.dialogRef.close()}openCustomModeHelp(){this.dialog.open(rG,{panelClass:["base-dialog-panel","simple-dialog-panel"]})}onModeChange(e){e==="basic"&&(this.form.get("temperature")?.value||this.form.patchValue({temperature:.7}),this.form.get("context_limit")?.value||this.form.patchValue({context_limit:128}),this.form.get("context_strategy")?.value||this.form.patchValue({context_strategy:"balanced"}),this.form.get("copilot_mode")?.value||this.form.patchValue({copilot_mode:"teaching_assistant"}),this.form.get("model_type")?.value||this.form.patchValue({model_type:"text"}))}static \u0275fac=function(n){return new(n||t)(st(zC),st(Pe),st(Je),st(K),st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-ai-profile-dialog"]],decls:26,vars:7,consts:[["mat-dialog-title",""],[1,"config-form",3,"formGroup"],[1,"mode-selector"],[3,"valueChange","change","value"],["value","basic"],["value","custom"],["mat-icon-button","","matTooltip","Basic Mode: Select preset models | Custom Mode: Full control over all parameters",1,"help-icon"],[1,"basic-mode"],[1,"custom-mode"],["align","end"],["mat-button","",3,"click"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"section-header"],["appearance","outline",1,"full-width"],["matInput","","formControlName","name","placeholder","e.g.: my-gpt4-config"],[3,"selectionChange","value"],[3,"value"],["matInput","","formControlName","api_key","type","password","autocomplete","off",3,"placeholder"],[1,"existing-key-hint"],["formControlName","copilot_mode"],[1,"mode-info"],[1,"info-icon"],[1,"checkbox-section"],["formControlName","is_default","color","primary"],["matInput","","formControlName","model","placeholder","Enter model name"],[1,"custom-mode-header"],[1,"help-icon"],["matInput","","formControlName","name","placeholder","e.g.: gpt-4o-config"],["formControlName","model_type"],["formControlName","provider","placeholder","Select provider"],["matInput","","formControlName","base_url","placeholder","Auto-filled from preset"],[1,"row"],["appearance","outline",1,"half-width"],["matInput","","formControlName","temperature","type","number","step","0.1","min","0","max","2","placeholder","0.7"],["matInput","","formControlName","context_limit","type","number","min","1","max","10000","placeholder","128"],["formControlName","context_strategy"],[1,"custom-fields-section"],["mat-icon-button","",3,"click"],["formArrayName","customFields",1,"custom-fields-list",3,"formGroup"],[1,"empty-custom-fields"],["value","__custom__"],[1,"custom-field-row",3,"formGroupName"],["appearance","outline",1,"field-key"],["matInput","","formControlName","key"],["appearance","outline",1,"field-value"],["matInput","","formControlName","value"],["mat-icon-button","","color","warn",1,"delete-btn",3,"click"],[1,"empty-icon"]],template:function(n,o){n&1&&(s(0,"h2",0),d(1),l(),s(2,"mat-dialog-content")(3,"form",1)(4,"div",2)(5,"mat-button-toggle-group",3),Dh("valueChange",function(a){return Eh(o.configMode,a)||(o.configMode=a),a}),v("change",function(a){return o.onModeChange(a.value)}),s(6,"mat-button-toggle",4)(7,"mat-icon"),d(8,"stars"),l(),s(9,"span"),d(10,"Basic Mode"),l()(),s(11,"mat-button-toggle",5)(12,"mat-icon"),d(13,"tune"),l(),s(14,"span"),d(15,"Custom Mode"),l()()(),s(16,"button",6)(17,"mat-icon"),d(18,"help_outline"),l()()(),A(19,MAe,50,9,"div",7),A(20,$Ae,90,9,"div",8),l()(),s(21,"mat-dialog-actions",9)(22,"button",10),v("click",function(){return o.onCancel()}),d(23,"Cancel"),l(),s(24,"button",11),v("click",function(){return o.onSubmit()}),d(25),l()()),n&2&&(u(),X(" ",o.mode==="create"?"Create LLM Model Configuration":"Edit LLM Model Configuration",`
|
||
`),u(2),x("formGroup",o.form),u(2),Th("value",o.configMode),u(14),O(o.configMode==="basic"?19:-1),u(),O(o.configMode==="custom"?20:-1),u(4),x("disabled",o.form.invalid),u(),X(" ",o.mode==="create"?"Create":"Save"," "))},dependencies:[Z,ct,Ue,vt,xi,mt,He,Ro,Sc,pt,bt,dR,mR,Ce,Ve,Be,Wt,ET,o5,TT,te,se,Me,ke,lt,qC,Ni,we,Te,Mt,At,St,Jo,Ot,Ht,$,le,ze,Gt,Kt,Dt],styles:['.config-form[_ngcontent-%COMP%] .full-width[_ngcontent-%COMP%]{width:100%;margin-bottom:12px}.config-form[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%]{margin-top:16px;margin-bottom:16px}.config-form[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:18px;font-weight:600;color:var(--mat-sys-primary)}.config-form[_ngcontent-%COMP%] .help-icon[_ngcontent-%COMP%]{display:inline-flex;vertical-align:middle;width:18px;height:18px;margin-left:4px}.config-form[_ngcontent-%COMP%] .help-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px;color:var(--mat-sys-on-surface-variant)}.config-form[_ngcontent-%COMP%] .help-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.config-form[_ngcontent-%COMP%] .row[_ngcontent-%COMP%]{display:flex;gap:12px;margin-bottom:12px}.config-form[_ngcontent-%COMP%] .row[_ngcontent-%COMP%] .half-width[_ngcontent-%COMP%]{flex:1;min-width:0}.config-form[_ngcontent-%COMP%] .checkbox-section[_ngcontent-%COMP%]{margin:16px 0}.config-form[_ngcontent-%COMP%] .checkbox-section[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{display:block}.config-form[_ngcontent-%COMP%] .option-hint[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-size:14px}.config-form[_ngcontent-%COMP%] .existing-key-hint[_ngcontent-%COMP%]{color:var(--mat-sys-primary);font-size:12px}.config-form[_ngcontent-%COMP%] .warning-hint[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-size:14px}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%]{margin-top:16px;padding-top:16px;border-top:1px solid var(--mat-sys-outline-variant)}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:500;color:var(--mat-sys-on-surface)}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:40px;height:40px;padding:8px;transition:all .2s cubic-bezier(.4,0,.2,1);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;position:relative}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:before{content:"";position:absolute;width:100%;height:100%;border-radius:50%;background-color:currentColor;opacity:0;transition:opacity .2s cubic-bezier(.4,0,.2,1);transform:scale(.75)}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:24px;width:24px;height:24px;transition:transform .2s cubic-bezier(.4,0,.2,1);position:relative;z-index:1}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover:before{opacity:1;background-color:var(--mat-sys-primary-container)}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);transform:scale(1.1)}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .section-description[_ngcontent-%COMP%]{margin-bottom:16px}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .section-description[_ngcontent-%COMP%] .reserved-field-hint[_ngcontent-%COMP%]{margin:0;font-size:14px;color:var(--mat-sys-on-surface-variant);font-style:italic}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .custom-fields-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .custom-fields-list[_ngcontent-%COMP%] .custom-field-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:8px}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .custom-fields-list[_ngcontent-%COMP%] .custom-field-row[_ngcontent-%COMP%] .field-key[_ngcontent-%COMP%], .config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .custom-fields-list[_ngcontent-%COMP%] .custom-field-row[_ngcontent-%COMP%] .field-value[_ngcontent-%COMP%]{flex:1;min-width:150px}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .custom-fields-list[_ngcontent-%COMP%] .custom-field-row[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-top:12px;width:40px;height:40px;padding:8px;transition:all .2s cubic-bezier(.4,0,.2,1);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;position:relative}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .custom-fields-list[_ngcontent-%COMP%] .custom-field-row[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:before{content:"";position:absolute;width:100%;height:100%;border-radius:50%;background-color:currentColor;opacity:0;transition:opacity .2s cubic-bezier(.4,0,.2,1);transform:scale(.75)}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .custom-fields-list[_ngcontent-%COMP%] .custom-field-row[_ngcontent-%COMP%] button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:24px;width:24px;height:24px;transition:transform .2s cubic-bezier(.4,0,.2,1);position:relative;z-index:1}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .custom-fields-list[_ngcontent-%COMP%] .custom-field-row[_ngcontent-%COMP%] button.delete-btn[_ngcontent-%COMP%]:hover:before{opacity:1;background-color:var(--mat-sys-error-container)}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .custom-fields-list[_ngcontent-%COMP%] .custom-field-row[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{transform:scale(1.1)}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .empty-custom-fields[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;color:var(--mat-sys-on-surface-variant);text-align:center}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .empty-custom-fields[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%]{font-size:40px;margin-bottom:8px;opacity:.5}.config-form[_ngcontent-%COMP%] .custom-fields-section[_ngcontent-%COMP%] .empty-custom-fields[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:14px}.config-form[_ngcontent-%COMP%] .mode-selector[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;margin-bottom:24px;padding:8px 0}.config-form[_ngcontent-%COMP%] .mode-selector[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{flex:1;display:flex}.config-form[_ngcontent-%COMP%] .mode-selector[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] .mat-button-toggle[_ngcontent-%COMP%]{flex:1}.config-form[_ngcontent-%COMP%] .mode-selector[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] .mat-button-toggle[_ngcontent-%COMP%] .mat-button-toggle-button[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 16px}.config-form[_ngcontent-%COMP%] .mode-selector[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] .mat-button-toggle[_ngcontent-%COMP%] .mat-button-toggle-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;height:20px;width:20px}.config-form[_ngcontent-%COMP%] .mode-selector[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] .mat-button-toggle[_ngcontent-%COMP%] .mat-button-toggle-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:14px;font-weight:500}.config-form[_ngcontent-%COMP%] .mode-selector[_ngcontent-%COMP%] .help-icon[_ngcontent-%COMP%]{flex-shrink:0}.config-form[_ngcontent-%COMP%] .mode-selector[_ngcontent-%COMP%] .help-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;height:20px;width:20px;color:var(--mat-sys-on-surface-variant)}.config-form[_ngcontent-%COMP%] .mode-selector[_ngcontent-%COMP%] .help-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.config-form[_ngcontent-%COMP%] .basic-mode[_ngcontent-%COMP%] .mode-info[_ngcontent-%COMP%]{display:flex;gap:12px;padding:12px;margin-top:16px;background:var(--mat-sys-surface-container);border:1px solid var(--mat-sys-outline-variant);border-radius:8px}.config-form[_ngcontent-%COMP%] .basic-mode[_ngcontent-%COMP%] .mode-info[_ngcontent-%COMP%] .info-icon[_ngcontent-%COMP%]{flex-shrink:0;color:var(--mat-sys-on-surface-variant);font-size:20px;height:20px;width:20px;margin-top:2px}.config-form[_ngcontent-%COMP%] .basic-mode[_ngcontent-%COMP%] .mode-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:14px;color:var(--mat-sys-on-surface-variant);line-height:1.5}.config-form[_ngcontent-%COMP%] .basic-mode[_ngcontent-%COMP%] .mode-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-weight:500;color:var(--mat-sys-on-surface)}.config-form[_ngcontent-%COMP%] .custom-mode[_ngcontent-%COMP%] .custom-mode-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:16px;background:var(--mat-sys-surface-container);border-radius:8px}.config-form[_ngcontent-%COMP%] .custom-mode[_ngcontent-%COMP%] .custom-mode-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:18px;font-weight:600;color:var(--mat-sys-on-surface)}.config-form[_ngcontent-%COMP%] .custom-mode[_ngcontent-%COMP%] .custom-mode-header[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.config-form[_ngcontent-%COMP%] .custom-mode[_ngcontent-%COMP%] .custom-mode-header[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .help-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px}.config-form[_ngcontent-%COMP%] .custom-mode[_ngcontent-%COMP%] .custom-mode-header[_ngcontent-%COMP%] button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:14px;font-weight:500}'],changeDetection:0})}return t})();var XAe=(t,i)=>i.name;function QAe(t,i){if(t&1&&(s(0,"p"),d(1),l()),t&2){let e=b();u(),U(e.data.message)}}function YAe(t,i){if(t&1&&(s(0,"li"),d(1),l()),t&2){let e=i.$implicit;u(),Hi("",e.name,"",e.description?" ("+e.description+")":"")}}function KAe(t,i){if(t&1&&(s(0,"ul"),J(1,YAe,2,2,"li",null,XAe),l()),t&2){let e=b();u(),ee(e.data.items)}}var T_=(()=>{class t{dialogRef=f(Pe);data=f(Nt);onConfirm(){this.dialogRef.close(!0)}onCancel(){this.dialogRef.close(!1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-confirm-dialog"]],decls:10,vars:5,consts:[["mat-dialog-title",""],["align","end"],["mat-button","",3,"click"],["mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h2",0),d(1),l(),s(2,"mat-dialog-content"),A(3,QAe,2,1,"p"),A(4,KAe,3,0,"ul"),l(),s(5,"mat-dialog-actions",1)(6,"button",2),v("click",function(){return o.onCancel()}),d(7),l(),s(8,"button",3),v("click",function(){return o.onConfirm()}),d(9),l()()),n&2&&(u(),U(o.data.title),u(2),O(o.data.message?3:-1),u(),O(o.data.items!=null&&o.data.items.length?4:-1),u(3),X(" ",o.data.cancelText||"Cancel"," "),u(2),X(" ",o.data.confirmText||"Confirm"," "))},dependencies:[Ce,Ve,Be,Wt,$,le],encapsulation:2,changeDetection:0})}return t})();function ZAe(t,i){t&1&&(s(0,"div",7),F(1,"mat-spinner",9),s(2,"p"),d(3,"Loading..."),l()())}function JAe(t,i){t&1&&(s(0,"th",23),d(1,"Name"),l())}function eOe(t,i){t&1&&(s(0,"mat-icon",25),d(1,"group"),l())}function tOe(t,i){if(t&1&&(s(0,"span",27),d(1),l()),t&2){let e=b().$implicit;u(),U(e.group_name)}}function nOe(t,i){if(t&1&&(s(0,"td",24),A(1,eOe,2,0,"mat-icon",25),s(2,"span",26),d(3),l(),A(4,tOe,2,1,"span",27),l()),t&2){let e=i.$implicit;u(),O(e.source==="group"?1:-1),u(2),U(e.name),u(),O(e.source==="group"?4:-1)}}function iOe(t,i){t&1&&(s(0,"th",23),d(1,"API Domain"),l())}function oOe(t,i){if(t&1&&(s(0,"td",24)(1,"span",28),d(2),l()()),t&2){let e=i.$implicit,n=b(3);u(2),U(n.getProviderDisplay(e))}}function rOe(t,i){t&1&&(s(0,"th",23),d(1,"Model"),l())}function aOe(t,i){if(t&1&&(s(0,"td",24)(1,"span",29),d(2),l()()),t&2){let e=i.$implicit;u(2),U(e.config.model)}}function sOe(t,i){t&1&&(s(0,"th",23),d(1,"Context Limit"),l())}function lOe(t,i){if(t&1&&(s(0,"span",31),d(1),l()),t&2){let e=b().$implicit;u(),X(" ",e.config.context_strategy," ")}}function cOe(t,i){if(t&1&&(s(0,"td",24)(1,"span",30),d(2),l(),A(3,lOe,2,1,"span",31),l()),t&2){let e=i.$implicit;u(2),X("",e.config.context_limit,"K"),u(),O(e.config.context_strategy?3:-1)}}function dOe(t,i){t&1&&(s(0,"th",23),d(1,"Actions"),l())}function mOe(t,i){if(t&1){let e=j();s(0,"td",24)(1,"div",32)(2,"button",33),on(3,"async"),v("click",function(){let o=D(e).$implicit,r=b(3);return P(r.toggleDefaultConfig(o))}),s(4,"mat-icon"),d(5,"check_circle"),l()(),s(6,"button",33),v("click",function(){let o=D(e).$implicit,r=b(3);return P(r.openEditDialog(o))}),s(7,"mat-icon"),d(8,"edit"),l()(),s(9,"button",34),v("click",function(){let o=D(e).$implicit,r=b(3);return P(r.deleteConfig(o))}),s(10,"mat-icon"),d(11,"delete"),l()()()()}if(t&2){let e,n=i.$implicit,o=b(3);u(2),je("active-btn",o.isDefault(n)),x("disabled",((e=oi(3,5,o.settingDefault$))==null?null:e.has(n.config_id))||!o.isEditable(n)),u(4),x("disabled",!o.isEditable(n)),u(3),x("disabled",!o.isEditable(n))}}function pOe(t,i){t&1&&F(0,"tr",35)}function uOe(t,i){if(t&1&&F(0,"tr",36),t&2){let e=i.$implicit,n=b(3);je("active-row",n.isDefault(e))("inherited-row",e.source==="group")}}function hOe(t,i){if(t&1&&(s(0,"div",11)(1,"table",13),qe(2,14),Ae(3,JAe,2,0,"th",15)(4,nOe,5,3,"td",16),Xe(),qe(5,17),Ae(6,iOe,2,0,"th",15)(7,oOe,3,1,"td",16),Xe(),qe(8,18),Ae(9,rOe,2,0,"th",15)(10,aOe,3,1,"td",16),Xe(),qe(11,19),Ae(12,sOe,2,0,"th",15)(13,cOe,4,2,"td",16),Xe(),qe(14,20),Ae(15,dOe,2,0,"th",15)(16,mOe,12,7,"td",16),Xe(),Ae(17,pOe,1,0,"tr",21)(18,uOe,1,4,"tr",22),l()()),t&2){let e=b(2);u(),x("dataSource",e.configs()),u(16),x("matHeaderRowDef",e.displayedColumns),u(),x("matRowDefColumns",e.displayedColumns)}}function fOe(t,i){t&1&&(s(0,"div",12)(1,"mat-icon",37),d(2,"folder_open"),l(),s(3,"p"),d(4,"No configurations yet"),l(),s(5,"p",38),d(6,'Click "New Configuration" above to create your first LLM model configuration'),l()())}function gOe(t,i){if(t&1&&(s(0,"div",8)(1,"mat-card",10)(2,"mat-card-header")(3,"mat-card-title"),d(4,"All Configurations (Own + Inherited)"),l()(),s(5,"mat-card-content"),A(6,hOe,19,3,"div",11),A(7,fOe,7,0,"div",12),l()()()),t&2){let e=b();u(6),O(e.configs().length>0?6:-1),u(),O(e.configs().length===0?7:-1)}}var DT=(()=>{class t{destroy$=new Le;controller=oe(void 0);user=oe(void 0);loading$=new qt(!1);settingDefault$=new qt(new Set);error$=new qt(null);configs$=new qt([]);defaultConfig$=new qt(null);configs=me([]);defaultConfig=me(null);settingDefaultConfigs=new Set;displayedColumns=["name","provider","model","context_limit","actions"];aiProfilesService=f(__);dialog=f(Je);snackBar=f(Qr);constructor(){}ngOnInit(){if(!this.controller()||!this.user()){console.error("AiProfileTabComponent: controller or user inputs are not set");return}this.loadConfigs(),rr([this.configs$,this.defaultConfig$]).pipe(rt(this.destroy$)).subscribe(([e,n])=>{this.configs.set(e),this.defaultConfig.set(n)}),this.error$.pipe(rt(this.destroy$),Pn(e=>e!==null)).subscribe(e=>{this.showError(e)})}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}loadConfigs(){this.loading$.next(!0),this.error$.next(null),this.aiProfilesService.getConfigs(this.controller(),this.user().user_id).pipe(rt(this.destroy$)).subscribe({next:e=>{this.configs$.next(e.configs),this.defaultConfig$.next(e.default_config),this.loading$.next(!1)},error:e=>{this.handleError(e,"Failed to load configurations")}})}isEditable(e){return e.source==="user"}getProviderDisplay(e){let n=e.config.base_url;if(!n)return e.config.provider;try{return new URL(n).hostname.replace(/^api\./,"")}catch{return e.config.provider}}isDefault(e){return this.defaultConfig()?.config_id===e.config_id}getSourceDisplay(e){return e.source==="group"?`Group: ${e.group_name||"Unknown"}`:"User"}openCreateDialog(){this.dialog.open(Qp,{panelClass:["base-dialog-panel","ai-profile-dialog-panel"],data:{mode:"create",config:null,existingNames:this.configs().filter(n=>n.source==="user").map(n=>n.name)}}).afterClosed().pipe(rt(this.destroy$)).subscribe(n=>{n&&this.createConfig(n)})}openEditDialog(e){this.dialog.open(Qp,{panelClass:["base-dialog-panel","ai-profile-dialog-panel"],data:{mode:"edit",config:H({},e),existingNames:this.configs().filter(o=>o.source==="user"&&o.config_id!==e.config_id).map(o=>o.name)}}).afterClosed().pipe(rt(this.destroy$)).subscribe(o=>{o&&this.updateConfig(e.config_id,o)})}createConfig(e){this.loading$.next(!0),this.aiProfilesService.createConfig(this.controller(),this.user().user_id,e).pipe(rt(this.destroy$)).subscribe({next:()=>{this.loadConfigs(),this.showSuccess("Configuration created successfully")},error:n=>{this.handleError(n,"Failed to create configuration")}})}updateConfig(e,n){this.loading$.next(!0),this.aiProfilesService.updateConfig(this.controller(),this.user().user_id,e,n).pipe(rt(this.destroy$)).subscribe({next:()=>{this.loadConfigs(),this.showSuccess("Configuration updated successfully")},error:o=>{o.status===409?this.handleConflict(o):this.handleError(o,"Failed to update configuration")}})}deleteConfig(e){this.dialog.open(T_,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:{title:"Delete Configuration",message:`Are you sure you want to delete configuration "${e.name}"? This action cannot be undone.`,confirmText:"Delete",cancelText:"Cancel"}}).afterClosed().pipe(rt(this.destroy$)).subscribe(o=>{o&&(this.loading$.next(!0),this.aiProfilesService.deleteConfig(this.controller(),this.user().user_id,e.config_id).pipe(rt(this.destroy$)).subscribe({next:()=>{this.loadConfigs(),this.showSuccess("Configuration deleted successfully")},error:r=>{this.handleError(r,"Failed to delete configuration")}}))})}toggleDefaultConfig(e){let n=e.config_id;if(this.settingDefaultConfigs.has(n))return;let o=e.is_default,r=this.defaultConfig(),a=[...this.configs()],c=a.map(m=>tt(H({},m),{is_default:o?!1:m.config_id===n}));this.configs.set(c),this.defaultConfig.set(o?null:e),this.settingDefaultConfigs.add(n),this.settingDefault$.next(new Set(this.settingDefaultConfigs)),o?this.aiProfilesService.unsetDefaultConfig(this.controller(),this.user().user_id,n).pipe(rt(this.destroy$)).subscribe({next:()=>{this.settingDefaultConfigs.delete(n),this.settingDefault$.next(new Set(this.settingDefaultConfigs)),this.showSuccess("Default configuration removed"),this.loadConfigsWithoutLoading()},error:m=>{this.configs.set(a),this.defaultConfig.set(r),this.settingDefaultConfigs.delete(n),this.settingDefault$.next(new Set(this.settingDefaultConfigs)),m.status===409?this.handleConflict(m):this.handleError(m,"Failed to remove default configuration")}}):this.aiProfilesService.setDefaultConfig(this.controller(),this.user().user_id,n).pipe(rt(this.destroy$)).subscribe({next:()=>{this.settingDefaultConfigs.delete(n),this.settingDefault$.next(new Set(this.settingDefaultConfigs)),this.showSuccess("Default configuration set successfully"),this.loadConfigsWithoutLoading()},error:m=>{this.configs.set(a),this.defaultConfig.set(r),this.settingDefaultConfigs.delete(n),this.settingDefault$.next(new Set(this.settingDefaultConfigs)),m.status===409?this.handleConflict(m):this.handleError(m,"Failed to set default configuration")}})}loadConfigsWithoutLoading(){this.error$.next(null),this.aiProfilesService.getConfigs(this.controller(),this.user().user_id).pipe(rt(this.destroy$)).subscribe({next:e=>{this.configs$.next(e.configs),this.defaultConfig$.next(e.default_config)},error:e=>{this.handleError(e,"Failed to refresh configurations")}})}handleConflict(e){this.loadConfigs(),this.showWarning("Data has been modified by another user, auto-refreshed")}handleError(e,n){console.error(`${n}:`,e);let o=n;e?.error?.detail?o=e.error.detail:e?.message&&(o=e.message),this.error$.next(o),this.loading$.next(!1),this.showError(o)}showSuccess(e){this.snackBar.open(e,"Close",{duration:3e3,panelClass:["success-snackbar"]})}showWarning(e){this.snackBar.open(e,"Close",{duration:5e3,panelClass:["warning-snackbar"]})}showError(e){this.snackBar.open(e,"Close",{duration:5e3,panelClass:["error-snackbar"]})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-ai-profile-tab"]],inputs:{controller:[1,"controller"],user:[1,"user"]},decls:21,vars:9,consts:[[1,"ai-profile-container"],[1,"toolbar"],[1,"toolbar-info"],[1,"subtitle"],[1,"toolbar-actions"],["mat-button","",3,"click","disabled"],["mat-raised-button","","color","primary",3,"click"],[1,"loading-container"],[1,"content-area"],["diameter","40"],[1,"list-card"],[1,"table-container"],[1,"empty-state"],["mat-table","",1,"profiles-table",3,"dataSource"],["matColumnDef","name"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","provider"],["matColumnDef","model"],["matColumnDef","context_limit"],["matColumnDef","actions"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",3,"active-row","inherited-row",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell",""],[1,"group-icon"],[1,"profile-name"],[1,"group-badge"],[1,"provider-badge"],[1,"model-name"],[1,"context-limit-value"],[1,"context-strategy-badge"],[1,"action-buttons"],["mat-icon-button","",3,"click","disabled"],["mat-icon-button","","color","warn",1,"delete-btn",3,"click","disabled"],["mat-header-row",""],["mat-row",""],[1,"empty-icon"],[1,"empty-hint"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3"),d(4,"LLM Model Configurations"),l(),s(5,"p",3),d(6," Manage LLM model configurations. Your configs and configs inherited from your groups are shown below. "),l()(),s(7,"div",4)(8,"button",5),on(9,"async"),v("click",function(){return o.loadConfigs()}),s(10,"mat-icon"),d(11,"refresh"),l(),d(12," Refresh "),l(),s(13,"button",6),v("click",function(){return o.openCreateDialog()}),s(14,"mat-icon"),d(15,"add"),l(),d(16," New Configuration "),l()()(),A(17,ZAe,4,0,"div",7),on(18,"async"),A(19,gOe,8,2,"div",8),on(20,"async"),l()),n&2&&(u(8),x("disabled",oi(9,3,o.loading$)),u(9),O(oi(18,5,o.loading$)?17:-1),u(2),O(oi(20,7,o.loading$)?-1:19))},dependencies:[Z,Ce,Zc,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,$,le,ze,te,se,Me,we,Mt,Ot,Dt,Tn,Sl,ed,Jc,Si,Xo,Jr],styles:['.ai-profile-container[_ngcontent-%COMP%]{padding:20px}.ai-profile-container[_ngcontent-%COMP%] .toolbar[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.ai-profile-container[_ngcontent-%COMP%] .toolbar[_ngcontent-%COMP%] .toolbar-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 4px;font-size:18px;font-weight:500}.ai-profile-container[_ngcontent-%COMP%] .toolbar[_ngcontent-%COMP%] .toolbar-info[_ngcontent-%COMP%] .subtitle[_ngcontent-%COMP%]{margin:0;font-size:13px}.ai-profile-container[_ngcontent-%COMP%] .toolbar[_ngcontent-%COMP%] .toolbar-actions[_ngcontent-%COMP%]{display:flex;gap:8px}.ai-profile-container[_ngcontent-%COMP%] .toolbar[_ngcontent-%COMP%] .toolbar-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.ai-profile-container[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px}.ai-profile-container[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%]{margin-bottom:16px}.ai-profile-container[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-header[_ngcontent-%COMP%] mat-card-title[_ngcontent-%COMP%]{font-size:16px}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%]{padding:0}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%]{overflow-x:auto}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%]{width:100%}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-header-row[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{font-weight:500}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:1px solid var(--mat-sys-outline-variant)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 8%,transparent)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-row.inherited-row[_ngcontent-%COMP%]{background-color:var(--mat-sys-secondary-container)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-row.inherited-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:1px solid var(--mat-sys-secondary)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-row.inherited-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-secondary) 12%,var(--mat-sys-secondary-container))}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-row.active-row[_ngcontent-%COMP%]{background-color:var(--mat-sys-tertiary-container)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-row.active-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:1px solid var(--mat-sys-tertiary)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-row.active-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-tertiary) 12%,var(--mat-sys-tertiary-container))}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .group-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px;margin-right:6px;color:var(--mat-sys-secondary);vertical-align:middle}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .group-badge[_ngcontent-%COMP%]{display:inline-block;margin-left:8px;padding:2px 6px;background-color:var(--mat-sys-secondary-container);color:var(--mat-sys-on-secondary-container);border-radius:4px;font-size:11px;font-weight:500;vertical-align:middle}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .name-cell[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{font-weight:500}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .provider-badge[_ngcontent-%COMP%]{padding:4px 8px;background:var(--mat-sys-primary-container);border-radius:4px;font-size:12px;color:var(--mat-sys-on-primary-container)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .model-name[_ngcontent-%COMP%]{font-family:monospace;font-size:13px}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .temperature-value[_ngcontent-%COMP%]{font-family:monospace;font-size:13px}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%]{display:flex;gap:4px}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:32px;height:32px;padding:6px;transition:all .2s cubic-bezier(.4,0,.2,1);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;position:relative}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:before{content:"";position:absolute;width:100%;height:100%;border-radius:50%;background-color:currentColor;opacity:0;transition:opacity .2s cubic-bezier(.4,0,.2,1);transform:scale(.75)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;transition:transform .2s cubic-bezier(.4,0,.2,1);position:relative;z-index:1}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button.active-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-tertiary)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button.active-btn[_ngcontent-%COMP%]:hover:before{opacity:1;background-color:var(--mat-sys-tertiary-container)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button.active-btn[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{transform:scale(1.35)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:not(.active-btn):not(.delete-btn):hover:before{opacity:1;background-color:var(--mat-sys-primary-container)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:not(.active-btn):not(.delete-btn):hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);transform:scale(1.35)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button.delete-btn[_ngcontent-%COMP%]:hover:before{opacity:1;background-color:var(--mat-sys-error-container)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button.delete-btn[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{transform:scale(1.35)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%]{font-size:64px;margin-bottom:16px;opacity:.3}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:4px 0}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] p.empty-hint[_ngcontent-%COMP%]{font-size:13px}'],changeDetection:0})}return t})();var sG=(()=>{class t{dialogRef=f(Pe);data=f(Nt);close(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-ai-profile-dialog"]],decls:7,vars:3,consts:[["mat-dialog-title",""],[3,"controller","user"],["mat-button","",3,"click"]],template:function(n,o){n&1&&(s(0,"h2",0),d(1),l(),s(2,"mat-dialog-content"),F(3,"app-ai-profile-tab",1),l(),s(4,"mat-dialog-actions")(5,"button",2),v("click",function(){return o.close()}),d(6,"Close"),l()()),n&2&&(u(),X("AI Profiles - ",o.data.user.username),u(2),x("controller",o.data.controller)("user",o.data.user))},dependencies:[Z,Ce,Ve,Be,Wt,$,le,te,DT],styles:[".ai-profile-dialog__content[_ngcontent-%COMP%]{padding:16px 0}"],changeDetection:0})}return t})();var _Oe=["usersPaginator"],vOe=["usersSort"],bOe=()=>[5,10,20];function COe(t,i){if(t&1){let e=j();s(0,"mat-header-cell",32)(1,"mat-checkbox",33),v("change",function(o){D(e);let r=b(2);return P(o?r.masterToggle():null)}),l()()}if(t&2){let e=b(2);u(),x("checked",e.selection.hasValue()&&e.isAllSelected())("indeterminate",e.selection.hasValue()&&!e.isAllSelected())}}function xOe(t,i){if(t&1){let e=j();s(0,"mat-cell",32)(1,"mat-checkbox",34),v("click",function(o){return o.stopPropagation()})("change",function(o){let r=D(e).$implicit,a=b(2);return P(o?a.selection.toggle(r):null)}),l()()}if(t&2){let e=i.$implicit,n=b(2);u(),x("checked",n.selection.isSelected(e))}}function yOe(t,i){t&1&&(s(0,"mat-header-cell",35),d(1,"Username"),l())}function SOe(t,i){if(t&1){let e=j();s(0,"mat-cell")(1,"span",36),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.openUserDetailDialog(o))}),d(2),l()()}if(t&2){let e=i.$implicit;u(2),U(e.username)}}function wOe(t,i){t&1&&(s(0,"mat-header-cell",35),d(1,"Full Name"),l())}function MOe(t,i){if(t&1&&(s(0,"mat-cell")(1,"span",37),d(2),l()()),t&2){let e=i.$implicit;u(2),U(e.full_name)}}function kOe(t,i){t&1&&(s(0,"mat-header-cell",35),d(1,"Mail"),l())}function TOe(t,i){if(t&1&&(s(0,"mat-cell")(1,"span",37),d(2),l()()),t&2){let e=i.$implicit;u(2),U(e.email)}}function EOe(t,i){t&1&&(s(0,"mat-header-cell",38),d(1,"Active"),l())}function DOe(t,i){if(t&1&&(s(0,"mat-cell",39),d(1),l()),t&2){let e=i.$implicit;u(),U(e.is_active)}}function POe(t,i){t&1&&(s(0,"mat-header-cell",35),d(1,"Last Login"),l())}function IOe(t,i){if(t&1&&(s(0,"mat-cell")(1,"span",37),d(2),l()()),t&2){let e=i.$implicit;u(2),U(e.last_login)}}function AOe(t,i){t&1&&(s(0,"mat-header-cell",35),d(1,"Last Update"),l())}function OOe(t,i){if(t&1&&(s(0,"mat-cell")(1,"span",37),d(2),l()()),t&2){let e=i.$implicit;u(2),U(e.updated_at?e.updated_at:e.created_at)}}function NOe(t,i){t&1&&(s(0,"mat-header-cell"),d(1,"Actions"),l())}function ROe(t,i){if(t&1){let e=j();s(0,"mat-cell",40)(1,"button",41),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.openUserDetailDialog(o))}),s(2,"mat-icon"),d(3,"edit"),l()(),s(4,"button",42),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.openAiProfileDialog(o))}),s(5,"mat-icon"),d(6,"psychology"),l()()()}}function FOe(t,i){t&1&&F(0,"mat-header-row")}function LOe(t,i){t&1&&F(0,"mat-row")}function BOe(t,i){if(t&1){let e=j();s(0,"header",3)(1,"h1",4),d(2,"Users"),l(),s(3,"div",5)(4,"button",6),v("click",function(){D(e);let o=b();return P(o.deleteMultiple())}),d(5," Delete Users "),l(),s(6,"button",7),v("click",function(){D(e);let o=b();return P(o.addUser())}),d(7,"Add User"),l()()(),s(8,"form",8)(9,"mat-form-field",9)(10,"input",10),v("input",function(o){D(e);let r=b();return P(r.searchText.set(o.target.value))}),l()()(),s(11,"div",11)(12,"mat-table",12,0),on(14,"userFilter"),qe(15,13),Ae(16,COe,2,2,"mat-header-cell",14)(17,xOe,2,1,"mat-cell",15),Xe(),qe(18,16),Ae(19,yOe,2,0,"mat-header-cell",17)(20,SOe,3,1,"mat-cell",18),Xe(),qe(21,19),Ae(22,wOe,2,0,"mat-header-cell",17)(23,MOe,3,1,"mat-cell",18),Xe(),qe(24,20),Ae(25,kOe,2,0,"mat-header-cell",17)(26,TOe,3,1,"mat-cell",18),Xe(),qe(27,21),Ae(28,EOe,2,0,"mat-header-cell",22)(29,DOe,2,1,"mat-cell",23),Xe(),qe(30,24),Ae(31,POe,2,0,"mat-header-cell",17)(32,IOe,3,1,"mat-cell",18),Xe(),qe(33,25),Ae(34,AOe,2,0,"mat-header-cell",17)(35,OOe,3,1,"mat-cell",18),Xe(),qe(36,26),Ae(37,NOe,2,0,"mat-header-cell",27)(38,ROe,7,0,"mat-cell",28),Xe(),Ae(39,FOe,1,0,"mat-header-row",29)(40,LOe,1,0,"mat-row",30),l(),F(41,"mat-paginator",31,1),l()}if(t&2){let e=b();u(4),x("disabled",e.selection.selected.length===0),u(6),x("value",e.searchText()),u(2),x("dataSource",$r(14,6,e.dataSource,e.searchText())),u(27),x("matHeaderRowDef",e.displayedColumns),u(),x("matRowDefColumns",e.displayedColumns),u(),x("pageSizeOptions",Jt(9,bOe))}}function VOe(t,i){t&1&&(s(0,"div",2),F(1,"mat-spinner",43),l())}var PT=(()=>{class t{route=f(Ye);userService=f(pa);progressService=f(zo);controllerService=f(We);dialog=f(Je);toasterService=f(fe);location=f(yc);cd=f(K);controller;dataSource=new Nr;displayedColumns=["select","username","full_name","email","is_active","last_login","updated_at","actions"];selection=new ha(!0,[]);searchText=ae("");usersPaginator;usersSort;isReady=!1;ngOnInit(){let e=this.route.parent.snapshot.paramMap.get("controller_id");this.controllerService.get(+e).then(n=>{this.controller=n,this.refresh()})}ngAfterViewInit(){this.usersPaginator.changes.subscribe(e=>{this.dataSource.paginator=e.first}),this.usersSort.changes.subscribe(e=>{this.dataSource.sort=e.first}),this.dataSource.sortingDataAccessor=(e,n)=>{switch(n){case"username":case"full_name":case"email":return e[n]?e[n].toLowerCase():"";default:return e[n]}}}refresh(){this.userService.list(this.controller).subscribe(e=>{this.isReady=!0,this.dataSource.data=e,this.cd.markForCheck()},e=>{this.progressService.setError(e),this.toasterService.error("Cannot open the user management page"),this.location.back()})}addUser(){let e=this.dialog.open(wT,{panelClass:["base-dialog-panel","add-user-dialog-panel"],autoFocus:!1,disableClose:!0}),n=e.componentInstance;n.controller=this.controller,e.afterClosed().subscribe(()=>this.refresh())}onDelete(e){this.dialog.open(dC,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:{users:[e]}}).afterClosed().subscribe(n=>{n&&this.userService.delete(this.controller,e.user_id).subscribe(()=>{this.refresh()},o=>{let r=o?.error?.message||`An error occurred while trying to delete user ${e.username}`;this.toasterService.error(r)})})}isAllSelected(){let e=this.selection.selected.length,n=this.dataSource.data.length;return e===n}masterToggle(){this.isAllSelected()?this.selection.clear():this.dataSource.data.forEach(e=>this.selection.select(e))}deleteMultiple(){this.dialog.open(dC,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:{users:this.selection.selected}}).afterClosed().subscribe(e=>{e&&(this.selection.selected.forEach(n=>{this.userService.delete(this.controller,n.user_id).subscribe(()=>{this.refresh()},o=>{let r=o?.error?.message||`An error occurred while trying to delete user ${n.username}`;this.toasterService.error(r)})}),this.selection.clear())})}openUserDetailDialog(e){this.userService.get(this.controller,e.user_id).subscribe({next:n=>{let o={user:n,controller:this.controller};this.dialog.open(MT,{panelClass:["base-dialog-panel","configurator-dialog-panel"],data:o,disableClose:!1}).afterClosed().subscribe(()=>{this.refresh()})},error:n=>{this.toasterService.error(`Cannot load user data: ${n}`)}})}openAiProfileDialog(e){let n={user:e,controller:this.controller};this.dialog.open(sG,{panelClass:["base-dialog-panel","configurator-dialog-panel"],data:n,disableClose:!1})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-user-management"]],viewQuery:function(n,o){if(n&1&&gn(_Oe,5)(vOe,5),n&2){let r;gt(r=_t())&&(o.usersPaginator=r),gt(r=_t())&&(o.usersSort=r)}},inputs:{searchText:[1,"searchText"]},outputs:{searchText:"searchTextChange"},decls:2,vars:1,consts:[["usersSort","matSort"],["usersPaginator","matPaginator"],[1,"user-management__loader"],[1,"user-management__header"],[1,"user-management__title"],[1,"user-management__actions"],["mat-raised-button","","color","primary",1,"user-management__button",3,"click","disabled"],["mat-raised-button","","color","primary",1,"user-management__button",3,"click"],[1,"user-management__search-form"],[1,"user-management__search"],["matInput","","placeholder","Search by username, full name or email",3,"input","value"],[1,"user-management__table-container"],["matSort","",3,"dataSource"],["matColumnDef","select"],["class","user-management__small-col",4,"matHeaderCellDef"],["class","user-management__small-col",4,"matCellDef"],["matColumnDef","username"],["mat-sort-header","",4,"matHeaderCellDef"],[4,"matCellDef"],["matColumnDef","full_name"],["matColumnDef","email"],["matColumnDef","is_active"],["mat-sort-header","","class","user-management__active-col",4,"matHeaderCellDef"],["class","user-management__active-col",4,"matCellDef"],["matColumnDef","last_login"],["matColumnDef","updated_at"],["matColumnDef","actions"],[4,"matHeaderCellDef"],["class","user-management__actions-cell",4,"matCellDef"],[4,"matHeaderRowDef"],[4,"matRowDef","matRowDefColumns"],["showFirstLastButtons","","aria-label","Select page",3,"pageSizeOptions"],[1,"user-management__small-col"],[3,"change","checked","indeterminate"],[3,"click","change","checked"],["mat-sort-header",""],[1,"user-management__username","user-management__username--clickable",3,"click"],[1,"user-management__overflow-text"],["mat-sort-header","",1,"user-management__active-col"],[1,"user-management__active-col"],[1,"user-management__actions-cell"],["mat-icon-button","","matTooltip","Edit user",3,"click"],["mat-icon-button","","matTooltip","AI Profiles",3,"click"],[1,"user-management__spinner"]],template:function(n,o){n&1&&A(0,BOe,43,10)(1,VOe,2,0,"div",2),n&2&&O(o.isReady?0:1)},dependencies:[Z,nt,Ue,He,Ci,at,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,Ot,Ht,Me,ke,we,Te,$,le,ze,te,se,Tr,zr,Oo,ma,Ce,Si,Xo,nG],styles:['[_nghost-%COMP%]{display:block;width:100%}.user-management__header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:20px 0;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.user-management__title[_ngcontent-%COMP%]{font-size:24px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.user-management__actions[_ngcontent-%COMP%]{display:flex;gap:12px}.user-management__button[_ngcontent-%COMP%]{margin:12px 0;height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px;transition:all .2s cubic-bezier(.4,0,.2,1)}.user-management__button[_ngcontent-%COMP%]:hover:not([disabled]){transform:translateY(-2px);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.user-management__button[_ngcontent-%COMP%]:active:not([disabled]){transform:translateY(0)}.user-management__search-form[_ngcontent-%COMP%]{display:flex;justify-content:center;margin:16px auto;width:100%;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .05s both}.user-management__search[_ngcontent-%COMP%]{width:100%;max-width:1000px}.user-management__table-container[_ngcontent-%COMP%]{border-radius:16px;overflow:hidden;width:100%;background:var(--mat-sys-surface);box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .15s both}.user-management__table-container--hidden[_ngcontent-%COMP%]{display:none}mat-row[_ngcontent-%COMP%]{transition:all .2s cubic-bezier(.4,0,.2,1);cursor:default;position:relative}mat-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 3%,transparent);transform:scale(1.002)}mat-row[_ngcontent-%COMP%]:nth-child(2n){background-color:color-mix(in srgb,var(--mat-sys-on-surface) 1%,transparent)}mat-row[_ngcontent-%COMP%]:nth-child(2n):hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 4%,transparent)}.mat-header-row[_ngcontent-%COMP%]{position:sticky;top:0;z-index:10;background:var(--mat-sys-surface)}.mat-header-row[_ngcontent-%COMP%] mat-header-cell[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--mat-sys-on-surface-variant);letter-spacing:.5px;text-transform:uppercase}mat-header-cell[_ngcontent-%COMP%], mat-cell[_ngcontent-%COMP%]{justify-content:center;padding:0 16px}mat-cell[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}mat-cell[mat-column=username][_ngcontent-%COMP%]{justify-content:flex-start;font-weight:500}.user-management__username--clickable[_ngcontent-%COMP%]{cursor:pointer;color:var(--mat-sys-primary);transition:all .2s cubic-bezier(.4,0,.2,1)}.user-management__username--clickable[_ngcontent-%COMP%]:hover{color:color-mix(in srgb,var(--mat-sys-primary) 80%,black);text-decoration:underline}.user-management__link[_ngcontent-%COMP%]{transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-block;transform-origin:left center;color:var(--mat-sys-primary);text-decoration:none;font-weight:500;position:relative}.user-management__link[_ngcontent-%COMP%]:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:2px;background-color:currentColor;transition:width .2s cubic-bezier(.4,0,.2,1)}.user-management__link[_ngcontent-%COMP%]:hover{color:color-mix(in srgb,var(--mat-sys-primary) 80%,black);transform:translateY(-2px)}.user-management__link[_ngcontent-%COMP%]:hover:after{width:100%}.user-management__overflow-text[_ngcontent-%COMP%]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding-right:5px}.user-management__active-col[_ngcontent-%COMP%]{flex-grow:.5;justify-content:center}mat-cell[mat-column=actions][_ngcontent-%COMP%], mat-header-cell[mat-column=actions][_ngcontent-%COMP%]{justify-content:flex-end;padding:0 16px}mat-cell[mat-column=actions][_ngcontent-%COMP%]{overflow:visible}.user-management__small-col[_ngcontent-%COMP%]{width:60px;min-width:60px}.user-management__loader[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-height:200px}.user-management__spinner[_ngcontent-%COMP%]{width:48px;height:48px}mat-paginator[_ngcontent-%COMP%]{background:var(--mat-sys-surface);color:var(--mat-sys-on-surface)}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.user-management__header[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:16px;padding:16px 0}.user-management__actions[_ngcontent-%COMP%]{width:100%;flex-direction:column}.user-management__button[_ngcontent-%COMP%]{width:100%;height:44px;font-size:15px}.user-management__actions-cell[_ngcontent-%COMP%]{flex-wrap:wrap;gap:4px}mat-cell[_ngcontent-%COMP%]{padding:0 12px;font-size:13px}}'],changeDetection:0})}return t})();function zOe(t,i){if(t&1){let e=j();s(0,"section",4)(1,"div",5)(2,"div",6)(3,"span",7),d(4,"Username:"),l(),s(5,"span",8),d(6),l()(),s(7,"div",6)(8,"span",7),d(9,"Full name:"),l(),s(10,"span",8),d(11),l()(),s(12,"div",6)(13,"span",7),d(14,"Email:"),l(),s(15,"span",8),d(16),l()()(),s(17,"div",9)(18,"button",10),v("click",function(){D(e);let o=b();return P(o.changePassword())}),d(19," Change password "),l(),s(20,"button",10),v("click",function(){D(e);let o=b();return P(o.copyToken())}),d(21," Click to copy access token "),l()()()}if(t&2){let e=b();u(6),U(e.user().username),u(5),U(e.user().full_name),u(5),U(e.user().email)}}var IT=(()=>{class t{route=f(Ye);controllerService=f(We);userService=f(pa);toasterService=f(fe);dialog=f(Je);user=me(void 0);controller;constructor(){}ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(+e).then(n=>{this.controller=n,this.userService.getInformationAboutLoggedUser(n).subscribe(o=>{this.user.set(o)})})}changePassword(){this.dialog.open(k_,{panelClass:["base-dialog-panel","change-user-password-dialog-panel"],data:{user:this.user(),controller:this.controller,self_update:!0}})}copyToken(){let e=document.createElement("textarea");e.style.position="fixed",e.style.left="0",e.style.top="0",e.style.opacity="0",e.value=this.controller.authToken,document.body.appendChild(e),e.focus(),e.select(),document.execCommand("copy"),document.body.removeChild(e),this.toasterService.success("Token copied")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-logged-user"]],decls:6,vars:1,consts:[[1,"logged-user"],[1,"logged-user__header"],[1,"logged-user__title"],[1,"logged-user__content"],[1,"logged-user__card"],[1,"logged-user__info"],[1,"logged-user__info-row"],[1,"logged-user__info-label"],[1,"logged-user__info-value"],[1,"logged-user__actions"],["mat-raised-button","","color","primary",1,"logged-user__button",3,"click"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"header",1)(2,"h1",2),d(3,"Logged in user info"),l()(),s(4,"main",3),A(5,zOe,22,3,"section",4),l()()),n&2&&(u(5),O(o.user()?5:-1))},dependencies:[Z,at,$,le,Ce],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.logged-user__header[_ngcontent-%COMP%]{max-width:600px;margin:0 auto;padding:32px 20px 16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.logged-user__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.logged-user__content[_ngcontent-%COMP%]{max-width:600px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.logged-user__card[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.logged-user__info[_ngcontent-%COMP%]{padding:24px;border-bottom:1px solid var(--mat-sys-outline-variant)}.logged-user__info-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:12px 0}.logged-user__info-row[_ngcontent-%COMP%]:not(:last-child){border-bottom:1px solid var(--mat-sys-outline-variant)}.logged-user__info-label[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:var(--mat-sys-on-surface-variant)}.logged-user__info-value[_ngcontent-%COMP%]{font-size:14px;font-weight:400;color:var(--mat-sys-on-surface)}.logged-user__actions[_ngcontent-%COMP%]{padding:24px;display:flex;flex-direction:column;gap:12px}.logged-user__button[_ngcontent-%COMP%]{width:100%;height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.logged-user__header[_ngcontent-%COMP%]{padding:24px 16px 12px}.logged-user__title[_ngcontent-%COMP%]{font-size:24px}.logged-user__content[_ngcontent-%COMP%]{padding:0 16px 16px}.logged-user__button[_ngcontent-%COMP%]{height:44px;font-size:15px}}"],changeDetection:0})}return t})();var E_=(()=>{class t{httpController;constructor(e){this.httpController=e}getImages(e){return this.httpController.get(e,"/images")}getImagePath(e,n,o){return`${e.protocol}//${e.host}:${e.port}/${Ai.current_version}/images/upload/${o}?install_appliances=${n}`}uploadedImage(e,n,o,r){return this.httpController.post(e,`/images/upload/${o}?install_appliances=${n}`,r)}deleteFile(e,n){return this.httpController.delete(e,`/images/${n}`)}pruneImages(e){return this.httpController.delete(e,"/images/prune")}installImages(e){return this.httpController.post(e,"/images/install",{})}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var D_=(()=>{class t{uploadEvents=new Le;cancelRequests=new Le;cancelHandlers=new Map;get events$(){return this.uploadEvents.asObservable()}get cancelRequests$(){return this.cancelRequests.asObservable()}emit(e){this.uploadEvents.next(e)}requestCancel(e){let n=this.cancelHandlers.get(e);if(n){n();return}this.cancelRequests.next(e)}registerCancelHandler(e,n){!e||!n||this.cancelHandlers.set(e,n)}unregisterCancelHandler(e){e&&this.cancelHandlers.delete(e)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var lG=(()=>{class t{http;imageService;imageUploadSessionService;toasterService;queue=[];activeUploads=new Set;activeUploadSizes=new Map;activeCountSource=new qt(0);activeCount$=this.activeCountSource.asObservable();constructor(e,n,o,r){this.http=e,this.imageService=n,this.imageUploadSessionService=o,this.toasterService=r,this.imageUploadSessionService.cancelRequests$.subscribe(a=>{this.cancelUploadByTempId(a)})}queueFile(e,n,o){let r=`img-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,a={tempId:r,file:n,controller:e,installAppliance:o,cancel$:new Le,status:"queued",progress:0};return this.queue.push(a),this.imageUploadSessionService.registerCancelHandler(r,()=>this.cancelUploadByTempId(r)),this.emitEvent(a),this.processQueue(),this.updateActiveCount(),r}cancelUploadByTempId(e){let n=this.queue.find(o=>o.tempId===e);n&&(n.cancel$.next(),n.cancel$.complete(),n.status="canceled",this.emitEvent(n),this.imageUploadSessionService.unregisterCancelHandler(e),this.releaseSlot(n),this.removeFromQueue(n),this.processQueue(),this.updateActiveCount())}processQueue(){let e=this.getHardConcurrencyCapFromEnvironment();for(;this.activeUploads.size<e;){let n=this.pickNextTask();if(!n||!this.canStartUpload(n))break;this.startUpload(n)}}startUpload(e){this.activeUploads.add(e.tempId),this.activeUploadSizes.set(e.tempId,e.file.size),e.status="uploading",this.emitEvent(e);let n=this.imageService.getImagePath(e.controller,e.installAppliance,e.file.name),o={};e.controller.authToken&&!e.controller.tokenExpired&&(o.Authorization=`Bearer ${e.controller.authToken}`);let r=new X5("POST",n,e.file,{headers:new Ph(o),reportProgress:!0});this.http.request(r).pipe(rt(e.cancel$)).subscribe({next:a=>{if(a.type===SE.UploadProgress)e.progress=a.total?Math.round(100*a.loaded/a.total):0,this.emitEvent(e),this.updateActiveCount();else if(a.type===SE.Response){let c=a.body,m=c?.filename||c?.message?.filename||e.file.name;e.status="uploaded",e.progress=100,this.emitEvent(e),this.toasterService.success(`Image ${m} imported successfully`),this.releaseSlot(e),this.removeFromQueue(e),this.processQueue(),this.updateActiveCount()}},error:a=>{let c=a?.error?.message||a?.message||"Upload failed";e.status="error",this.emitEvent(e,c),this.toasterService.error(c),this.releaseSlot(e),this.removeFromQueue(e),this.processQueue(),this.updateActiveCount()}})}pickNextTask(){let e=this.getPendingTasks();if(!e.length)return null;let n=this.getInFlightBytesBudget()-this.getApproxInFlightBytes(),o=e.filter(r=>r.file.size<=n);return o.length?o.sort((r,a)=>r.file.size-a.file.size)[0]:this.activeUploads.size===0?e.sort((r,a)=>r.file.size-a.file.size)[0]:null}canStartUpload(e){if(this.activeUploads.size===0)return!0;let n=this.getApproxInFlightBytes(),o=e.file.size,r=this.getInFlightBytesBudget(),a=this.getPendingTasks(),c=a.length?a.reduce((h,g)=>h+g.file.size,0)/a.length:this.getAverageKnownSize(),m=Math.max(1,Math.floor(r/Math.max(c,this.getAverageKnownSize()))),p=Math.min(this.getHardConcurrencyCapFromEnvironment(),m);return this.activeUploads.size>=p?!1:n+o<=r}getPendingTasks(){return this.queue.filter(e=>e.status==="queued")}releaseSlot(e){this.activeUploads.delete(e.tempId),this.activeUploadSizes.delete(e.tempId)}removeFromQueue(e){let n=this.queue.indexOf(e);n>=0&&this.queue.splice(n,1)}getHardConcurrencyCapFromEnvironment(){let e=this.getRuntimeSignals(),n=Math.max(1,Math.round(Math.log2(e.cores+1)*2)),o=Math.max(1,Math.round(e.memoryGiB*1.2)),r=this.getPendingTasks().map(m=>m.file.size).filter(m=>m>0),a=r.length?r.reduce((m,p)=>m+p,0)/r.length:0,c=Math.min(n,Math.max(1,o*2));if(c=Math.max(1,Math.round(c*this.getNetworkMultiplier(e.effectiveType))),a>0){let m=Math.max(1,Math.round(e.memoryGiB*1024*1024*1024*.15/a));c=Math.min(c,m)}return this.clampConcurrency(c)}getInFlightBytesBudget(){let e=this.getRuntimeSignals(),n=this.getHardConcurrencyCapFromEnvironment(),o=this.getAverageKnownSize(),r=e.memoryGiB*1024*1024*1024*.18,a=o*n*1.5,m=Math.max(r,a)*this.getNetworkMultiplier(e.effectiveType);return Math.max(o,Math.round(m))}getApproxInFlightBytes(){let e=0;return this.activeUploadSizes.forEach(n=>e+=n),e}getAverageKnownSize(){let e=this.queue.map(r=>r.file.size).filter(r=>r>0),n=Array.from(this.activeUploadSizes.values()).filter(r=>r>0),o=[...e,...n];return o.length?Math.round(o.reduce((r,a)=>r+a,0)/o.length):32*1024*1024}clampConcurrency(e){return Math.max(1,Math.min(12,Math.floor(e||1)))}getRuntimeSignals(){let e=navigator;return{cores:Math.max(1,Number(e.hardwareConcurrency||4)),memoryGiB:Math.max(1,Number(e.deviceMemory||4)),effectiveType:e.connection&&e.connection.effectiveType?String(e.connection.effectiveType).toLowerCase():""}}getNetworkMultiplier(e){return e.includes("slow-2g")?.25:e.includes("2g")?.35:e.includes("3g")?.6:e.includes("4g")?1:e.includes("5g")?1.15:.85}emitEvent(e,n){this.imageUploadSessionService.emit({tempId:e.tempId,filename:e.file.name,image_size:e.file.size,image_type:this.resolveImageType(e.file.name),progress:e.progress,status:e.status,errorMessage:n,controller_id:e.controller.id}),(e.status==="uploaded"||e.status==="error"||e.status==="canceled")&&this.imageUploadSessionService.unregisterCancelHandler(e.tempId)}resolveImageType(e){let n=(e||"").split(".");return n.length>1?n[n.length-1].toLowerCase():"unknown"}updateActiveCount(){this.activeCountSource.next(this.activeUploads.size+this.getPendingTasks().length)}static \u0275fac=function(n){return new(n||t)(ge(os),ge(E_),ge(D_),ge(fe))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function HOe(t,i){if(t&1){let e=j();s(0,"header",2)(1,"h5",3),d(2,"Would you like to automatically install appliances for this image?"),l(),s(3,"button",4),v("click",function(){D(e);let o=b();return P(o.closeDialog())}),s(4,"mat-icon"),d(5,"close"),l()()(),s(6,"mat-dialog-content",5)(7,"mat-radio-group",6),v("change",function(o){D(e);let r=b();return P(r.selectInstallApplianceOption(o))}),s(8,"mat-radio-button",7),d(9," Yes "),l(),s(10,"mat-radio-button",7),d(11," No "),l()()(),s(12,"mat-dialog-actions",8)(13,"button",9),v("click",function(){D(e);let o=b();return P(o.isInstallAppliance=!o.isInstallAppliance)}),d(14,"Next"),l()()}if(t&2){let e=b();u(7),x("value",e.install_appliance),u(),x("value",!0)("checked",e.install_appliance),u(2),x("value",!1)("checked",!e.install_appliance)}}function UOe(t,i){if(t&1){let e=j();s(0,"header",2)(1,"div",10)(2,"h5",3),d(3,"Select image file(s) to upload"),l(),s(4,"p",11)(5,"mat-icon",12),d(6,"info_outline"),l(),d(7," Uploads run in the background \u2014 you can navigate away freely. "),l()(),s(8,"div",13)(9,"input",14,0),v("change",function(o){D(e);let r=b();return P(r.onFilesSelected(o))}),l(),s(11,"button",9),v("click",function(){D(e);let o=Re(10);return P(o.click())}),d(12,"Browse"),l(),s(13,"button",4),v("click",function(){D(e);let o=b();return P(o.closeDialog())}),s(14,"mat-icon"),d(15,"close"),l()()()()}}var AT=(()=>{class t{data;dialogRef;backgroundUploadService=f(lG);toasterService=f(fe);cd=f(K);controller;isInstallAppliance=!1;install_appliance=!1;constructor(e,n){this.data=e,this.dialogRef=n}ngOnInit(){this.controller=this.data,this.cd.markForCheck()}onFilesSelected(e){let n=e.target;if(!n.files||!n.files.length)return;let o=n.files.length;for(let a=0;a<o;a++)this.backgroundUploadService.queueFile(this.controller,n.files[a],this.install_appliance);n.value="";let r=o===1?"1 file":`${o} files`;this.toasterService.success(`${r} queued \u2014 uploading in the background`),this.dialogRef.close(!0)}selectInstallApplianceOption(e){this.install_appliance=e.value===!0,this.cd.markForCheck()}closeDialog(){this.dialogRef.close(!1)}static \u0275fac=function(n){return new(n||t)(st(Nt),st(Pe))};static \u0275cmp=L({type:t,selectors:[["app-add-image-dialog"]],decls:3,vars:2,consts:[["fileInput",""],[1,"add-image"],[1,"add-image__header"],[1,"add-image__title"],["mat-icon-button","",1,"add-image__close-btn",3,"click"],[1,"add-image__content"],["name","install_appliances",1,"add-image__radio-group",3,"change","value"],[3,"value","checked"],[1,"add-image__actions"],["mat-raised-button","","color","primary",3,"click"],[1,"add-image__header-content"],[1,"add-image__hint"],[1,"add-image__hint-icon"],[1,"add-image__header-actions"],["type","file","accept",".bin,.image,.iol,.qcow2,.vmdk","multiple","",1,"add-image__file-input",3,"change"]],template:function(n,o){n&1&&(s(0,"div",1),A(1,HOe,15,5),A(2,UOe,16,0,"header",2),l()),n&2&&(u(),O(o.isInstallAppliance?-1:1),u(),O(o.isInstallAppliance?2:-1))},dependencies:[Z,Ce,Be,Wt,$,le,ze,te,se,go,Io,ko],styles:[".add-image[_ngcontent-%COMP%]{display:flex;flex-direction:column;min-width:400px}.add-image__header[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:24px 24px 0}.add-image__header-content[_ngcontent-%COMP%]{flex:1}.add-image__header-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.add-image__title[_ngcontent-%COMP%]{margin:0;font-size:18px;font-weight:500;color:var(--mat-sys-on-surface)}.add-image__close-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.add-image__content[_ngcontent-%COMP%]{padding:16px 24px}.add-image__radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.add-image__hint[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;margin:8px 0 0;font-size:14px;color:var(--mat-sys-on-surface-variant)}.add-image__hint-icon[_ngcontent-%COMP%]{font-size:18px;height:18px;width:18px}.add-image__file-input[_ngcontent-%COMP%]{display:none}.add-image__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;padding:16px 24px 24px;gap:12px}@media(max-width:480px){.add-image[_ngcontent-%COMP%]{min-width:300px}.add-image__header[_ngcontent-%COMP%]{flex-direction:column;padding:16px 16px 0}.add-image__header-actions[_ngcontent-%COMP%]{align-self:flex-end}.add-image__content[_ngcontent-%COMP%]{padding:12px 16px}.add-image__actions[_ngcontent-%COMP%]{padding:12px 16px 16px;flex-direction:column}}"],changeDetection:0})}return t})();function GOe(t,i){if(t&1&&(s(0,"li",5),d(1),l()),t&2){let e=i.$implicit,n=i.$index;u(),Hi("",n+1,". ",e==null?null:e.filename)}}function WOe(t,i){if(t&1){let e=j();s(0,"h1",1),d(1,"Do you want delete all files?"),l(),s(2,"mat-dialog-content",2)(3,"p",3),d(4,"Your selected files"),l(),s(5,"ul",4),J(6,GOe,2,2,"li",5,Ii),l()(),s(8,"mat-dialog-actions",6)(9,"button",7),v("click",function(){D(e);let o=b();return P(o.deleteAll())}),d(10,"Delete"),l(),s(11,"button",8),d(12,"Cancel"),l()()}if(t&2){let e=b();u(6),ee(e.deleteData==null?null:e.deleteData.deleteFilesPaths)}}function qOe(t,i){t&1&&(s(0,"h1",9),d(1,"Please wait."),l(),s(2,"mat-dialog-content",10),F(3,"mat-spinner",11),l())}function XOe(t,i){if(t&1&&d(0),t&2){let e=b(),n=e.$implicit,o=e.$index;Hi(" ",o+1,". ",n==null||n.error==null?null:n.error.message," ")}}function QOe(t,i){if(t&1&&(s(0,"li",5),A(1,XOe,1,2),l()),t&2){let e=i.$implicit;je("delete-files__list-item--error",e==null||e.error==null?null:e.error.message),u(),O(e!==null?1:-1)}}function YOe(t,i){if(t&1&&(s(0,"h5",14),d(1,"Images can't be deleted because image used in one or more template."),l(),s(2,"ul",4),J(3,QOe,2,3,"li",15,Ii),l()),t&2){let e=b(2);u(3),ee(e.deleteFliesDetails)}}function KOe(t,i){if(t&1&&(s(0,"h5",12),d(1),l()),t&2){let e=b(2);u(),X("",e.fileNotDeleted.length," Images deleted successfully.")}}function ZOe(t,i){if(t&1){let e=j();s(0,"mat-dialog-content",2),A(1,YOe,5,0),A(2,KOe,2,1,"h5",12),l(),s(3,"mat-dialog-actions",6)(4,"button",13),v("click",function(){D(e);let o=b();return P(o.dialogRef.close(!1))}),d(5,"Close"),l()()}if(t&2){let e=b();u(),O(e.deleteFliesDetails.length>0?1:-1),u(),O(e.fileNotDeleted.length>0?2:-1)}}var OT=(()=>{class t{deleteData;dialogRef;imageService=f(E_);toasterService=f(fe);cd=f(K);isDelete=!1;isUsedFiles=!1;deleteFliesDetails=[];fileNotDeleted=[];constructor(e,n){this.deleteData=e,this.dialogRef=n}async deleteAll(){this.isDelete=!0,await this.deleteFile()}deleteFile(){let e=[];this.deleteData.deleteFilesPaths.forEach(n=>{e.push(this.imageService.deleteFile(this.deleteData.controller,n.filename).pipe(hi(o=>xt(o))))}),lo(e).subscribe(n=>{this.deleteFliesDetails=n.filter(o=>o!==null),this.fileNotDeleted=n.filter(o=>o===null),this.isUsedFiles=!0,this.isDelete=!0,this.cd.markForCheck()})}static \u0275fac=function(n){return new(n||t)(st(Nt),st(Pe))};static \u0275cmp=L({type:t,selectors:[["app-deleteallfiles-dialog"]],decls:4,vars:3,consts:[[1,"delete-files"],["mat-dialog-title","",1,"delete-files__title"],[1,"delete-files__content"],[1,"delete-files__subtitle"],[1,"delete-files__list"],[1,"delete-files__list-item"],[1,"delete-files__actions"],["mat-button","",3,"click"],["mat-button","","mat-dialog-close","","cdkFocusInitial",""],["mat-dialog-title","",1,"delete-files__title","delete-files__title--center"],[1,"delete-files__content","delete-files__content--center"],["color","accent"],[1,"delete-files__success-title"],["mat-raised-button","","color","primary",3,"click"],[1,"delete-files__error-title"],[1,"delete-files__list-item",3,"delete-files__list-item--error"]],template:function(n,o){n&1&&(s(0,"div",0),A(1,WOe,13,0),A(2,qOe,4,0),A(3,ZOe,6,2),l()),n&2&&(u(),O(!o.isDelete&&!o.isUsedFiles?1:-1),u(),O(o.isDelete&&!o.isUsedFiles?2:-1),u(),O(o.isDelete&&o.isUsedFiles?3:-1))},dependencies:[Z,Ce,Kc,Ve,Be,Wt,$,le,Si,Xo],styles:[".delete-files[_ngcontent-%COMP%]{display:flex;flex-direction:column;min-width:400px}.delete-files__title[_ngcontent-%COMP%]{margin:0;padding:24px 24px 16px;font-size:18px;font-weight:500;color:var(--mat-sys-on-surface)}.delete-files__title--center[_ngcontent-%COMP%]{text-align:center}.delete-files__content[_ngcontent-%COMP%]{padding:0 24px 16px}.delete-files__content--center[_ngcontent-%COMP%]{display:flex;justify-content:center;padding:24px}.delete-files__subtitle[_ngcontent-%COMP%]{margin:0 0 12px;font-size:14px;color:var(--mat-sys-on-surface-variant)}.delete-files__list[_ngcontent-%COMP%]{margin:0;padding-left:20px;list-style:decimal}.delete-files__list-item[_ngcontent-%COMP%]{padding:4px 0;font-size:14px;color:var(--mat-sys-on-surface)}.delete-files__list-item--error[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.delete-files__error-title[_ngcontent-%COMP%]{margin:0 0 12px;font-size:14px;font-weight:500;color:var(--mat-sys-error)}.delete-files__success-title[_ngcontent-%COMP%]{margin:16px 0 0;font-size:14px;font-weight:500;color:var(--mat-sys-primary)}.delete-files__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;padding:16px 24px 24px;gap:12px}@media(max-width:480px){.delete-files[_ngcontent-%COMP%]{min-width:300px}.delete-files__title[_ngcontent-%COMP%]{padding:16px 16px 12px}.delete-files__content[_ngcontent-%COMP%]{padding:0 16px 12px}.delete-files__actions[_ngcontent-%COMP%]{padding:12px 16px 16px;flex-direction:column}}"],changeDetection:0})}return t})();var NT=class{dataChange=new qt([]);get data(){return this.dataChange.value}addImages(i){this.dataChange.next(i)}},RT=class extends Kl{controllerDatabase;sort;paginator;filterChange=new qt("");constructor(i,e,n){super(),this.controllerDatabase=i,this.sort=e,this.paginator=n}setFilter(i){this.filterChange.next((i||"").trim().toLowerCase())}connect(){let i=this.sort?this.sort.sortChange:new qt(null),e=this.paginator?this.paginator.page:new qt(null);return Dn(this.controllerDatabase.dataChange,i,this.filterChange,e).pipe(yt(()=>{let n=this.controllerDatabase.data.slice(),o=this.filterChange.value;if(o&&(n=n.filter(r=>[r.filename,r.image_type,r.image_size,r.created_at,r.uploadStatus].map(c=>String(c||"").toLowerCase()).join(" ").includes(o))),!this.sort||!this.sort.active||this.sort.direction===""||(n=n.sort((r,a)=>{let c=this.getSortValue(r,this.sort.active),m=this.getSortValue(a,this.sort.active);return(c<m?-1:1)*(this.sort.direction==="asc"?1:-1)})),this.paginator&&(this.paginator.length=n.length),this.paginator){let r=this.paginator.pageIndex*this.paginator.pageSize,a=r+this.paginator.pageSize;n=n.slice(r,a)}return n}))}getSortValue(i,e){let n=i[e];if(e==="image_size")return Number(n||0);if(e==="created_at"||e==="updated_at"){let o=Date.parse(String(n||""));return isNaN(o)?0:o}return String(n||"").toLowerCase()}disconnect(){}};function JOe(t,i){if(t&1){let e=j();s(0,"mat-header-cell")(1,"mat-checkbox",28),v("change",function(o){D(e);let r=b();return P(o?r.selectAllImages():null)}),l()()}if(t&2){let e=b();u(),x("checked",e.hasSelection()&&e.isAllSelected())("indeterminate",e.hasSelection()&&!e.isAllSelected())}}function e4e(t,i){if(t&1){let e=j();s(0,"mat-cell")(1,"mat-checkbox",29),v("click",function(o){let r=D(e).$implicit,a=b();return P(a.onRowCheckboxClick(o,r))}),l()()}if(t&2){let e=i.$implicit,n=b();u(),x("checked",n.isRowSelected(e))("disabled",!n.isPersistedRow(e))}}function t4e(t,i){t&1&&(s(0,"mat-header-cell",30),d(1," File Name "),l())}function n4e(t,i){if(t&1&&(s(0,"span"),d(1),l()),t&2){let e=b(2).$implicit;u(),X(" - ",e.errorMessage)}}function i4e(t,i){if(t&1&&(s(0,"div",33),F(1,"mat-progress-bar",34),s(2,"span",35),d(3),on(4,"titlecase"),A(5,n4e,2,1,"span"),l()()),t&2){let e=b().$implicit;u(),x("value",e.uploadProgress||0),u(),je("image-manager__upload-error",e.uploadStatus==="error"),u(),Hi(" ",oi(4,6,e.uploadStatus)," ",e.uploadProgress||0,"% "),u(2),O(e.errorMessage?5:-1)}}function o4e(t,i){if(t&1&&(s(0,"mat-cell")(1,"div",31)(2,"span",32),d(3),l(),A(4,i4e,6,8,"div",33),l()()),t&2){let e=i.$implicit,n=b();u(3),U(e.filename),u(),O(n.hasUploadState(e)?4:-1)}}function r4e(t,i){t&1&&(s(0,"mat-header-cell",30),d(1," Image Type "),l())}function a4e(t,i){if(t&1&&(s(0,"mat-cell"),d(1),l()),t&2){let e=i.$implicit;u(),X(" ",e.image_type," ")}}function s4e(t,i){t&1&&(s(0,"mat-header-cell",30),d(1," Image Size "),l())}function l4e(t,i){if(t&1&&(s(0,"mat-cell"),d(1),l()),t&2){let e=i.$implicit,n=b();u(),X(" ",n.formatImageSize(e)," ")}}function c4e(t,i){t&1&&(s(0,"mat-header-cell",30),d(1," Created "),l())}function d4e(t,i){if(t&1&&(s(0,"mat-cell"),d(1),on(2,"date"),l()),t&2){let e=i.$implicit;u(),X(" ",e.created_at?$r(2,1,e.created_at,"short"):"-"," ")}}function m4e(t,i){if(t&1){let e=j();s(0,"button",37),v("click",function(){D(e);let o=b(2);return P(o.deleteAllFiles())}),s(1,"mat-icon"),d(2,"delete"),l()()}}function p4e(t,i){if(t&1&&(s(0,"mat-header-cell"),A(1,m4e,3,0,"button",36),l()),t&2){let e=b();u(),O(e.hasSelection()&&e.isAllSelected()||e.selectedCount()>1?1:-1)}}function u4e(t,i){if(t&1){let e=j();s(0,"button",37),v("click",function(){D(e);let o=b().$implicit,r=b();return P(r.deleteFile(o.path))}),s(1,"mat-icon"),d(2,"delete"),l()()}}function h4e(t,i){if(t&1){let e=j();s(0,"button",39),v("click",function(){D(e);let o=b().$implicit,r=b();return P(r.cancelUpload(o))}),s(1,"mat-icon"),d(2,"cancel"),l()()}}function f4e(t,i){if(t&1&&(s(0,"mat-cell"),A(1,u4e,3,0,"button",36),A(2,h4e,3,0,"button",38),l()),t&2){let e=i.$implicit,n=b();u(),O(n.isPersistedRow(e)&&n.isRowSelected(e)?1:-1),u(),O(n.hasUploadState(e)&&(e.uploadStatus==="uploading"||e.uploadStatus==="queued")?2:-1)}}function g4e(t,i){t&1&&F(0,"mat-header-row")}function _4e(t,i){if(t&1){let e=j();s(0,"mat-row",40),v("click",function(o){let r=D(e).$implicit,a=b();return P(a.onRowCheckboxClick(o,r))}),l()}if(t&2){let e=i.$implicit,n=b();je("image-manager__row-highlight",n.isHighlighted(e))}}var FT=(()=>{class t{controller;controllerId;version;dataSource;imageDatabase=new NT;searchText=ae("");isAllDelete=!1;selectedPaths=new Set;images=[];uploadRows=new Map;uploadEventsSubscription;dataRowsSubscription;refreshAfterUploadTimer;displayedRows=[];lastSelectedPath=null;highlightedFilename=null;highlightTimer;pageSizeOptions=[5,10,25,50,100];defaultPageSize=10;currentPage=0;displayedColumns=me(["select","filename","image_type","image_size","created_at","delete"]);sort=Ut(Oo);paginator=Ut(Tr);imageService=f(E_);route=f(Ye);controllerService=f(We);dialog=f(Je);toasterService=f(fe);imageUploadSessionService=f(D_);router=f(ut);constructor(){}ngOnInit(){this.controllerId=parseInt(this.route.snapshot.paramMap.get("controller_id"),10);let e=this.sort();e&&e.sort({id:"filename",start:"asc"});let n=this.paginator();n&&(n.pageIndex=this.currentPage,n.pageSize=this.defaultPageSize),this.dataSource=new RT(this.imageDatabase,e,n),this.dataRowsSubscription=this.dataSource.connect().subscribe(o=>{this.displayedRows=o||[]}),this.uploadEventsSubscription=this.imageUploadSessionService.events$.subscribe(o=>{this.onUploadEvent(o)}),this.route.queryParams.subscribe(o=>{o.highlight&&(this.flashRow(o.highlight),this.router.navigate([],{relativeTo:this.route,queryParams:{},replaceUrl:!0}))}),this.controllerService.get(this.controllerId).then(o=>{this.controller=o,o.authToken&&this.getImages()})}ngOnDestroy(){this.uploadEventsSubscription&&this.uploadEventsSubscription.unsubscribe(),this.dataRowsSubscription&&this.dataRowsSubscription.unsubscribe(),this.refreshAfterUploadTimer&&clearTimeout(this.refreshAfterUploadTimer),this.highlightTimer&&clearTimeout(this.highlightTimer)}getImages(){this.imageService.getImages(this.controller).subscribe(e=>{this.images=e||[],this.syncUploadedRowsWithPersistedData(),this.refreshTableRows()},e=>{this.toasterService.error(e.error?.message||e.message||"Failed to get images")})}onPageEvent(e){this.currentPage=e.pageIndex}onSearchChange(e){if(this.searchText.set(e),this.dataSource){this.dataSource.setFilter(e);let n=this.paginator();n&&(n.pageIndex=0)}}isHighlighted(e){return!!this.highlightedFilename&&e.filename===this.highlightedFilename}flashRow(e){this.highlightTimer&&clearTimeout(this.highlightTimer),this.highlightedFilename=e,this.highlightTimer=setTimeout(()=>{this.highlightedFilename=null},2e3)}isPersistedRow(e){return e&&e.rowType==="image"}hasUploadState(e){return e&&e.rowType==="upload"}formatImageSize(e){let n=Number(e.image_size||0);return n?`${(n/1e6).toFixed(2)} MB`:"0 MB"}deleteFile(e){this.dialog.open(om,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel","question-dialog-panel"],data:{title:"Delete image",question:"Are you sure you want to delete this image?"}}).afterClosed().subscribe(o=>{o&&this.imageService.deleteFile(this.controller,e).subscribe(r=>{this.getImages(),this.unChecked(),this.toasterService.success("File deleted")},r=>{this.getImages(),this.unChecked(),this.toasterService.error(r.error?.message||r.message||"Failed to delete file")})})}cancelUpload(e){!e||!e.tempId||(this.imageUploadSessionService.requestCancel(e.tempId),this.toasterService.warning("Image file uploading canceled"))}onRowCheckboxClick(e,n){if(e.preventDefault(),e.stopPropagation(),!this.isPersistedRow(n))return;let r=!this.isRowSelected(n);e.shiftKey&&this.lastSelectedPath?this.selectRowRange(this.lastSelectedPath,n.path,r)||this.toggleRowSelection(n,r):this.toggleRowSelection(n,r),this.lastSelectedPath=n.path||null}trackByRow(e,n){return n.tempId||n.path||`${n.filename}-${e}`}isAllSelected(){let e=new Set(this.getSelectableRows().map(r=>r.path)),n=Array.from(this.selectedPaths).filter(r=>e.has(r)).length,o=e.size;return o===0?!1:n===o}selectAllImages(){this.isAllSelected()?this.unChecked():this.allChecked()}unChecked(){this.selectedPaths.clear(),this.isAllDelete=!1,this.lastSelectedPath=null}allChecked(){this.getSelectableRows().forEach(e=>{e.path&&this.selectedPaths.add(e.path)}),this.isAllDelete=!0}hasSelection(){return this.selectedPaths.size>0}selectedCount(){return this.selectedPaths.size}installAllImages(){this.dialog.open(om,{panelClass:["base-confirmation-dialog-panel","confirmation-info-panel","question-dialog-panel"],data:{title:"Install all images",question:"This will attempt to automatically create templates based on image checksums. Continue?"}}).afterClosed().subscribe(n=>{n&&this.imageService.installImages(this.controller).subscribe(()=>{this.toasterService.success("Images installed")},o=>{this.toasterService.error(o.error?.message||o.message||"Failed to install images")})})}pruneImages(){this.dialog.open(om,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel","question-dialog-panel"],data:{title:"Prune images",question:"Delete all images not used by a template? This cannot be reverted."}}).afterClosed().subscribe(n=>{n&&this.imageService.pruneImages(this.controller).subscribe(()=>{this.getImages(),this.unChecked(),this.toasterService.success("Images pruned")},o=>{this.getImages(),this.unChecked(),this.toasterService.error(o.error?.message||o.message||"Failed to prune images")})})}addImageDialog(){this.dialog.open(AT,{panelClass:["base-dialog-panel","add-image-dialog-panel"],autoFocus:!1,data:this.controller}).afterClosed().subscribe(n=>{this.getImages(),this.unChecked()})}deleteAllFiles(){this.dialog.open(OT,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel","delete-all-images-dialog-panel"],autoFocus:!1,disableClose:!0,data:{controller:this.controller,deleteFilesPaths:this.getSelectedRows()}}).afterClosed().subscribe(n=>{if(n)this.unChecked(),this.getImages(),this.toasterService.success("All files deleted");else return this.unChecked(),this.getImages(),!1})}onUploadEvent(e){if(!e)return;if(e.status==="canceled"){this.uploadRows.delete(e.tempId),this.refreshTableRows();return}let n=this.uploadRows.get(e.tempId),o={rowType:"upload",tempId:e.tempId,filename:e.filename,image_type:e.image_type,image_size:e.image_size,uploadProgress:e.progress,uploadStatus:e.status,errorMessage:e.errorMessage,created_at:"",updated_at:""};this.uploadRows.set(e.tempId,H(H({},n||{}),o)),this.refreshTableRows(),e.status==="uploaded"&&this.scheduleImagesRefresh()}scheduleImagesRefresh(){this.refreshAfterUploadTimer&&clearTimeout(this.refreshAfterUploadTimer),this.refreshAfterUploadTimer=setTimeout(()=>{this.getImages()},300)}refreshTableRows(){let e=this.images.map(o=>tt(H({},o),{rowType:"image"})),n=Array.from(this.uploadRows.values());this.removeInvalidSelections(e),this.imageDatabase.addImages([...n,...e])}removeInvalidSelections(e){let n=new Set(e.map(o=>o.path).filter(o=>!!o));Array.from(this.selectedPaths).forEach(o=>{n.has(o)||this.selectedPaths.delete(o)}),this.lastSelectedPath&&!e.some(o=>o.path===this.lastSelectedPath)&&(this.lastSelectedPath=null)}syncUploadedRowsWithPersistedData(){let e=new Set(this.images.map(n=>n.filename));this.uploadRows.forEach((n,o)=>{n.uploadStatus==="uploaded"&&e.has(n.filename)&&this.uploadRows.delete(o)})}getSelectableRows(){return this.imageDatabase.data.filter(e=>this.isPersistedRow(e))}getVisibleSelectableRows(){return(this.displayedRows&&this.displayedRows.length?this.displayedRows:this.getSelectableRows()).filter(n=>this.isPersistedRow(n))}selectRowRange(e,n,o){let r=this.getVisibleSelectableRows(),a=r.findIndex(h=>h.path===e),c=r.findIndex(h=>h.path===n);if(a<0||c<0)return!1;let m=Math.min(a,c),p=Math.max(a,c);return r.slice(m,p+1).forEach(h=>this.toggleRowSelection(h,o)),!0}toggleRowSelection(e,n){if(n){this.selectRow(e);return}this.deselectRow(e)}isRowSelected(e){return!e||!e.path?!1:this.selectedPaths.has(e.path)}selectRow(e){!e||!e.path||this.selectedPaths.add(e.path)}deselectRow(e){!e||!e.path||this.selectedPaths.delete(e.path)}getSelectedRows(){return this.getSelectableRows().filter(n=>n.path&&this.selectedPaths.has(n.path))}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-image-manager"]],viewQuery:function(n,o){n&1&&tn(o.sort,Oo,5)(o.paginator,Tr,5),n&2&&nn(2)},inputs:{searchText:[1,"searchText"]},outputs:{searchText:"searchTextChange"},decls:47,vars:8,consts:[["table",""],[1,"image-manager"],[1,"image-manager__header"],["mat-icon-button","",1,"image-manager__back-btn",3,"routerLink"],[1,"image-manager__title"],[1,"image-manager__actions"],["mat-icon-button","","matTooltip","Install all images","matTooltipClass","custom-tooltip",3,"click"],["mat-icon-button","","matTooltip","Prune images","matTooltipClass","custom-tooltip",3,"click"],["mat-icon-button","","matTooltip","Add image","matTooltipClass","custom-tooltip",3,"click"],[1,"image-manager__content"],[1,"image-manager__search-form"],["appearance","fill",1,"image-manager__search-field"],["matPrefix",""],["matInput","","placeholder","Search images",3,"input","value"],[1,"image-manager__table-container"],["matSort","",3,"dataSource","trackBy"],["matColumnDef","select"],[4,"matHeaderCellDef"],[4,"matCellDef"],["matColumnDef","filename"],["mat-sort-header","",4,"matHeaderCellDef"],["matColumnDef","image_type"],["matColumnDef","image_size"],["matColumnDef","created_at"],["matColumnDef","delete"],[4,"matHeaderRowDef","matHeaderRowDefSticky"],[3,"image-manager__row-highlight","click",4,"matRowDef","matRowDefColumns"],["showFirstLastButtons","",3,"pageSizeOptions"],[3,"change","checked","indeterminate"],[3,"click","checked","disabled"],["mat-sort-header",""],[1,"image-manager__row-content"],[1,"image-manager__filename"],[1,"image-manager__upload-status"],["mode","determinate",3,"value"],[1,"image-manager__upload-text"],["mat-icon-button",""],["mat-icon-button","",3,"click"],["mat-icon-button","","matTooltip","Cancel upload","matTooltipClass","custom-tooltip"],["mat-icon-button","","matTooltip","Cancel upload","matTooltipClass","custom-tooltip",3,"click"],[3,"click"]],template:function(n,o){n&1&&(s(0,"div",1)(1,"header",2)(2,"button",3)(3,"mat-icon"),d(4,"arrow_back"),l()(),s(5,"h1",4),d(6,"Image Manager"),l(),s(7,"div",5)(8,"button",6),v("click",function(){return o.installAllImages()}),s(9,"mat-icon"),d(10,"done_all"),l()(),s(11,"button",7),v("click",function(){return o.pruneImages()}),s(12,"mat-icon"),d(13,"delete"),l()(),s(14,"button",8),v("click",function(){return o.addImageDialog()}),s(15,"mat-icon"),d(16,"add_circle_outline"),l()()()(),s(17,"main",9)(18,"form",10)(19,"mat-form-field",11)(20,"mat-icon",12),d(21,"search"),l(),s(22,"input",13),v("input",function(a){return o.onSearchChange(a.target.value)}),l()()(),s(23,"div",14)(24,"mat-table",15,0),qe(26,16),Ae(27,JOe,2,2,"mat-header-cell",17)(28,e4e,2,2,"mat-cell",18),Xe(),qe(29,19),Ae(30,t4e,2,0,"mat-header-cell",20)(31,o4e,5,2,"mat-cell",18),Xe(),qe(32,21),Ae(33,r4e,2,0,"mat-header-cell",20)(34,a4e,2,1,"mat-cell",18),Xe(),qe(35,22),Ae(36,s4e,2,0,"mat-header-cell",20)(37,l4e,2,1,"mat-cell",18),Xe(),qe(38,23),Ae(39,c4e,2,0,"mat-header-cell",20)(40,d4e,3,4,"mat-cell",18),Xe(),qe(41,24),Ae(42,p4e,2,1,"mat-header-cell",17)(43,f4e,3,2,"mat-cell",18),Xe(),Ae(44,g4e,1,0,"mat-header-row",25)(45,_4e,1,2,"mat-row",26),l(),F(46,"mat-paginator",27),l()()()),n&2&&(u(2),x("routerLink","/controller/"+o.controllerId+"/projects"),u(20),x("value",o.searchText()),u(2),x("dataSource",o.dataSource)("trackBy",o.trackByRow),u(20),x("matHeaderRowDef",o.displayedColumns())("matHeaderRowDefSticky",!0),u(),x("matRowDefColumns",o.displayedColumns()),u(),x("pageSizeOptions",o.pageSizeOptions))},dependencies:[Z,at,cn,nt,Ue,He,Ci,Ce,zr,Oo,ma,d_,Tr,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,$,ze,te,se,Me,ke,al,we,Te,Ot,Ht,Pl,nd,Ri,Gt,Kt,U5,DC],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.image-manager__header[_ngcontent-%COMP%]{max-width:1200px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.image-manager__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.image-manager__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.image-manager__title[_ngcontent-%COMP%]{flex:1;font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.image-manager__actions[_ngcontent-%COMP%]{display:flex;gap:8px}.image-manager__actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.image-manager__actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.image-manager__content[_ngcontent-%COMP%]{max-width:1200px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.image-manager__search-form[_ngcontent-%COMP%]{margin-bottom:16px}.image-manager__search-field[_ngcontent-%COMP%]{width:100%}.image-manager__search-field[_ngcontent-%COMP%] .mat-mdc-form-icon[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.image-manager__table-container[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.image-manager__row-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px;width:100%}.image-manager__filename[_ngcontent-%COMP%]{word-break:break-word}.image-manager__upload-status[_ngcontent-%COMP%]{margin-top:4px}.image-manager__upload-text[_ngcontent-%COMP%]{display:inline-block;font-size:12px;margin-top:4px;word-break:break-word}.image-manager__upload-error[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.image-manager__row-highlight[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_row-flash 1.8s ease}mat-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 4%,transparent);cursor:pointer}mat-header-cell[_ngcontent-%COMP%], mat-cell[_ngcontent-%COMP%]{justify-content:center}mat-cell[_ngcontent-%COMP%], mat-header-cell[_ngcontent-%COMP%], mat-footer-cell[_ngcontent-%COMP%]{flex:1;display:flex;align-items:center;overflow:initial;min-height:inherit}.mat-header-row[_ngcontent-%COMP%]{position:sticky;top:0;z-index:3}.mat-header-cell[_ngcontent-%COMP%]{background:inherit}.mat-table-sticky[_ngcontent-%COMP%]{top:0;z-index:3}.mat-column-filename[_ngcontent-%COMP%]{flex:2;min-width:250px}.mat-column-image_type[_ngcontent-%COMP%], .mat-column-image_size[_ngcontent-%COMP%]{flex:1;min-width:120px}.mat-column-created_at[_ngcontent-%COMP%]{flex:1;min-width:140px}.mat-column-select[_ngcontent-%COMP%], .mat-column-delete[_ngcontent-%COMP%]{flex:0 0 60px;min-width:60px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes _ngcontent-%COMP%_row-flash{0%{background-color:transparent}20%,80%{background-color:color-mix(in srgb,var(--mat-sys-shadow) 4%,transparent)}to{background-color:transparent}}@media(max-width:768px){.image-manager__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px;flex-wrap:wrap}.image-manager__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.image-manager__title[_ngcontent-%COMP%]{font-size:24px;order:1;flex:1 1 100%}.image-manager__actions[_ngcontent-%COMP%]{order:2;margin-left:auto}.image-manager__content[_ngcontent-%COMP%]{padding:0 16px 16px}.image-manager__table-container[_ngcontent-%COMP%]{overflow-x:auto}.mat-column-filename[_ngcontent-%COMP%]{min-width:180px}.mat-column-image_type[_ngcontent-%COMP%], .mat-column-image_size[_ngcontent-%COMP%]{min-width:90px}.mat-column-created_at[_ngcontent-%COMP%]{min-width:100px}mat-cell[_ngcontent-%COMP%], mat-header-cell[_ngcontent-%COMP%]{font-size:12px}}@media(max-width:640px){.mat-column-created_at[_ngcontent-%COMP%]{display:none}}"],changeDetection:0})}return t})();function v4e(t,i){if(t&1&&(s(0,"a",7,1),d(2),l()),t&2){let e=i.$implicit;x("routerLink",no("./",e)),u(2),X(" ",e.charAt(0).toUpperCase()+e.slice(1)," ")}}var LT=(()=>{class t{route=f(Ye);router=f(ut);controllerService=f(We);controller;links=me(["users","groups","roles","pools","ACL"]);constructor(){}ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(+e).then(n=>{this.controller=n})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-management"]],decls:12,vars:1,consts:[["tabPanel",""],["rla","routerLinkActive"],[1,"management__header"],[1,"management__header-content"],[1,"management__title"],[1,"management__tab-nav"],["mat-tab-nav-bar","",3,"tabPanel"],["mat-tab-link","","routerLinkActive","",1,"management__tab-link",3,"routerLink"],[1,"management__content"]],template:function(n,o){if(n&1&&(s(0,"section",2)(1,"div",3)(2,"h1",4),d(3,"Controller Management"),l()()(),s(4,"section",5),F(5,"mat-tab-nav-panel",null,0),s(7,"nav",6),J(8,v4e,3,3,"a",7,Fe),l()(),s(10,"section",8),F(11,"router-outlet"),l()),n&2){let r=Re(6);u(7),x("tabPanel",r),u(),ee(o.links())}},dependencies:[Z,at,zd,cn,A3,mo,IR,OR,AR],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.management__header[_ngcontent-%COMP%]{max-width:1000px;margin:0 auto;padding:32px 20px 16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.management__header-content[_ngcontent-%COMP%]{display:flex;align-items:flex-end;justify-content:flex-start;gap:16px;animation:_ngcontent-%COMP%_fadeIn .5s ease-out}.management__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.management__tab-nav[_ngcontent-%COMP%]{max-width:1000px;margin:0 auto;padding:0 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .05s both}.management__tab-link[_ngcontent-%COMP%]{font-weight:500;letter-spacing:.3px;transition:color .2s cubic-bezier(.4,0,.2,1)}.management__content[_ngcontent-%COMP%]{max-width:1000px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0}to{opacity:1}}@media(max-width:768px){.management__header[_ngcontent-%COMP%]{padding:24px 16px 12px}.management__title[_ngcontent-%COMP%]{font-size:24px}.management__tab-nav[_ngcontent-%COMP%]{padding:0 16px}.management__content[_ngcontent-%COMP%]{padding:0 16px 16px}}"],changeDetection:0})}return t})();var cG=(t,i)=>e=>Ma(500).pipe(fn(()=>i.getGroups(t)),yt(n=>n.find(o=>o.name===e.value)?{projectExist:!0}:null));var BT=(()=>{class t{get(e){return new RegExp(/[~`!#$%\^&*+=\[\]\\';,/{}|\\":<>\?]/).test(e.value)?{invalidName:!0}:null}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var C4e=(t,i)=>i.username;function x4e(t,i){t&1&&(s(0,"mat-error"),d(1,"Group name is required"),l())}function y4e(t,i){t&1&&(s(0,"mat-error"),d(1,"Group name is incorrect"),l())}function S4e(t,i){t&1&&(s(0,"mat-error"),d(1,"Group with this name exists"),l())}function w4e(t,i){if(t&1&&(s(0,"mat-option",8),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),Hi(" ",e.username," - ",e.email," ")}}function M4e(t,i){if(t&1){let e=j();s(0,"div")(1,"div",13)(2,"div"),d(3),l(),s(4,"div"),d(5),l(),s(6,"mat-icon",14),v("click",function(){let o=D(e).$implicit,r=b();return P(r.delUser(o))}),d(7,"delete"),l()()()}if(t&2){let e=i.$implicit;u(3),U(e.username),u(2),U(e.email)}}var VT=(()=>{class t{data;groupNameValidator;dialogRef=f(Pe);formBuilder=f(jt);groupService=f(Gl);userService=f(pa);toasterService=f(fe);cd=f(K);groupNameForm;controller;users=[];usersToAdd=new Set([]);filteredUsers;loading=!1;autocompleteControl=new re;constructor(e,n){this.data=e,this.groupNameValidator=n}ngOnInit(){this.controller=this.data.controller,this.groupNameForm=this.formBuilder.group({groupName:new re(null,[be.required,this.groupNameValidator.get],[cG(this.data.controller,this.groupService)])}),this.userService.list(this.controller).subscribe(e=>{this.users=e,this.filteredUsers=this.autocompleteControl.valueChanges.pipe(li(""),yt(n=>this._filter(n))),this.cd.markForCheck()})}onKeyDown(e){e.key==="Enter"&&this.onAddClick()}get form(){return this.groupNameForm.controls}onAddClick(){if(this.groupNameForm.invalid)return;let e=this.groupNameForm.controls.groupName.value,n=Array.from(this.usersToAdd.values());this.groupService.addGroup(this.controller,e).subscribe(o=>{n.forEach(r=>{this.groupService.addMemberToGroup(this.controller,o,r).subscribe(()=>{this.toasterService.success(`user ${r.username} was added`)},a=>{this.toasterService.error(`An error occur while trying to add user ${r.username} to group ${e}`)})}),this.dialogRef.close(!0)},o=>{this.toasterService.error(`An error occur while trying to create new group ${e}`),this.dialogRef.close(!1)})}onNoClick(){this.dialogRef.close()}selectedUser(e){this.usersToAdd.add(e)}delUser(e){this.usersToAdd.delete(e)}_filter(e){if(typeof e=="string"){let n=e.toLowerCase();return this.users.filter(o=>o.username.toLowerCase().includes(n)||o.email?.toLowerCase().includes(n))}}displayFn(e){return e&&e.username?e.username:""}static \u0275fac=function(n){return new(n||t)(st(Nt),st(BT))};static \u0275cmp=L({type:t,selectors:[["app-add-group-dialog"]],features:[hn([BT])],decls:30,vars:9,consts:[["auto","matAutocomplete"],["mat-dialog-title",""],[3,"formGroup"],["mat-dialog-content",""],["appearance","fill",1,"full-width-field"],["matInput","","type","text","formControlName","groupName","placeholder","Please enter group name",3,"keydown"],["type","text","matInput","",3,"matAutocomplete","formControl"],[3,"optionSelected","displayWith"],[3,"value"],[1,"users"],["mat-dialog-actions","","align","end"],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"],[1,"userList"],[3,"click"]],template:function(n,o){if(n&1&&(s(0,"h1",1),d(1,"Create new group"),l(),s(2,"form",2)(3,"div",3)(4,"mat-form-field",4)(5,"mat-label"),d(6,"Group name"),l(),s(7,"input",5),v("keydown",function(a){return o.onKeyDown(a)}),l(),A(8,x4e,2,0,"mat-error"),A(9,y4e,2,0,"mat-error"),A(10,S4e,2,0,"mat-error"),l(),s(11,"h5"),d(12,"Add users to group:"),l(),s(13,"mat-form-field",4)(14,"mat-label"),d(15,"Users"),l(),F(16,"input",6),s(17,"mat-autocomplete",7,0),v("optionSelected",function(a){return o.selectedUser(a.option.value)}),J(19,w4e,2,3,"mat-option",8,Fe),on(21,"async"),l()(),s(22,"div",9),J(23,M4e,8,2,"div",null,C4e),l()(),s(25,"div",10)(26,"button",11),v("click",function(){return o.onNoClick()}),d(27,"Cancel"),l(),s(28,"button",12),v("click",function(){return o.onAddClick()}),d(29,"Add group"),l()()()),n&2){let r=Re(18);u(2),x("formGroup",o.groupNameForm),u(6),O(o.form.groupName!=null&&o.form.groupName.touched&&(o.form.groupName!=null&&o.form.groupName.errors)&&(o.form.groupName!=null&&o.form.groupName.errors.required)?8:-1),u(),O(o.form.groupName!=null&&o.form.groupName.errors&&(o.form.groupName!=null&&o.form.groupName.errors.invalidName)?9:-1),u(),O(o.form.groupName!=null&&o.form.groupName.errors&&(o.form.groupName!=null&&o.form.groupName.errors.projectExist)?10:-1),u(6),x("matAutocomplete",r)("formControl",o.autocompleteControl),u(),x("displayWith",o.displayFn),u(2),ee(oi(21,7,o.filteredUsers)),u(4),ee(o.usersToAdd)}},dependencies:[Z,ct,Ue,vt,mt,He,bm,pt,bt,Ce,Ve,Be,Wt,$,le,Me,ke,lt,Ni,we,Te,Ds,Ul,St,el,te,se,Jr],styles:[".full-width-field[_ngcontent-%COMP%]{width:100%}.userList[_ngcontent-%COMP%]{display:flex;margin:10px;justify-content:space-between;flex:1 1 auto}.users[_ngcontent-%COMP%]{display:flex;min-height:40px;overflow:auto;flex-direction:column}"],changeDetection:0})}return t})();var k4e=(t,i)=>i.name;function T4e(t,i){if(t&1&&(s(0,"li"),d(1),l()),t&2){let e=i.$implicit;u(),U(e.name)}}var zT=(()=>{class t{data;dialogRef=f(Pe);constructor(e){this.data=e}onCancel(){this.dialogRef.close()}onDelete(){this.dialogRef.close(!0)}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-delete-group-dialog"]],decls:10,vars:0,consts:[["mat-dialog-title",""],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",1,"add-project-button",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Are you sure you want to delete the following groups?"),l(),s(2,"ul"),J(3,T4e,2,1,"li",null,k4e),l(),s(5,"div",1)(6,"button",2),v("click",function(){return o.onCancel()}),d(7,"No, cancel"),l(),s(8,"button",3),v("click",function(){return o.onDelete()}),d(9," Yes, delete! "),l()()),n&2&&(u(3),ee(o.data.groups))},dependencies:[Z,Ce,Ve,Be,$,le],encapsulation:2,changeDetection:0})}return t})();var dG=(()=>{class t{transform(e,n){return n&&(n=n.trim().toLowerCase(),e.filter=n),e}static \u0275fac=function(n){return new(n||t)};static \u0275pipe=Cr({name:"groupFilter",type:t,pure:!0})}return t})();var E4e=(t,i)=>i.username;function D4e(t,i){if(t&1){let e=j();s(0,"div",8)(1,"mat-checkbox",15),v("change",function(){let o=D(e).$implicit,r=b();return P(r.toggleUserSelection(o.user_id))}),l(),s(2,"div",16)(3,"div",17),d(4),l(),s(5,"div",18),d(6),l()()()}if(t&2){let e=i.$implicit,n=b();u(),x("checked",n.isUserSelected(e.user_id)),u(3),U(e.username),u(2),U(e.email)}}function P4e(t,i){t&1&&(s(0,"div",19)(1,"mat-icon"),d(2,"person_off"),l(),s(3,"p"),d(4,"No users found"),l()())}function I4e(t,i){t&1&&A(0,P4e,5,0,"div",19),t&2&&O(i.length===0?0:-1)}var jT=(()=>{class t{data;dialogRef=f(Pe);userService=f(pa);groupService=f(Gl);toastService=f(fe);cd=f(K);users=new qt([]);displayedUsers=new qt([]);searchText=ae("");loading=!1;selectedUserIds=me(new Set);selectedCount=ri(()=>this.selectedUserIds().size);allSelected=ri(()=>{let e=this.displayedUsers.value;return e.length>0&&e.every(n=>this.selectedUserIds().has(n.user_id))});constructor(e){this.data=e}ngOnInit(){this.getUsers()}onSearch(){Ma(500).subscribe(()=>{let e=this.users.value.filter(n=>n.username.includes(this.searchText())||n.email?.includes(this.searchText()));this.displayedUsers.next(e),this.cd.markForCheck()})}getUsers(){lo([this.userService.list(this.data.controller),this.groupService.getGroupMember(this.data.controller,this.data.group.user_group_id)]).subscribe(e=>{let[n,o]=e,r=n.filter(a=>!o.find(c=>c.user_id===a.user_id));this.users.next(r),this.displayedUsers.next(r),this.cd.markForCheck()})}addUser(e){this.loading=!0,this.groupService.addMemberToGroup(this.data.controller,this.data.group,e).subscribe(()=>{this.toastService.success(`user ${e.username} was added`),this.removeUserFromList(e),this.selectedUserIds.update(n=>{let o=new Set(n);return o.delete(e.user_id),o}),this.loading=!1,this.cd.markForCheck()},n=>{console.log(n),this.toastService.error(`error while adding user ${e.username} to group ${this.data.group.name}`),this.loading=!1,this.cd.markForCheck()})}toggleUserSelection(e){this.selectedUserIds.update(n=>{let o=new Set(n);return o.has(e)?o.delete(e):o.add(e),o})}isUserSelected(e){return this.selectedUserIds().has(e)}toggleSelectAll(){let e=this.displayedUsers.value,n=this.selectedUserIds();if(this.allSelected())this.selectedUserIds.set(new Set);else{let o=new Set(n);e.forEach(r=>o.add(r.user_id)),this.selectedUserIds.set(o)}}addSelectedUsers(){let e=this.selectedUserIds();if(e.size===0){this.toastService.warning("Please select at least one user");return}let n=this.displayedUsers.value.filter(o=>e.has(o.user_id));this.loading=!0,lo(n.map(o=>this.groupService.addMemberToGroup(this.data.controller,this.data.group,o))).subscribe({next:()=>{this.toastService.success(`${n.length} user(s) added to group`),this.dialogRef.close(!0)},error:o=>{console.log(o),this.toastService.error("Error adding users to group"),this.loading=!1,this.cd.markForCheck()}})}onClose(){this.dialogRef.close()}removeUserFromList(e){let n=this.users.value,o=this.displayedUsers.value;this.users.next(n.filter(r=>r.user_id!==e.user_id)),this.displayedUsers.next(o.filter(r=>r.user_id!==e.user_id))}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-add-user-to-group-dialog"]],inputs:{searchText:[1,"searchText"]},outputs:{searchText:"searchTextChange"},decls:26,vars:12,consts:[[1,"dialog-header"],[1,"dialog-title"],[1,"dialog-content"],[1,"search-section"],["appearance","outline",1,"search-field"],["matInput","","type","text","placeholder","Type to filter users...",3,"input","keydown","value"],["matPrefix",""],[1,"users-list"],[1,"user-item"],[1,"dialog-actions"],[1,"selection-info"],[3,"change","checked","indeterminate"],[1,"action-buttons"],["mat-button","",3,"click"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"user-checkbox",3,"change","checked"],[1,"user-info"],[1,"user-name"],[1,"user-email"],[1,"empty-state"]],template:function(n,o){if(n&1&&(s(0,"div",0)(1,"h2",1),d(2),l()(),s(3,"div",2)(4,"div",3)(5,"mat-form-field",4)(6,"mat-label"),d(7,"Search users"),l(),s(8,"input",5),v("input",function(a){return o.searchText.set(a.target.value)})("keydown",function(){return o.onSearch()}),l(),s(9,"mat-icon",6),d(10,"search"),l()()(),s(11,"div",7),J(12,D4e,7,3,"div",8,E4e),on(14,"async"),A(15,I4e,1,1),on(16,"async"),l()(),s(17,"div",9)(18,"div",10)(19,"mat-checkbox",11),v("change",function(){return o.toggleSelectAll()}),d(20),l()(),s(21,"div",12)(22,"button",13),v("click",function(){return o.onClose()}),d(23,"Cancel"),l(),s(24,"button",14),v("click",function(){return o.addSelectedUsers()}),d(25),l()()()),n&2){let r;u(2),X("Add User To Group: ",o.data.group.name),u(6),x("value",o.searchText()),u(4),ee(oi(14,8,o.displayedUsers)),u(3),O((r=oi(16,10,o.displayedUsers))?15:-1,r),u(4),x("checked",o.allSelected())("indeterminate",o.selectedCount()>0&&!o.allSelected()),u(),X(" Select All (",o.selectedCount(),") "),u(4),x("disabled",o.selectedCount()===0||o.loading),u(),X(" Add Selected (",o.selectedCount(),") ")}},dependencies:[Z,nt,Ce,Me,ke,lt,al,we,Te,te,se,Si,$,le,Ot,Ht,Jr],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;width:100%;height:100%}.dialog-header[_ngcontent-%COMP%]{padding:20px 24px 16px;border-bottom:1px solid var(--mat-sys-outline-variant)}.dialog-title[_ngcontent-%COMP%]{margin:0;font-size:20px;font-weight:500;color:var(--mat-sys-on-surface);line-height:1.4}.dialog-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;overflow:hidden}.search-section[_ngcontent-%COMP%]{padding:16px 24px;border-bottom:1px solid var(--mat-sys-outline-variant)}.search-field[_ngcontent-%COMP%]{width:100%}.users-list[_ngcontent-%COMP%]{flex:1;overflow-y:auto;padding:8px}.user-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:12px 16px;margin-bottom:4px;border-radius:12px;background:var(--mat-sys-surface-container-low);transition:all .2s ease}.user-item[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container)}.user-item[_ngcontent-%COMP%]:last-child{margin-bottom:0}.user-checkbox[_ngcontent-%COMP%]{flex-shrink:0}.user-info[_ngcontent-%COMP%]{flex:1;min-width:0}.user-name[_ngcontent-%COMP%]{font-size:15px;font-weight:500;color:var(--mat-sys-on-surface);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-email[_ngcontent-%COMP%]{font-size:13px;color:var(--mat-sys-on-surface-variant);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.empty-state[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;color:var(--mat-sys-on-surface-variant)}.empty-state[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:48px;width:48px;height:48px;margin-bottom:12px;opacity:.5}.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:14px}.dialog-actions[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-top:1px solid var(--mat-sys-outline-variant);background:var(--mat-sys-surface-container-low)}.selection-info[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{margin:0}.action-buttons[_ngcontent-%COMP%]{display:flex;gap:8px}"],changeDetection:0})}return t})();var $T=(()=>{class t{data;dialogRef=f(Pe);constructor(e){this.data=e}onCancel(){this.dialogRef.close(!1)}onConfirm(){this.dialogRef.close(!0)}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-remove-user-to-group-dialog"]],decls:13,vars:1,consts:[["mat-dialog-title",""],["mat-dialog-actions",""],["mat-button","",3,"click"],["mat-raised-button","","color","warn",3,"click"]],template:function(n,o){n&1&&(s(0,"h2",0),d(1,"Remove User"),l(),s(2,"mat-dialog-content")(3,"p"),d(4," Are you sure you want to remove "),s(5,"strong"),d(6),l(),d(7," from this group? "),l()(),s(8,"div",1)(9,"button",2),v("click",function(){return o.onCancel()}),d(10,"Cancel"),l(),s(11,"button",3),v("click",function(){return o.onConfirm()}),d(12,"Remove"),l()()),n&2&&(u(6),U(o.data.name))},dependencies:[Ce,Ve,Be,Wt,$,le],encapsulation:2,changeDetection:0})}return t})();var A4e=(t,i)=>i.user_id;function O4e(t,i){t&1&&(s(0,"p",24),d(1,"No members in this group"),l())}function N4e(t,i){if(t&1){let e=j();s(0,"li")(1,"span",27),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.openUserDetailDialog(o))}),d(2),l(),s(3,"button",28),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.openRemoveUserDialog(o))}),s(4,"mat-icon"),d(5,"delete"),l()()()}if(t&2){let e=i.$implicit;u(2),U(e.username)}}function R4e(t,i){if(t&1&&(s(0,"ul"),J(1,N4e,6,1,"li",null,A4e),l()),t&2){let e=b();u(),ee(e.filteredMembers())}}function F4e(t,i){t&1&&(s(0,"p",24),d(1,"No ACEs configured for this group"),l())}function L4e(t,i){t&1&&(s(0,"th",37),d(1,"Endpoint"),l())}function B4e(t,i){if(t&1&&(s(0,"td",38),d(1),l()),t&2){let e=i.$implicit;u(),U(e.endpoint_name)}}function V4e(t,i){t&1&&(s(0,"th",37),d(1,"Role"),l())}function z4e(t,i){if(t&1&&(s(0,"td",38),d(1),l()),t&2){let e=i.$implicit;u(),U(e.role_name)}}function j4e(t,i){t&1&&(s(0,"th",37),d(1,"Propagate"),l())}function $4e(t,i){if(t&1&&(s(0,"td",38),d(1),l()),t&2){let e=i.$implicit;u(),U(e.propagate)}}function H4e(t,i){t&1&&(s(0,"th",37),d(1,"Allowed"),l())}function U4e(t,i){if(t&1&&(s(0,"td",38),d(1),l()),t&2){let e=i.$implicit;u(),U(e.allowed)}}function G4e(t,i){t&1&&F(0,"tr",39)}function W4e(t,i){t&1&&F(0,"tr",40)}function q4e(t,i){if(t&1&&(s(0,"table",25),qe(1,29),Ae(2,L4e,2,0,"th",30)(3,B4e,2,1,"td",31),Xe(),qe(4,32),Ae(5,V4e,2,0,"th",30)(6,z4e,2,1,"td",31),Xe(),qe(7,33),Ae(8,j4e,2,0,"th",30)(9,$4e,2,1,"td",31),Xe(),qe(10,34),Ae(11,H4e,2,0,"th",30)(12,U4e,2,1,"td",31),Xe(),Ae(13,G4e,1,0,"tr",35)(14,W4e,1,0,"tr",36),l()),t&2){let e=b();x("dataSource",e.aceDatasource),u(13),x("matHeaderRowDef",e.aceDisplayedColumns),u(),x("matRowDefColumns",e.aceDisplayedColumns)}}var mG=(()=>{class t{data;dialogRef=f(Pe);dialog=f(Je);groupService=f(Gl);aclService=f(Xp);roleService=f(Wl);toastService=f(fe);group;controller;editGroupForm;members=me([]);aces=[];aceDatasource=new Nr;aceDisplayedColumns=["endpoint","role","propagate","allowed"];searchMembers=ae("");filteredMembers=ri(()=>{let e=this.searchMembers().toLowerCase(),n=this.members();return e?n.filter(o=>o.username.toLowerCase().includes(e)):n});constructor(e){this.data=e,this.group=e.group,this.controller=e.controller}ngOnInit(){this.editGroupForm=new Dr({groupname:new re(this.group.name,[be.required])}),this.loadMembers(),this.loadAces()}loadMembers(){this.groupService.getGroupMember(this.controller,this.group.user_group_id).subscribe({next:e=>{this.members.set(e.sort((n,o)=>n.username.toLowerCase().localeCompare(o.username.toLowerCase())))},error:e=>{console.error("Failed to load members:",e)}})}loadAces(){this.roleService.get(this.controller).subscribe(e=>{this.aclService.getEndpoints(this.controller).subscribe(n=>{this.aclService.list(this.controller).subscribe({next:o=>{let r=o.filter(a=>a.ace_type==="group"&&a.group_id===this.group.user_group_id);this.aces=r.map(a=>{let c=n.filter(p=>p.endpoint===a.path)[0],m=e.filter(p=>p.role_id===a.role_id)[0];return tt(H({},a),{endpoint_name:c?.name||a.path,role_name:m?.name||"Unknown"})}),this.aceDatasource.data=this.aces},error:o=>{console.error("Failed to load ACEs:",o)}})})})}onUpdate(){if(!this.editGroupForm.valid)return;let e=tt(H({},this.group),{name:this.editGroupForm.get("groupname").value});this.groupService.update(this.controller,e).subscribe({next:()=>{this.group.name=e.name,this.toastService.success("Group updated successfully")},error:n=>{this.toastService.error("Cannot update group: "+n)}})}onClose(){this.dialogRef.close()}openAddUserDialog(){this.dialog.open(jT,{panelClass:["base-dialog-panel","simple-dialog-panel","add-user-to-group-dialog-panel"],data:{controller:this.controller,group:this.group}}).afterClosed().subscribe(e=>{e&&this.loadMembers()})}openRemoveUserDialog(e){this.dialog.open($T,{panelClass:["base-confirmation-dialog-panel","confirmation-warning-panel"],data:{name:e.username}}).afterClosed().subscribe(n=>{n&&this.groupService.removeUser(this.controller,this.group,e).subscribe({next:()=>{this.toastService.success(`User ${e.username} was removed`),this.loadMembers()},error:o=>{this.toastService.error(`Error while removing user: ${o}`)}})})}openUserDetailDialog(e){this.dialog.open(MT,{panelClass:["base-dialog-panel","configurator-dialog-panel"],data:{user:e,controller:this.controller}})}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-group-detail-dialog"]],inputs:{searchMembers:[1,"searchMembers"]},outputs:{searchMembers:"searchMembersChange"},decls:68,vars:10,consts:[["mat-dialog-title",""],[1,"group-detail-dialog__content"],[1,"group-detail-dialog__section"],[1,"group-detail-dialog__section-title"],[1,"group-detail-dialog__card"],[1,"group-detail-dialog__form",3,"formGroup"],["appearance","fill",1,"group-detail-dialog__field"],["matInput","","type","text","formControlName","groupname"],[1,"group-detail-dialog__checkbox"],["disabled","",3,"checked"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"group-detail-dialog__card","group-detail-dialog__card--muted"],[1,"group-detail-dialog__info-grid"],[1,"group-detail-dialog__info-item"],[1,"group-detail-dialog__info-label"],[1,"group-detail-dialog__info-value"],[1,"group-detail-dialog__info-item","group-detail-dialog__info-item--full"],[1,"group-detail-dialog__info-value","group-detail-dialog__info-value--mono"],[1,"group-detail-dialog__section-header"],["mat-icon-button","","matTooltip","Add user",3,"click"],[1,"group-detail-dialog__search"],["appearance","fill",1,"group-detail-dialog__search-field"],["matInput","",3,"input","value"],[1,"group-detail-dialog__members-list"],[1,"group-detail-dialog__empty-message"],["mat-table","",1,"group-detail-dialog__ace-table",3,"dataSource"],["mat-button","",3,"click"],[1,"group-detail-dialog__member-name",3,"click"],["mat-icon-button","","matTooltip","Remove user",3,"click"],["matColumnDef","endpoint"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","role"],["matColumnDef","propagate"],["matColumnDef","allowed"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell",""],["mat-header-row",""],["mat-row",""]],template:function(n,o){n&1&&(s(0,"h2",0),d(1),l(),s(2,"mat-dialog-content")(3,"div",1)(4,"section",2)(5,"h3",3),d(6,"Details"),l(),s(7,"mat-card",4)(8,"mat-card-content")(9,"form",5)(10,"mat-form-field",6)(11,"mat-label"),d(12,"Group name"),l(),F(13,"input",7),l(),s(14,"div",8)(15,"mat-checkbox",9),d(16,"Is built-in"),l()()()(),s(17,"mat-card-actions")(18,"button",10),v("click",function(){return o.onUpdate()}),d(19," Update Group "),l()()(),s(20,"mat-card",11)(21,"mat-card-header")(22,"mat-card-title"),d(23,"Group Information"),l()(),s(24,"mat-card-content")(25,"div",12)(26,"div",13)(27,"span",14),d(28,"Creation date"),l(),s(29,"span",15),d(30),l()(),s(31,"div",13)(32,"span",14),d(33,"Last update"),l(),s(34,"span",15),d(35),l()(),s(36,"div",16)(37,"span",14),d(38,"UUID"),l(),s(39,"span",17),d(40),l()()()()()(),s(41,"section",2)(42,"div",18)(43,"h3",3),d(44,"Members"),l(),s(45,"button",19),v("click",function(){return o.openAddUserDialog()}),s(46,"mat-icon"),d(47,"person_add"),l()()(),s(48,"mat-card",4)(49,"mat-card-content")(50,"div",20)(51,"mat-form-field",21)(52,"mat-label"),d(53,"Filter members"),l(),s(54,"input",22),v("input",function(a){return o.searchMembers.set(a.target.value)}),l()()(),s(55,"div",23),A(56,O4e,2,0,"p",24)(57,R4e,3,0,"ul"),l()()()(),s(58,"section",2)(59,"h3",3),d(60,"ACEs"),l(),s(61,"mat-card",4)(62,"mat-card-content"),A(63,F4e,2,0,"p",24)(64,q4e,15,3,"table",25),l()()()()(),s(65,"mat-dialog-actions")(66,"button",26),v("click",function(){return o.onClose()}),d(67,"Close"),l()()),n&2&&(u(),X("Group ",o.group.name),u(8),x("formGroup",o.editGroupForm),u(6),x("checked",o.group.is_builtin),u(3),x("disabled",!o.editGroupForm.valid||o.group.is_builtin),u(12),U(o.group.created_at),u(5),U(o.group.updated_at),u(5),U(o.group.user_group_id),u(14),x("value",o.searchMembers()),u(2),O(o.members().length===0?56:57),u(7),O(o.aces.length===0?63:64))},dependencies:[Z,nt,Ue,vt,mt,He,ct,pt,bt,Ce,Ve,Be,Wt,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,$,le,ze,te,se,Me,ke,lt,we,Te,Ot,Ht,Dt,Tn,Wy,Sl,ed,Jc,Mt,Gt,Kt],styles:[".group-detail-dialog__content[_ngcontent-%COMP%]{padding:0}.group-detail-dialog__section[_ngcontent-%COMP%]{margin-bottom:24px}.group-detail-dialog__section[_ngcontent-%COMP%]:last-child{margin-bottom:0}.group-detail-dialog__section-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.group-detail-dialog__section-title[_ngcontent-%COMP%]{font-size:16px;font-weight:600;color:var(--mat-sys-on-surface);margin:0 0 12px;padding-bottom:8px;border-bottom:2px solid var(--mat-sys-primary);display:inline-block}.group-detail-dialog__section-header[_ngcontent-%COMP%] .group-detail-dialog__section-title[_ngcontent-%COMP%]{margin-bottom:0;padding-bottom:0;border-bottom:none}.group-detail-dialog__card[_ngcontent-%COMP%]{margin-bottom:16px;border-radius:12px}.group-detail-dialog__card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%]{padding-top:16px}.group-detail-dialog__card[_ngcontent-%COMP%] mat-card-actions[_ngcontent-%COMP%]{padding:16px;border-top:1px solid var(--mat-sys-outline-variant)}.group-detail-dialog__card--muted[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low)}.group-detail-dialog__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.group-detail-dialog__field[_ngcontent-%COMP%]{width:100%;max-width:400px}.group-detail-dialog__checkbox[_ngcontent-%COMP%]{display:flex;align-items:center}.group-detail-dialog__info-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}@media(max-width:600px){.group-detail-dialog__info-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}}.group-detail-dialog__info-item[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.group-detail-dialog__info-item--full[_ngcontent-%COMP%]{grid-column:1/-1}.group-detail-dialog__info-label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--mat-sys-on-surface-variant);text-transform:uppercase;letter-spacing:.5px}.group-detail-dialog__info-value[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}.group-detail-dialog__info-value--mono[_ngcontent-%COMP%]{font-family:monospace;font-size:12px}.group-detail-dialog__search[_ngcontent-%COMP%]{margin-bottom:16px}.group-detail-dialog__search-field[_ngcontent-%COMP%]{width:100%}.group-detail-dialog__members-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low);border-radius:8px;padding:8px 0}.group-detail-dialog__members-list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{list-style:none;padding:0;margin:0}.group-detail-dialog__members-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;border-bottom:1px solid var(--mat-sys-outline-variant)}.group-detail-dialog__members-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:last-child{border-bottom:none}.group-detail-dialog__member-name[_ngcontent-%COMP%]{font-weight:500;color:var(--mat-sys-primary);cursor:pointer}.group-detail-dialog__member-name[_ngcontent-%COMP%]:hover{text-decoration:underline}.group-detail-dialog__empty-message[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-style:italic;text-align:center;padding:24px}.group-detail-dialog__ace-table[_ngcontent-%COMP%]{width:100%;background:var(--mat-sys-surface-container-low);border-radius:8px;overflow:hidden}.group-detail-dialog__ace-table[_ngcontent-%COMP%] .mat-header-row[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container)}.group-detail-dialog__ace-table[_ngcontent-%COMP%] mat-header-cell[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--mat-sys-on-surface-variant);text-transform:uppercase}.group-detail-dialog__ace-table[_ngcontent-%COMP%] mat-cell[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}.group-detail-dialog__ace-table[_ngcontent-%COMP%] mat-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 3%,transparent)}"],changeDetection:0})}return t})();function X4e(t,i){t&1&&(s(0,"div",7),F(1,"mat-spinner",9),s(2,"p"),d(3,"Loading..."),l()())}function Q4e(t,i){t&1&&(s(0,"th",23),d(1,"Name"),l())}function Y4e(t,i){if(t&1&&(s(0,"td",24)(1,"span",25),d(2),l()()),t&2){let e=i.$implicit;u(2),U(e.name)}}function K4e(t,i){t&1&&(s(0,"th",23),d(1,"API Domain"),l())}function Z4e(t,i){if(t&1&&(s(0,"td",24)(1,"span",26),d(2),l()()),t&2){let e=i.$implicit,n=b(3);u(2),U(n.getProviderDisplay(e))}}function J4e(t,i){t&1&&(s(0,"th",23),d(1,"Model"),l())}function eNe(t,i){if(t&1&&(s(0,"td",24)(1,"span",27),d(2),l()()),t&2){let e=i.$implicit;u(2),U(e.config.model)}}function tNe(t,i){t&1&&(s(0,"th",23),d(1,"Context Limit"),l())}function nNe(t,i){if(t&1&&(s(0,"span",29),d(1),l()),t&2){let e=b().$implicit;u(),X(" ",e.config.context_strategy," ")}}function iNe(t,i){if(t&1&&(s(0,"td",24)(1,"span",28),d(2),l(),A(3,nNe,2,1,"span",29),l()),t&2){let e=i.$implicit;u(2),X("",e.config.context_limit,"K"),u(),O(e.config.context_strategy?3:-1)}}function oNe(t,i){t&1&&(s(0,"th",23),d(1,"Actions"),l())}function rNe(t,i){if(t&1){let e=j();s(0,"td",24)(1,"div",30)(2,"button",31),on(3,"async"),v("click",function(){let o=D(e).$implicit,r=b(3);return P(r.toggleDefaultConfig(o))}),s(4,"mat-icon"),d(5,"check_circle"),l()(),s(6,"button",32),v("click",function(){let o=D(e).$implicit,r=b(3);return P(r.openEditDialog(o))}),s(7,"mat-icon"),d(8,"edit"),l()(),s(9,"button",33),v("click",function(){let o=D(e).$implicit,r=b(3);return P(r.deleteConfig(o))}),s(10,"mat-icon"),d(11,"delete"),l()()()()}if(t&2){let e,n=i.$implicit,o=b(3);u(2),je("active-btn",o.isDefault(n)),x("disabled",(e=oi(3,4,o.settingDefault$))==null?null:e.has(n.config_id))("matTooltip",o.isDefault(n)?"Remove as default":"Set as default")}}function aNe(t,i){t&1&&F(0,"tr",34)}function sNe(t,i){if(t&1&&F(0,"tr",35),t&2){let e=i.$implicit,n=b(3);je("active-row",n.isDefault(e))}}function lNe(t,i){if(t&1&&(s(0,"div",11)(1,"table",13),qe(2,14),Ae(3,Q4e,2,0,"th",15)(4,Y4e,3,1,"td",16),Xe(),qe(5,17),Ae(6,K4e,2,0,"th",15)(7,Z4e,3,1,"td",16),Xe(),qe(8,18),Ae(9,J4e,2,0,"th",15)(10,eNe,3,1,"td",16),Xe(),qe(11,19),Ae(12,tNe,2,0,"th",15)(13,iNe,4,2,"td",16),Xe(),qe(14,20),Ae(15,oNe,2,0,"th",15)(16,rNe,12,6,"td",16),Xe(),Ae(17,aNe,1,0,"tr",21)(18,sNe,1,2,"tr",22),l()()),t&2){let e=b(2);u(),x("dataSource",e.configs),u(16),x("matHeaderRowDef",e.displayedColumns()),u(),x("matRowDefColumns",e.displayedColumns())}}function cNe(t,i){t&1&&(s(0,"div",12)(1,"mat-icon",36),d(2,"folder_open"),l(),s(3,"p"),d(4,"No configurations yet"),l(),s(5,"p",37),d(6,'Click "New Configuration" above to create your first LLM model configuration'),l()())}function dNe(t,i){if(t&1&&(s(0,"div",8)(1,"mat-card",10)(2,"mat-card-header")(3,"mat-card-title"),d(4,"All Configurations"),l()(),s(5,"mat-card-content"),A(6,lNe,19,3,"div",11),A(7,cNe,7,0,"div",12),l()()()),t&2){let e=b();u(6),O(e.configs.length>0?6:-1),u(),O(e.configs.length===0?7:-1)}}var HT=(()=>{class t{destroy$=new Le;controller=oe(void 0);group=oe(void 0);loading$=new qt(!1);settingDefault$=new qt(new Set);error$=new qt(null);configs$=new qt([]);defaultConfig$=new qt(null);configs=[];defaultConfig=null;settingDefaultConfigs=new Set;displayedColumns=me(["name","provider","model","context_limit","actions"]);aiProfilesService=f(__);dialog=f(Je);snackBar=f(Qr);constructor(){}ngOnInit(){this.loadConfigs(),rr([this.configs$,this.defaultConfig$]).pipe(rt(this.destroy$)).subscribe(([e,n])=>{this.configs=e,this.defaultConfig=n}),this.error$.pipe(rt(this.destroy$),Pn(e=>e!==null)).subscribe(e=>{this.showError(e)})}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}loadConfigs(){this.loading$.next(!0),this.error$.next(null),this.aiProfilesService.getGroupConfigs(this.controller(),this.group().user_group_id).pipe(rt(this.destroy$)).subscribe({next:e=>{this.configs$.next(e.configs),this.defaultConfig$.next(e.default_config),this.loading$.next(!1)},error:e=>{this.handleError(e,"Failed to load configurations")}})}isDefault(e){return this.defaultConfig?.config_id===e.config_id}getProviderDisplay(e){let n=e.config.base_url;if(!n)return e.config.provider;try{return new URL(n).hostname.replace(/^api\./,"")}catch{return e.config.provider}}openCreateDialog(){this.dialog.open(Qp,{panelClass:["base-dialog-panel","ai-profile-dialog-panel"],data:{mode:"create",config:null,existingNames:this.configs.map(n=>n.name)}}).afterClosed().pipe(rt(this.destroy$)).subscribe(n=>{n&&this.createConfig(n)})}openEditDialog(e){this.dialog.open(Qp,{panelClass:["base-dialog-panel","ai-profile-dialog-panel"],data:{mode:"edit",config:H({},e),existingNames:this.configs.filter(o=>o.config_id!==e.config_id).map(o=>o.name)}}).afterClosed().pipe(rt(this.destroy$)).subscribe(o=>{o&&this.updateConfig(e.config_id,o)})}createConfig(e){this.loading$.next(!0),this.aiProfilesService.createGroupConfig(this.controller(),this.group().user_group_id,e).pipe(rt(this.destroy$)).subscribe({next:()=>{this.loadConfigs(),this.showSuccess("Configuration created successfully")},error:n=>{this.handleError(n,"Failed to create configuration")}})}updateConfig(e,n){this.loading$.next(!0),this.aiProfilesService.updateGroupConfig(this.controller(),this.group().user_group_id,e,n).pipe(rt(this.destroy$)).subscribe({next:()=>{this.loadConfigs(),this.showSuccess("Configuration updated successfully")},error:o=>{o.status===409?this.handleConflict(o):this.handleError(o,"Failed to update configuration")}})}deleteConfig(e){this.dialog.open(T_,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:{title:"Delete Configuration",message:`Are you sure you want to delete configuration "${e.name}"? This action cannot be undone.`,confirmText:"Delete",cancelText:"Cancel"}}).afterClosed().pipe(rt(this.destroy$)).subscribe(o=>{o&&(this.loading$.next(!0),this.aiProfilesService.deleteGroupConfig(this.controller(),this.group().user_group_id,e.config_id).pipe(rt(this.destroy$)).subscribe({next:()=>{this.loadConfigs(),this.showSuccess("Configuration deleted successfully")},error:r=>{this.handleError(r,"Failed to delete configuration")}}))})}toggleDefaultConfig(e){let n=e.config_id;if(this.settingDefaultConfigs.has(n))return;let o=e.is_default,r=this.defaultConfig,a=[...this.configs],c=a.map(m=>tt(H({},m),{is_default:o?!1:m.config_id===n}));this.configs=c,this.configs$.next(c),this.defaultConfig=o?null:e,this.defaultConfig$.next(o?null:e),this.settingDefaultConfigs.add(n),this.settingDefault$.next(new Set(this.settingDefaultConfigs)),o?this.aiProfilesService.unsetDefaultGroupConfig(this.controller(),this.group().user_group_id,n).pipe(rt(this.destroy$)).subscribe({next:()=>{this.settingDefaultConfigs.delete(n),this.settingDefault$.next(new Set(this.settingDefaultConfigs)),this.showSuccess("Default configuration removed"),this.loadConfigsWithoutLoading()},error:m=>{this.configs=a,this.configs$.next(a),this.defaultConfig=r,this.defaultConfig$.next(r),this.settingDefaultConfigs.delete(n),this.settingDefault$.next(new Set(this.settingDefaultConfigs)),m.status===409?this.handleConflict(m):this.handleError(m,"Failed to remove default configuration")}}):this.aiProfilesService.setDefaultGroupConfig(this.controller(),this.group().user_group_id,n).pipe(rt(this.destroy$)).subscribe({next:()=>{this.settingDefaultConfigs.delete(n),this.settingDefault$.next(new Set(this.settingDefaultConfigs)),this.showSuccess("Default configuration set successfully"),this.loadConfigsWithoutLoading()},error:m=>{this.configs=a,this.configs$.next(a),this.defaultConfig=r,this.defaultConfig$.next(r),this.settingDefaultConfigs.delete(n),this.settingDefault$.next(new Set(this.settingDefaultConfigs)),m.status===409?this.handleConflict(m):this.handleError(m,"Failed to set default configuration")}})}loadConfigsWithoutLoading(){this.error$.next(null),this.aiProfilesService.getGroupConfigs(this.controller(),this.group().user_group_id).pipe(rt(this.destroy$)).subscribe({next:e=>{this.configs$.next(e.configs),this.defaultConfig$.next(e.default_config)},error:e=>{this.handleError(e,"Failed to refresh configurations")}})}handleConflict(e){this.loadConfigs(),this.showWarning("Data has been modified by another user, auto-refreshed")}handleError(e,n){console.error(`${n}:`,e);let o=n;e?.error?.detail?o=e.error.detail:e?.message&&(o=e.message),this.error$.next(o),this.loading$.next(!1),this.showError(o)}showSuccess(e){this.snackBar.open(e,"Close",{duration:3e3,panelClass:["success-snackbar"]})}showWarning(e){this.snackBar.open(e,"Close",{duration:5e3,panelClass:["warning-snackbar"]})}showError(e){this.snackBar.open(e,"Close",{duration:5e3,panelClass:["error-snackbar"]})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-group-ai-profile-tab"]],inputs:{controller:[1,"controller"],group:[1,"group"]},decls:21,vars:9,consts:[[1,"ai-profile-container"],[1,"toolbar"],[1,"toolbar-info"],[1,"subtitle"],[1,"toolbar-actions"],["mat-button","",3,"click","disabled"],["mat-raised-button","","color","primary",3,"click"],[1,"loading-container"],[1,"content-area"],["diameter","40"],[1,"list-card"],[1,"table-container"],[1,"empty-state"],["mat-table","",1,"profiles-table",3,"dataSource"],["matColumnDef","name"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","provider"],["matColumnDef","model"],["matColumnDef","context_limit"],["matColumnDef","actions"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",3,"active-row",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell",""],[1,"profile-name"],[1,"provider-badge"],[1,"model-name"],[1,"context-limit-value"],[1,"context-strategy-badge"],[1,"action-buttons"],["mat-icon-button","","matTooltipClass","custom-tooltip",3,"click","disabled","matTooltip"],["mat-icon-button","",3,"click"],["mat-icon-button","","color","warn",1,"delete-btn",3,"click"],["mat-header-row",""],["mat-row",""],[1,"empty-icon"],[1,"empty-hint"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3"),d(4,"Group LLM Model Configurations"),l(),s(5,"p",3),d(6,"Manage group LLM model configurations. These configs will be inherited by group members."),l()(),s(7,"div",4)(8,"button",5),on(9,"async"),v("click",function(){return o.loadConfigs()}),s(10,"mat-icon"),d(11,"refresh"),l(),d(12," Refresh "),l(),s(13,"button",6),v("click",function(){return o.openCreateDialog()}),s(14,"mat-icon"),d(15,"add"),l(),d(16," New Configuration "),l()()(),A(17,X4e,4,0,"div",7),on(18,"async"),A(19,dNe,8,2,"div",8),on(20,"async"),l()),n&2&&(u(8),x("disabled",oi(9,3,o.loading$)),u(9),O(oi(18,5,o.loading$)?17:-1),u(2),O(oi(20,7,o.loading$)?-1:19))},dependencies:[Z,Ce,Zc,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,$,le,ze,te,se,Me,we,Mt,Ot,Dt,Tn,Sl,ed,Jc,Si,Xo,Jr],styles:['.ai-profile-container[_ngcontent-%COMP%]{padding:20px}.ai-profile-container[_ngcontent-%COMP%] .toolbar[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.ai-profile-container[_ngcontent-%COMP%] .toolbar[_ngcontent-%COMP%] .toolbar-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 4px;font-size:18px;font-weight:500}.ai-profile-container[_ngcontent-%COMP%] .toolbar[_ngcontent-%COMP%] .toolbar-info[_ngcontent-%COMP%] .subtitle[_ngcontent-%COMP%]{margin:0;font-size:13px}.ai-profile-container[_ngcontent-%COMP%] .toolbar[_ngcontent-%COMP%] .toolbar-actions[_ngcontent-%COMP%]{display:flex;gap:8px}.ai-profile-container[_ngcontent-%COMP%] .toolbar[_ngcontent-%COMP%] .toolbar-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.ai-profile-container[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px}.ai-profile-container[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%]{margin-bottom:16px}.ai-profile-container[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-header[_ngcontent-%COMP%] mat-card-title[_ngcontent-%COMP%]{font-size:16px}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%]{padding:0}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%]{overflow-x:auto}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%]{width:100%}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-header-row[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{font-weight:500}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:1px solid var(--mat-sys-outline-variant)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-primary) 8%,transparent)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-row.active-row[_ngcontent-%COMP%]{background-color:var(--mat-sys-tertiary-container)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-row.active-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:1px solid var(--mat-sys-tertiary)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] mat-row.active-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-tertiary) 12%,var(--mat-sys-tertiary-container))}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .name-cell[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{font-weight:500}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .provider-badge[_ngcontent-%COMP%]{padding:4px 8px;background:var(--mat-sys-primary-container);border-radius:4px;font-size:12px;color:var(--mat-sys-on-primary-container)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .model-name[_ngcontent-%COMP%]{font-family:monospace;font-size:13px}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .temperature-value[_ngcontent-%COMP%]{font-family:monospace;font-size:13px}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%]{display:flex;gap:4px}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:32px;height:32px;padding:6px;transition:all .2s cubic-bezier(.4,0,.2,1);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;position:relative}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:before{content:"";position:absolute;width:100%;height:100%;border-radius:50%;background-color:currentColor;opacity:0;transition:opacity .2s cubic-bezier(.4,0,.2,1);transform:scale(.75)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;transition:transform .2s cubic-bezier(.4,0,.2,1);position:relative;z-index:1}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button.active-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-tertiary)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button.active-btn[_ngcontent-%COMP%]:hover:before{opacity:1;background-color:var(--mat-sys-tertiary-container)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button.active-btn[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{transform:scale(1.35)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:not(.active-btn):not(.delete-btn):hover:before{opacity:1;background-color:var(--mat-sys-primary-container)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:not(.active-btn):not(.delete-btn):hover mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);transform:scale(1.35)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button.delete-btn[_ngcontent-%COMP%]:hover:before{opacity:1;background-color:var(--mat-sys-error-container)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%] .table-container[_ngcontent-%COMP%] table.profiles-table[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] button.delete-btn[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{transform:scale(1.35)}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%]{font-size:64px;margin-bottom:16px;opacity:.3}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:4px 0}.ai-profile-container[_ngcontent-%COMP%] .content-area[_ngcontent-%COMP%] mat-card.list-card[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] p.empty-hint[_ngcontent-%COMP%]{font-size:13px}'],changeDetection:0})}return t})();var pG=(()=>{class t{dialogRef=f(Pe);data=f(Nt);close(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-group-ai-profile-dialog"]],decls:7,vars:3,consts:[["mat-dialog-title",""],[3,"controller","group"],["mat-button","",3,"click"]],template:function(n,o){n&1&&(s(0,"h2",0),d(1),l(),s(2,"mat-dialog-content"),F(3,"app-group-ai-profile-tab",1),l(),s(4,"mat-dialog-actions")(5,"button",2),v("click",function(){return o.close()}),d(6,"Close"),l()()),n&2&&(u(),X("AI Profiles - ",o.data.group.name),u(2),x("controller",o.data.controller)("group",o.data.group))},dependencies:[Z,Ce,Ve,Be,Wt,$,le,te,HT],styles:[".group-ai-profile-dialog__content[_ngcontent-%COMP%]{padding:16px 0}"],changeDetection:0})}return t})();var mNe=["groupsPaginator"],pNe=["groupsSort"],uNe=()=>[5,10,20];function hNe(t,i){if(t&1){let e=j();s(0,"th",28)(1,"mat-checkbox",29),v("change",function(o){D(e);let r=b(2);return P(o?r.masterToggle():null)}),l()()}if(t&2){let e=b(2);u(),x("checked",e.selection.hasValue()&&e.isAllSelected())("indeterminate",e.selection.hasValue()&&!e.isAllSelected())}}function fNe(t,i){if(t&1){let e=j();s(0,"td",30)(1,"mat-checkbox",31),v("click",function(o){return o.stopPropagation()})("change",function(o){let r=D(e).$implicit,a=b(2);return P(o?a.selection.toggle(r):null)}),l()()}if(t&2){let e=i.$implicit,n=b(2);u(),x("checked",n.selection.isSelected(e))}}function gNe(t,i){t&1&&(s(0,"th",32),d(1,"Name"),l())}function _Ne(t,i){if(t&1){let e=j();s(0,"td",33)(1,"span",34),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.openGroupDetailDialog(o))}),d(2),l()()}if(t&2){let e=i.$implicit;u(2),X(" ",e.name," ")}}function vNe(t,i){t&1&&(s(0,"th",32),d(1,"Creation date"),l())}function bNe(t,i){if(t&1&&(s(0,"td",33),d(1),l()),t&2){let e=i.$implicit;u(),U(e.created_at)}}function CNe(t,i){t&1&&(s(0,"th",32),d(1,"Last update"),l())}function xNe(t,i){if(t&1&&(s(0,"td",33),d(1),l()),t&2){let e=i.$implicit;u(),U(e.updated_at)}}function yNe(t,i){t&1&&(s(0,"th",32),d(1,"Built-in"),l())}function SNe(t,i){if(t&1&&(s(0,"td",33),d(1),l()),t&2){let e=i.$implicit;u(),U(e.is_builtin)}}function wNe(t,i){t&1&&(s(0,"th",35),d(1,"Actions"),l())}function MNe(t,i){if(t&1){let e=j();s(0,"td",36)(1,"button",37),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.openGroupDetailDialog(o))}),s(2,"mat-icon"),d(3,"edit"),l()(),s(4,"button",38),v("click",function(){let o=D(e).$implicit,r=b(2);return P(r.openGroupAiProfileDialog(o))}),s(5,"mat-icon"),d(6,"psychology"),l()()()}}function kNe(t,i){t&1&&F(0,"tr",39)}function TNe(t,i){t&1&&F(0,"tr",40)}function ENe(t,i){if(t&1){let e=j();s(0,"header",3)(1,"h1",4),d(2,"Groups"),l(),s(3,"div",5)(4,"button",6),v("click",function(){D(e);let o=b();return P(o.onDelete(o.selection.selected))}),d(5," Delete Selected "),l(),s(6,"button",7),v("click",function(){D(e);let o=b();return P(o.addGroup())}),d(7,"Add Group"),l()()(),s(8,"form",8)(9,"mat-form-field",9)(10,"input",10),v("input",function(o){D(e);let r=b();return P(r.searchText.set(o.target.value))}),l()()(),s(11,"div",11)(12,"table",12,0),on(14,"groupFilter"),qe(15,13),Ae(16,hNe,2,2,"th",14)(17,fNe,2,1,"td",15),Xe(),qe(18,16),Ae(19,gNe,2,0,"th",17)(20,_Ne,3,1,"td",18),Xe(),qe(21,19),Ae(22,vNe,2,0,"th",17)(23,bNe,2,1,"td",18),Xe(),qe(24,20),Ae(25,CNe,2,0,"th",17)(26,xNe,2,1,"td",18),Xe(),qe(27,21),Ae(28,yNe,2,0,"th",17)(29,SNe,2,1,"td",18),Xe(),qe(30,22),Ae(31,wNe,2,0,"th",23)(32,MNe,7,0,"td",24),Xe(),Ae(33,kNe,1,0,"tr",25)(34,TNe,1,0,"tr",26),l(),F(35,"mat-paginator",27,1),l()}if(t&2){let e=b();u(4),x("disabled",e.selection.selected.length===0),u(6),x("value",e.searchText()),u(2),x("dataSource",$r(14,6,e.dataSource,e.searchText())),u(21),x("matHeaderRowDef",e.displayedColumns()),u(),x("matRowDefColumns",e.displayedColumns()),u(),x("pageSizeOptions",Jt(9,uNe))}}function DNe(t,i){t&1&&(s(0,"div",2),F(1,"mat-spinner",41),l())}var UT=(()=>{class t{route=f(Ye);controllerService=f(We);toasterService=f(fe);groupService=f(Gl);dialog=f(Je);controller;groupsPaginator;groupsSort;displayedColumns=me(["select","name","created_at","updated_at","is_builtin","actions"]);selection=new ha(!0,[]);groups;dataSource=new Nr;searchText=ae("");isReady=me(!1);constructor(){}ngOnInit(){let e=this.route.parent.snapshot.paramMap.get("controller_id");this.controllerService.get(+e).then(n=>{this.controller=n,this.refresh()})}ngAfterViewInit(){this.groupsPaginator.changes.subscribe(e=>{this.dataSource.paginator=e.first}),this.groupsSort.changes.subscribe(e=>{this.dataSource.sort=e.first}),this.dataSource.sortingDataAccessor=(e,n)=>n==="name"?e[n]?e[n].toLowerCase():"":e[n]}isAllSelected(){let e=this.selection.selected.length,n=this.groups.length;return e===n}masterToggle(){this.isAllSelected()?this.selection.clear():this.groups.forEach(e=>this.selection.select(e))}addGroup(){this.dialog.open(VT,{width:"400px",autoFocus:!1,disableClose:!0,data:{controller:this.controller}}).afterClosed().subscribe(e=>{e&&this.refresh()})}refresh(){this.groupService.getGroups(this.controller).subscribe(e=>{this.isReady.set(!0),this.groups=e,this.dataSource.data=e,this.selection.clear()})}onDelete(e){this.dialog.open(zT,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:{groups:e}}).afterClosed().subscribe(n=>{if(n){let o=e.map(r=>this.groupService.delete(this.controller,r.user_group_id));lo(o).subscribe(()=>{this.refresh()},r=>{let a=r?.error?.message||"An error occurred while trying to delete group";this.toasterService.error(a)})}})}openGroupDetailDialog(e){this.dialog.open(mG,{panelClass:["base-dialog-panel","configurator-dialog-panel"],data:{group:e,controller:this.controller},maxWidth:"90vw"})}openGroupAiProfileDialog(e){this.dialog.open(pG,{panelClass:["base-dialog-panel","configurator-dialog-panel"],data:{group:e,controller:this.controller}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-group-management"]],viewQuery:function(n,o){if(n&1&&gn(mNe,5)(pNe,5),n&2){let r;gt(r=_t())&&(o.groupsPaginator=r),gt(r=_t())&&(o.groupsSort=r)}},inputs:{searchText:[1,"searchText"]},outputs:{searchText:"searchTextChange"},decls:2,vars:1,consts:[["groupsSort","matSort"],["groupsPaginator","matPaginator"],[1,"group-management__loader"],[1,"group-management__header"],[1,"group-management__title"],[1,"group-management__actions"],["mat-raised-button","","color","primary",1,"group-management__button",3,"click","disabled"],["mat-raised-button","","color","primary",1,"group-management__button",3,"click"],[1,"group-management__search-form"],[1,"group-management__search"],["matInput","","placeholder","Search group by name",3,"input","value"],[1,"group-management__table-container"],["mat-table","","matSort","",3,"dataSource"],["matColumnDef","select"],["mat-header-cell","","class","group-management__small-col",4,"matHeaderCellDef"],["mat-cell","","class","group-management__small-col",4,"matCellDef"],["matColumnDef","name"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","created_at"],["matColumnDef","updated_at"],["matColumnDef","is_builtin"],["matColumnDef","actions"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","","class","group-management__actions-cell",4,"matCellDef"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["showFirstLastButtons","","aria-label","Select page",3,"pageSizeOptions"],["mat-header-cell","",1,"group-management__small-col"],[3,"change","checked","indeterminate"],["mat-cell","",1,"group-management__small-col"],[3,"click","change","checked"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],[1,"group-management__link",3,"click"],["mat-header-cell",""],["mat-cell","",1,"group-management__actions-cell"],["mat-icon-button","","matTooltip","Edit group",3,"click"],["mat-icon-button","","matTooltip","AI Profiles",3,"click"],["mat-header-row",""],["mat-row",""],[1,"group-management__spinner"]],template:function(n,o){n&1&&A(0,ENe,37,10)(1,DNe,2,0,"div",2),n&2&&O(o.isReady()?0:1)},dependencies:[Z,nt,Ue,He,Ci,at,zr,Oo,ma,Ce,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,Tr,Ot,Ht,$,le,ze,te,se,Me,ke,we,Te,Dt,dG],styles:['[_nghost-%COMP%]{display:block;width:100%}.group-management__header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:20px 0;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.group-management__title[_ngcontent-%COMP%]{font-size:24px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.group-management__actions[_ngcontent-%COMP%]{display:flex;gap:12px}.group-management__button[_ngcontent-%COMP%]{margin:12px 0;height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px;transition:all .2s cubic-bezier(.4,0,.2,1)}.group-management__button[_ngcontent-%COMP%]:hover:not([disabled]){transform:translateY(-2px);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.group-management__button[_ngcontent-%COMP%]:active:not([disabled]){transform:translateY(0)}.group-management__search-form[_ngcontent-%COMP%]{display:flex;justify-content:center;margin:16px auto;width:100%;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .05s both}.group-management__search[_ngcontent-%COMP%]{width:100%;max-width:1000px}.group-management__table-container[_ngcontent-%COMP%]{border-radius:16px;overflow:hidden;width:100%;background:var(--mat-sys-surface);box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .15s both}.group-management__table-container--hidden[_ngcontent-%COMP%]{display:none}mat-row[_ngcontent-%COMP%]{transition:all .2s cubic-bezier(.4,0,.2,1);cursor:default;position:relative}mat-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 3%,transparent);transform:scale(1.002)}mat-row[_ngcontent-%COMP%]:nth-child(2n){background-color:color-mix(in srgb,var(--mat-sys-on-surface) 1%,transparent)}mat-row[_ngcontent-%COMP%]:nth-child(2n):hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 4%,transparent)}.mat-header-row[_ngcontent-%COMP%]{position:sticky;top:0;z-index:10;background:var(--mat-sys-surface)}.mat-header-row[_ngcontent-%COMP%] mat-header-cell[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--mat-sys-on-surface-variant);letter-spacing:.5px;text-transform:uppercase}mat-header-cell[_ngcontent-%COMP%], mat-cell[_ngcontent-%COMP%]{justify-content:center;padding:0 16px}mat-cell[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}mat-cell[mat-column=name][_ngcontent-%COMP%]{justify-content:flex-start;font-weight:500}.group-management__link[_ngcontent-%COMP%]{transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-block;transform-origin:left center;color:var(--mat-sys-primary);text-decoration:none;font-weight:500;position:relative;cursor:pointer}.group-management__link[_ngcontent-%COMP%]:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:2px;background-color:currentColor;transition:width .2s cubic-bezier(.4,0,.2,1)}.group-management__link[_ngcontent-%COMP%]:hover{color:color-mix(in srgb,var(--mat-sys-primary) 80%,black);transform:translateY(-2px)}.group-management__link[_ngcontent-%COMP%]:hover:after{width:100%}.group-management__overflow-text[_ngcontent-%COMP%]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding-right:5px}mat-cell[mat-column=actions][_ngcontent-%COMP%], mat-header-cell[mat-column=actions][_ngcontent-%COMP%]{justify-content:flex-end;padding:0 16px}mat-cell[mat-column=actions][_ngcontent-%COMP%]{overflow:visible}.group-management__small-col[_ngcontent-%COMP%]{width:60px;min-width:60px}.group-management__loader[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-height:200px}.group-management__spinner[_ngcontent-%COMP%]{width:48px;height:48px}mat-paginator[_ngcontent-%COMP%]{background:var(--mat-sys-surface);color:var(--mat-sys-on-surface)}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.group-management__header[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:16px;padding:16px 0}.group-management__actions[_ngcontent-%COMP%]{width:100%;flex-direction:column}.group-management__button[_ngcontent-%COMP%]{width:100%;height:44px;font-size:15px}.group-management__actions-cell[_ngcontent-%COMP%]{flex-wrap:wrap;gap:4px}mat-cell[_ngcontent-%COMP%]{padding:0 12px;font-size:13px}}'],changeDetection:0})}return t})();function PNe(t,i){t&1&&(s(0,"mat-error"),d(1,"Role name is required"),l())}function INe(t,i){t&1&&(s(0,"mat-error"),d(1,"Role name is incorrect"),l())}var GT=(()=>{class t{data;dialogRef=f(Pe);formBuilder=f(jt);cd=f(K);roleNameForm;constructor(e){this.data=e}ngOnInit(){this.roleNameForm=this.formBuilder.group({name:new re,description:new re}),this.cd.markForCheck()}get form(){return this.roleNameForm.controls}onAddClick(){if(this.roleNameForm.invalid)return;let e=this.roleNameForm.controls.name.value,n=this.roleNameForm.controls.description.value;this.dialogRef.close({name:e,description:n})}onNoClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-add-role-dialog"]],decls:19,vars:3,consts:[["mat-dialog-title",""],[3,"formGroup"],["mat-dialog-content",""],["appearance","fill",1,"full-width-field"],["matInput","","type","text","formControlName","name","placeholder","Please enter role name"],["matInput","","type","text","formControlName","description","placeholder","Please enter a description"],["mat-dialog-actions","","align","end"],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Create new role"),l(),s(2,"form",1)(3,"div",2)(4,"mat-form-field",3)(5,"mat-label"),d(6,"Role name"),l(),F(7,"input",4),A(8,PNe,2,0,"mat-error"),A(9,INe,2,0,"mat-error"),l(),s(10,"mat-form-field",3)(11,"mat-label"),d(12,"Description"),l(),F(13,"input",5),l()(),s(14,"div",6)(15,"button",7),v("click",function(){return o.onNoClick()}),d(16,"Cancel"),l(),s(17,"button",8),v("click",function(){return o.onAddClick()}),d(18,"Add Role"),l()()()),n&2&&(u(2),x("formGroup",o.roleNameForm),u(6),O(o.form.name!=null&&o.form.name.touched&&(o.form.name!=null&&o.form.name.errors)&&(o.form.name!=null&&o.form.name.errors.required)?8:-1),u(),O(o.form.name!=null&&o.form.name.errors&&(o.form.name!=null&&o.form.name.errors.invalidName)?9:-1))},dependencies:[Z,ct,Ue,vt,mt,He,pt,bt,Ce,Ve,Be,Wt,$,le,Me,ke,lt,Ni,we,Te],styles:[".full-width-field[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();var ANe=(t,i)=>i.name;function ONe(t,i){if(t&1&&(s(0,"li"),d(1),l()),t&2){let e=i.$implicit;u(),U(e.name)}}var WT=(()=>{class t{data;dialogRef=f(Pe);constructor(e){this.data=e}onCancel(){this.dialogRef.close()}onDelete(){this.dialogRef.close(!0)}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-delete-role-dialog"]],decls:10,vars:0,consts:[["mat-dialog-title",""],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",1,"add-project-button",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Are you sure you want to delete the following roles?"),l(),s(2,"ul"),J(3,ONe,2,1,"li",null,ANe),l(),s(5,"div",1)(6,"button",2),v("click",function(){return o.onCancel()}),d(7,"No, cancel"),l(),s(8,"button",3),v("click",function(){return o.onDelete()}),d(9," Yes, delete! "),l()()),n&2&&(u(3),ee(o.data.roles))},dependencies:[Z,Ce,Ve,Be,$,le],encapsulation:2,changeDetection:0})}return t})();var uG=(()=>{class t{transform(e,n){return n&&(n=n.trim().toLowerCase(),e.filter=n),e}static \u0275fac=function(n){return new(n||t)};static \u0275pipe=Cr({name:"roleFilter",type:t,pure:!0})}return t})();var NNe=["rolesPaginator"],RNe=["rolesSort"],FNe=()=>[5,10,20],LNe=(t,i)=>["/controller",t,"management","roles",i];function BNe(t,i){if(t&1){let e=j();s(0,"mat-header-cell",23)(1,"mat-checkbox",24),v("change",function(o){D(e);let r=b(2);return P(o?r.masterToggle():null)}),l()()}if(t&2){let e=b(2);u(),x("checked",e.selection.hasValue()&&e.isAllSelected())("indeterminate",e.selection.hasValue()&&!e.isAllSelected())}}function VNe(t,i){if(t&1){let e=j();s(0,"mat-cell",23)(1,"mat-checkbox",25),v("click",function(o){return o.stopPropagation()})("change",function(o){let r=D(e).$implicit,a=b(2);return P(o?a.selection.toggle(r):null)}),l()()}if(t&2){let e=i.$implicit,n=b(2);u(),x("checked",n.selection.isSelected(e))}}function zNe(t,i){t&1&&(s(0,"mat-header-cell",26),d(1,"Name"),l())}function jNe(t,i){if(t&1&&(s(0,"mat-cell")(1,"a",27),d(2),l()()),t&2){let e=i.$implicit,n=b(2);u(),x("routerLink",il(2,LNe,n.controller.id,e.role_id)),u(),X(" ",e.name," ")}}function $Ne(t,i){t&1&&(s(0,"mat-header-cell",26),d(1,"Description"),l())}function HNe(t,i){if(t&1&&(s(0,"mat-cell")(1,"span",28),d(2),l()()),t&2){let e=i.$implicit;u(2),U(e.description)}}function UNe(t,i){t&1&&F(0,"mat-header-row")}function GNe(t,i){t&1&&F(0,"mat-row")}function WNe(t,i){if(t&1){let e=j();s(0,"header",3)(1,"h1",4),d(2,"Roles"),l(),s(3,"div",5)(4,"button",6),v("click",function(){D(e);let o=b();return P(o.onDelete(o.selection.selected))}),d(5," Delete roles "),l(),s(6,"button",7),v("click",function(){D(e);let o=b();return P(o.addRole())}),d(7,"Add Role"),l()()(),s(8,"form",8)(9,"mat-form-field",9)(10,"input",10),v("input",function(o){D(e);let r=b();return P(r.searchText.set(o.target.value))}),l()()(),s(11,"div",11)(12,"mat-table",12,0),on(14,"roleFilter"),qe(15,13),Ae(16,BNe,2,2,"mat-header-cell",14)(17,VNe,2,1,"mat-cell",15),Xe(),qe(18,16),Ae(19,zNe,2,0,"mat-header-cell",17)(20,jNe,3,5,"mat-cell",18),Xe(),qe(21,19),Ae(22,$Ne,2,0,"mat-header-cell",17)(23,HNe,3,1,"mat-cell",18),Xe(),Ae(24,UNe,1,0,"mat-header-row",20)(25,GNe,1,0,"mat-row",21),l(),F(26,"mat-paginator",22,1),l()}if(t&2){let e=b();u(4),x("disabled",e.selection.selected.length===0),u(6),x("value",e.searchText()),u(2),x("dataSource",$r(14,6,e.dataSource,e.searchText())),u(12),x("matHeaderRowDef",e.displayedColumns),u(),x("matRowDefColumns",e.displayedColumns),u(),x("pageSizeOptions",Jt(9,FNe))}}function qNe(t,i){t&1&&(s(0,"div",2),F(1,"mat-spinner",29),l())}var qT=(()=>{class t{route=f(Ye);router=f(ut);roleService=f(Wl);progressService=f(zo);controllerService=f(We);dialog=f(Je);toasterService=f(fe);controller;dataSource=new Nr;displayedColumns=["select","name","description"];selection=new ha(!0,[]);searchText=ae("");rolesPaginator;rolesSort;isReady=me(!1);constructor(){}ngOnInit(){let e=this.route.parent.snapshot.paramMap.get("controller_id");this.controllerService.get(+e).then(n=>{this.controller=n,this.refresh()})}ngAfterViewInit(){this.rolesPaginator.changes.subscribe(e=>{this.dataSource.paginator=e.first}),this.rolesSort.changes.subscribe(e=>{this.dataSource.sort=e.first}),this.dataSource.sortingDataAccessor=(e,n)=>n==="name"?e[n]?e[n].toLowerCase():"":e[n]}refresh(){this.roleService.get(this.controller).subscribe(e=>{this.isReady.set(!0),this.dataSource.data=e},e=>{this.progressService.setError(e)})}addRole(){let e=this.dialog.open(GT,{width:"400px",autoFocus:!1,disableClose:!0,data:{controller:this.controller}}).afterClosed().subscribe(n=>{n&&this.roleService.create(this.controller,n).subscribe(()=>{this.toasterService.success(`${n.name} role created`),this.refresh()},o=>this.toasterService.error(`${o.message}
|
||
${o.error?.message||""}`))})}isAllSelected(){let e=this.selection.selected.length,n=this.dataSource.data.length;return e===n}masterToggle(){this.isAllSelected()?this.selection.clear():this.dataSource.data.forEach(e=>this.selection.select(e))}onDelete(e){this.dialog.open(WT,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:{roles:e}}).afterClosed().subscribe(n=>{if(n){let o=e.map(r=>this.roleService.delete(this.controller,r.role_id));lo(o).subscribe(()=>{this.refresh()},r=>{let a=r?.error?.message||"An error occurred while trying to delete role";this.toasterService.error(a)})}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-role-management"]],viewQuery:function(n,o){if(n&1&&gn(NNe,5)(RNe,5),n&2){let r;gt(r=_t())&&(o.rolesPaginator=r),gt(r=_t())&&(o.rolesSort=r)}},inputs:{searchText:[1,"searchText"]},outputs:{searchText:"searchTextChange"},decls:2,vars:1,consts:[["rolesSort","matSort"],["rolesPaginator","matPaginator"],[1,"role-management__loader"],[1,"role-management__header"],[1,"role-management__title"],[1,"role-management__actions"],["mat-raised-button","","color","primary",1,"role-management__button",3,"click","disabled"],["mat-raised-button","","color","primary",1,"role-management__button",3,"click"],[1,"role-management__search-form"],[1,"role-management__search"],["matInput","","placeholder","Search role by name",3,"input","value"],[1,"role-management__table-container"],["matSort","",3,"dataSource"],["matColumnDef","select"],["class","role-management__small-col",4,"matHeaderCellDef"],["class","role-management__small-col",4,"matCellDef"],["matColumnDef","name"],["mat-sort-header","",4,"matHeaderCellDef"],[4,"matCellDef"],["matColumnDef","description"],[4,"matHeaderRowDef"],[4,"matRowDef","matRowDefColumns"],["showFirstLastButtons","","aria-label","Select page",3,"pageSizeOptions"],[1,"role-management__small-col"],[3,"change","checked","indeterminate"],[3,"click","change","checked"],["mat-sort-header",""],[1,"role-management__link",3,"routerLink"],[1,"role-management__overflow-text"],[1,"role-management__spinner"]],template:function(n,o){n&1&&A(0,WNe,28,10)(1,qNe,2,0,"div",2),n&2&&O(o.isReady()?0:1)},dependencies:[Z,nt,Ue,He,Ci,at,cn,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,Tr,zr,Oo,ma,Ot,Ht,$,le,te,Me,ke,we,Te,Ce,Si,Xo,uG],styles:['[_nghost-%COMP%]{display:block;width:100%}.role-management__header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:20px 0;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.role-management__title[_ngcontent-%COMP%]{font-size:24px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.role-management__actions[_ngcontent-%COMP%]{display:flex;gap:12px}.role-management__button[_ngcontent-%COMP%]{margin:12px 0;height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px;transition:all .2s cubic-bezier(.4,0,.2,1)}.role-management__button[_ngcontent-%COMP%]:hover:not([disabled]){transform:translateY(-2px);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.role-management__button[_ngcontent-%COMP%]:active:not([disabled]){transform:translateY(0)}.role-management__search-form[_ngcontent-%COMP%]{display:flex;justify-content:center;margin:16px auto;width:100%;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .05s both}.role-management__search[_ngcontent-%COMP%]{width:100%;max-width:1000px}.role-management__table-container[_ngcontent-%COMP%]{border-radius:16px;overflow:hidden;width:100%;background:var(--mat-sys-surface);box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .15s both}.role-management__table-container--hidden[_ngcontent-%COMP%]{display:none}mat-row[_ngcontent-%COMP%]{transition:all .2s cubic-bezier(.4,0,.2,1);cursor:default;position:relative}mat-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 3%,transparent);transform:scale(1.002)}mat-row[_ngcontent-%COMP%]:nth-child(2n){background-color:color-mix(in srgb,var(--mat-sys-on-surface) 1%,transparent)}mat-row[_ngcontent-%COMP%]:nth-child(2n):hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 4%,transparent)}.mat-header-row[_ngcontent-%COMP%]{position:sticky;top:0;z-index:10;background:var(--mat-sys-surface)}.mat-header-row[_ngcontent-%COMP%] mat-header-cell[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--mat-sys-on-surface-variant);letter-spacing:.5px;text-transform:uppercase}mat-header-cell[_ngcontent-%COMP%], mat-cell[_ngcontent-%COMP%]{justify-content:center;padding:0 16px}mat-cell[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}mat-cell[mat-column=name][_ngcontent-%COMP%]{justify-content:flex-start;font-weight:500}.role-management__link[_ngcontent-%COMP%]{transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-block;transform-origin:left center;color:var(--mat-sys-primary);text-decoration:none;font-weight:500;position:relative}.role-management__link[_ngcontent-%COMP%]:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:2px;background-color:currentColor;transition:width .2s cubic-bezier(.4,0,.2,1)}.role-management__link[_ngcontent-%COMP%]:hover{color:color-mix(in srgb,var(--mat-sys-primary) 80%,black);transform:translateY(-2px)}.role-management__link[_ngcontent-%COMP%]:hover:after{width:100%}.role-management__overflow-text[_ngcontent-%COMP%]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding-right:5px}mat-cell[mat-column=actions][_ngcontent-%COMP%], mat-header-cell[mat-column=actions][_ngcontent-%COMP%]{justify-content:flex-end;padding:0 16px}mat-cell[mat-column=actions][_ngcontent-%COMP%]{overflow:visible}.role-management__small-col[_ngcontent-%COMP%]{width:60px;min-width:60px}.role-management__loader[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-height:200px}.role-management__spinner[_ngcontent-%COMP%]{width:48px;height:48px}mat-paginator[_ngcontent-%COMP%]{background:var(--mat-sys-surface);color:var(--mat-sys-on-surface)}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.role-management__header[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:16px;padding:16px 0}.role-management__actions[_ngcontent-%COMP%]{width:100%;flex-direction:column}.role-management__button[_ngcontent-%COMP%]{width:100%;height:44px;font-size:15px}.role-management__actions-cell[_ngcontent-%COMP%]{flex-wrap:wrap;gap:4px}mat-cell[_ngcontent-%COMP%]{padding:0 12px;font-size:13px}}'],changeDetection:0})}return t})();var hG=(()=>{class t{httpController;constructor(e){this.httpController=e}get(e){return this.httpController.get(e,"/access/privileges")}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var pC=class{ownedPrivileges;change={add:new Set,delete:new Set};constructor(i){this.ownedPrivileges=i}add(i){this.change.delete.has(i)&&this.change.delete.delete(i),!this.ownedPrivileges.includes(i)&&this.change.add.add(i)}delete(i){this.change.add.has(i)&&this.change.add.delete(i),this.ownedPrivileges.includes(i)&&this.change.delete.add(i)}isAdded(i){return this.change.add.has(i)}isDeleted(i){return this.change.delete.has(i)}get(){return{add:Array.from(this.change.add),delete:Array.from(this.change.delete)}}};var fG=(()=>{class t{transform(e){if(e){let n={};e.forEach(r=>{let[a,c]=r.name.split(".");n.hasOwnProperty(a)?n[a].push({verb:c,privilege:r}):n[a]=[{verb:c,privilege:r}]});let o=[];for(let[r,a]of Object.entries(n))o.push({key:r,values:a});return o}}static \u0275fac=function(n){return new(n||t)};static \u0275pipe=Cr({name:"groupPrivileges",type:t,pure:!0})}return t})();var XNe=(t,i)=>i.key,gG=(t,i)=>i.privilege.privilege_id;function QNe(t,i){if(t&1){let e=j();s(0,"button",7),v("click",function(){D(e);let o=b(2);return P(o.editMode=!0)}),s(1,"mat-icon"),d(2,"edit"),l()()}}function YNe(t,i){if(t&1){let e=j();s(0,"button",8),v("click",function(){D(e);let o=b(2);return P(o.editMode=!1)}),d(1,"Cancel"),l(),s(2,"button",9),v("click",function(){D(e);let o=b(2);return P(o.close())}),d(3,"Update"),l()}}function KNe(t,i){if(t&1&&(A(0,QNe,3,0,"button",6),A(1,YNe,4,0)),t&2){let e=b();O(e.editMode?-1:0),u(),O(e.editMode?1:-1)}}function ZNe(t,i){if(t&1&&(s(0,"mat-icon",15),d(1,"info"),l()),t&2){let e=b().$implicit;x("matTooltip",e.privilege.description)}}function JNe(t,i){if(t&1){let e=j();s(0,"div",13)(1,"mat-checkbox",14),v("change",function(o){let r=D(e).$implicit,a=b(4);return P(a.onPrivilegeChange(o.checked,r.privilege))}),l(),s(2,"span"),d(3),l(),A(4,ZNe,2,1,"mat-icon",15),l()}if(t&2){let e=i.$implicit,n=b(4);u(),x("checked",n.ownedPrivilegesList().includes(e.privilege.privilege_id)),u(),je("privileges__verb--added",n.changer.isAdded(e.privilege.privilege_id))("privileges__verb--deleted",n.changer.isDeleted(e.privilege.privilege_id)),u(),X(" ",e.verb," "),u(),O(e.privilege.description?4:-1)}}function e5e(t,i){if(t&1&&(s(0,"div",10)(1,"div",11),d(2),l(),s(3,"div",12),J(4,JNe,5,7,"div",13,gG),l()()),t&2){let e=b().$implicit;u(2),X("",e.key,":"),u(2),ee(e.values)}}function t5e(t,i){if(t&1&&(s(0,"span",13),d(1),l()),t&2){let e=b().$implicit;u(),X(" ",e.verb," ")}}function n5e(t,i){if(t&1&&A(0,t5e,2,1,"span",13),t&2){let e=i.$implicit,n=b(5);O(n.ownedPrivilegesList().includes(e.privilege.privilege_id)?0:-1)}}function i5e(t,i){if(t&1&&(s(0,"div",10)(1,"div",11),d(2),l(),s(3,"div",12),J(4,n5e,1,1,null,null,gG),l()()),t&2){let e=b(2).$implicit;u(2),X("",e.key,":"),u(2),ee(e.values)}}function o5e(t,i){if(t&1&&A(0,i5e,6,1,"div",10),t&2){let e=b().$implicit,n=b(2);O(n.ownedPrivilegesName().includes(e.key)?0:-1)}}function r5e(t,i){if(t&1&&A(0,e5e,6,1,"div",10)(1,o5e,1,1),t&2){let e=b(2);O(e.editMode?0:1)}}function a5e(t,i){if(t&1&&(s(0,"div",5),J(1,r5e,2,1,null,null,XNe),on(3,"groupPrivileges"),l()),t&2){let e=b();u(),ee(oi(3,0,e.privileges()))}}var XT=(()=>{class t{disable=oe(!0);privileges=oe([]);set ownedPrivilege(e){e&&(this.ownedPrivilegesName.set(e.map(n=>n.name.split(".")[0])),this.ownedPrivilegesList.set(e.map(n=>n.privilege_id)))}update=new ve;ownedPrivilegesName=me([]);ownedPrivilegesList=me([]);changer=new pC([]);editModeState=me(!1);collapsedState=me(!0);get editMode(){return this.editModeState()}set editMode(e){e&&(this.changer=new pC(this.ownedPrivilegesList())),this.editModeState.set(e)}get collapsed(){return this.collapsedState()}toggleCollapsed(){this.collapsedState.set(!this.collapsedState())}constructor(){}onPrivilegeChange(e,n){let o=n.privilege_id;e?this.changer.add(o):this.changer.delete(o)}close(){this.update.emit(this.changer.get()),this.editMode=!1}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-privilege"]],inputs:{disable:[1,"disable"],privileges:[1,"privileges"],ownedPrivilege:"ownedPrivilege"},outputs:{update:"update"},decls:10,vars:6,consts:[[1,"privileges"],[1,"privileges__header",3,"click"],[1,"privileges__title"],[1,"privileges__actions"],["mat-icon-button","",3,"click","matTooltip"],[1,"privileges__list"],["mat-icon-button","","matTooltip","Edit privileges"],["mat-icon-button","","matTooltip","Edit privileges",3,"click"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"],[1,"privileges__group"],[1,"privileges__key"],[1,"privileges__values"],[1,"privileges__verb"],[1,"privileges__checkbox",3,"change","checked"],["matTooltipPosition","right",1,"privileges__info-icon",3,"matTooltip"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1),v("click",function(){return o.collapsed&&o.toggleCollapsed()}),s(2,"h3",2),d(3,"Privileges"),l(),s(4,"div",3)(5,"button",4),v("click",function(){return o.toggleCollapsed()}),s(6,"mat-icon"),d(7),l()(),A(8,KNe,2,2),l()(),A(9,a5e,4,2,"div",5),l()),n&2&&(u(),je("privileges__header--clickable",o.collapsed),u(4),x("matTooltip",o.collapsed?"Expand":"Collapse"),u(2),U(o.collapsed?"expand_more":"expand_less"),u(),O(o.disable()?-1:8),u(),O(o.collapsed?-1:9))},dependencies:[Z,$,le,ze,te,se,Ot,Ht,Gt,Kt,fG],styles:["app-privilege[_ngcontent-%COMP%]{display:block;width:100%}.privileges[_ngcontent-%COMP%]{padding:16px;background:var(--mat-sys-surface);border-radius:12px;border:1px solid var(--mat-sys-outline-variant)}.privileges__header[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--mat-sys-outline-variant)}.privileges__header--clickable[_ngcontent-%COMP%]{cursor:pointer}.privileges__header--clickable[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-low);margin:-16px -16px 0;padding:16px;border-radius:12px 12px 0 0}.privileges__title[_ngcontent-%COMP%]{font-size:18px;font-weight:600;color:var(--mat-sys-on-surface);margin:0}.privileges__actions[_ngcontent-%COMP%]{display:flex;gap:8px}.privileges__list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.privileges__group[_ngcontent-%COMP%]{display:flex;flex-direction:row;padding:12px;background:var(--mat-sys-surface-container-low);border-radius:8px;min-height:40px;align-items:flex-start}.privileges__key[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);display:flex;flex-shrink:0;width:120px;align-items:center;height:40px;font-weight:500}.privileges__values[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;padding:8px;min-height:40px;align-items:center}.privileges__verb[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:4px 8px;border-radius:4px;white-space:nowrap;background:var(--mat-sys-surface-container-high);color:var(--mat-sys-on-surface);font-size:13px}.privileges__verb--added[_ngcontent-%COMP%]{background:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container)}.privileges__verb--deleted[_ngcontent-%COMP%]{background:var(--mat-sys-error-container);color:var(--mat-sys-on-error-container);text-decoration:line-through}.privileges__checkbox[_ngcontent-%COMP%]{margin-right:8px}.privileges__info-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px;margin-left:4px;color:var(--mat-sys-on-surface-variant);cursor:help;opacity:.6;transition:opacity .2s ease}.privileges__info-icon[_ngcontent-%COMP%]:hover{opacity:1;color:var(--mat-sys-primary)}"],changeDetection:0})}return t})();var s5e=t=>["/controller",t,"management","roles"];function l5e(t,i){if(t&1&&(s(0,"div",10)(1,"div",21)(2,"span",22),d(3,"Role name"),l(),s(4,"span",23),d(5),on(6,"async"),l()(),s(7,"div",21)(8,"span",22),d(9,"Description"),l(),s(10,"span",23),d(11),on(12,"async"),l()()()),t&2){let e,n,o=b();u(5),U((e=oi(6,2,o.$role))==null?null:e.name),u(6),U(((n=oi(12,4,o.$role))==null?null:n.description)||"-")}}function c5e(t,i){if(t&1&&(s(0,"form",11)(1,"mat-form-field",24)(2,"mat-label"),d(3,"Role name"),l(),F(4,"input",25),l(),s(5,"mat-form-field",24)(6,"mat-label"),d(7,"Description"),l(),F(8,"input",26),l()()),t&2){let e=b();x("formGroup",e.editRoleForm)}}var QT=(()=>{class t{roleService=f(Wl);toastService=f(fe);route=f(Ye);privilegeService=f(hG);fb=f(zC);controller;$role=new qt({role_id:"",description:"",updated_at:"",is_builtin:!1,privileges:[],name:"",created_at:""});editRoleForm;$ownedPrivilegesId=this.$role.pipe(yt(e=>e.privileges));privileges;roleId;constructor(){this.$role.subscribe(e=>{this.editRoleForm=this.fb.group({rolename:[e.name],description:[e.description]})})}ngOnInit(){this.route.data.subscribe(e=>{this.controller=e.controller,this.roleId=e.role.role_id,this.privileges=this.privilegeService.get(this.controller),this.roleService.getById(this.controller,this.roleId).subscribe(n=>this.$role.next(n))})}onUpdate(){let e=this.$role.value;e.name=this.editRoleForm.get("rolename")?.value,e.description=this.editRoleForm.get("description")?.value,this.roleService.update(this.controller,e).subscribe(()=>{this.toastService.success(`Role ${e.name} was updated`),this.roleService.getById(this.controller,this.roleId).subscribe(n=>this.$role.next(n))},n=>{this.toastService.error(`${n.message}
|
||
${n.error?.message||""}`)})}onPrivilegesUpdate(e){let n=[];for(let o of e.add)n.push(this.roleService.setPrivileges(this.controller,this.roleId,o));for(let o of e.delete)n.push(this.roleService.removePrivileges(this.controller,this.roleId,o));lo(n).subscribe(()=>{this.roleService.getById(this.controller,this.roleId).subscribe(o=>this.$role.next(o))})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-role-detail"]],decls:55,vars:35,consts:[[1,"role-detail"],[1,"role-detail__header"],[1,"role-detail__header-content"],["mat-icon-button","","matTooltip","Back to role management","matTooltipClass","custom-tooltip",1,"role-detail__back-btn",3,"routerLink"],["aria-label","Back to role management"],[1,"role-detail__title"],[1,"role-detail__content"],[1,"role-detail__main"],[1,"role-detail__section"],[1,"role-detail__card"],[1,"role-detail__readonly"],[1,"role-detail__form",3,"formGroup"],[1,"role-detail__info-grid"],[1,"role-detail__info-item"],[1,"role-detail__info-label"],[1,"role-detail__info-value"],[1,"role-detail__info-item","role-detail__info-item--full"],[1,"role-detail__info-value","role-detail__info-value--mono"],[1,"role-detail__actions"],["mat-raised-button","","color","primary",3,"click","disabled"],[3,"update","disable","ownedPrivilege","privileges"],[1,"role-detail__readonly-item"],[1,"role-detail__readonly-label"],[1,"role-detail__readonly-value"],["appearance","fill",1,"role-detail__field"],["matInput","","type","text","formControlName","rolename"],["matInput","","type","text","formControlName","description"]],template:function(n,o){if(n&1&&(s(0,"div",0)(1,"header",1)(2,"div",2)(3,"a",3)(4,"mat-icon",4),d(5,"keyboard_arrow_left"),l()(),s(6,"h1",5),d(7),on(8,"async"),l()()(),s(9,"div",6)(10,"div",7)(11,"section",8)(12,"mat-card",9)(13,"mat-card-header")(14,"mat-card-title"),d(15,"Role Details"),l()(),s(16,"mat-card-content"),A(17,l5e,13,6,"div",10),on(18,"async"),I5(19,c5e,9,1,"form",11),s(20,"div",12)(21,"div",13)(22,"span",14),d(23,"Creation date"),l(),s(24,"span",15),d(25),on(26,"async"),l()(),s(27,"div",13)(28,"span",14),d(29,"Last update"),l(),s(30,"span",15),d(31),on(32,"async"),l()(),s(33,"div",16)(34,"span",14),d(35,"UUID"),l(),s(36,"span",17),d(37),on(38,"async"),l()(),s(39,"div",13)(40,"span",14),d(41,"Is built-in"),l(),s(42,"span",15),d(43),on(44,"async"),l()()()(),s(45,"mat-card-actions",18)(46,"button",19),on(47,"async"),on(48,"async"),v("click",function(){return o.onUpdate()}),d(49," Update Role "),l()()()(),s(50,"section",8)(51,"app-privilege",20),on(52,"async"),on(53,"async"),on(54,"async"),v("update",function(a){return o.onPrivilegesUpdate(a)}),l()()()()()),n&2){let r,a,c,m,p,h,g,M;u(3),x("routerLink",ln(33,s5e,o.controller.id)),u(4),X("Role ",(r=oi(8,11,o.$role))==null?null:r.name),u(10),O((a=oi(18,13,o.$role))!=null&&a.is_builtin?17:19),u(8),U((c=oi(26,15,o.$role))==null?null:c.created_at),u(6),U((m=oi(32,17,o.$role))==null?null:m.updated_at),u(6),U((p=oi(38,19,o.$role))==null?null:p.role_id),u(6),U((h=oi(44,21,o.$role))!=null&&h.is_builtin?"YES":"NO"),u(3),x("disabled",!oi(47,23,o.editRoleForm.valueChanges)&&o.editRoleForm.valid||((g=oi(48,25,o.$role))==null?null:g.is_builtin)),u(5),x("disable",(M=oi(52,27,o.$role))==null?null:M.is_builtin)("ownedPrivilege",oi(53,29,o.$ownedPrivilegesId))("privileges",oi(54,31,o.privileges))}},dependencies:[Z,ct,Ue,vt,mt,He,pt,bt,at,cn,Dt,Tn,Wy,Sl,ed,Jc,Me,ke,lt,we,Te,$,le,ze,te,se,Gt,Kt,XT,Jr],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.role-detail[_ngcontent-%COMP%]{padding:20px 24px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out;display:flex;flex-direction:column;align-items:center}.role-detail__header[_ngcontent-%COMP%]{margin-bottom:24px;width:100%;max-width:1000px}.role-detail__header-content[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.role-detail__back-btn[_ngcontent-%COMP%]{flex-shrink:0}.role-detail__title[_ngcontent-%COMP%]{font-size:24px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.role-detail__content[_ngcontent-%COMP%]{width:100%;max-width:1000px}.role-detail__main[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:24px;width:100%;max-width:1000px}.role-detail__section[_ngcontent-%COMP%]{width:100%}.role-detail__card[_ngcontent-%COMP%]{border-radius:12px}.role-detail__card[_ngcontent-%COMP%] mat-card-header[_ngcontent-%COMP%]{padding:16px 16px 0}.role-detail__card[_ngcontent-%COMP%] mat-card-title[_ngcontent-%COMP%]{font-size:18px;font-weight:600;color:var(--mat-sys-on-surface)}.role-detail__card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%]{padding:16px}.role-detail__card[_ngcontent-%COMP%] mat-card-actions[_ngcontent-%COMP%]{padding:0 16px 16px}.role-detail__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.role-detail__field[_ngcontent-%COMP%]{width:100%}.role-detail__readonly[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px;padding:16px;background:var(--mat-sys-surface-container-low);border-radius:8px;margin-bottom:16px}.role-detail__readonly-item[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.role-detail__readonly-label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--mat-sys-on-surface-variant);text-transform:uppercase;letter-spacing:.5px}.role-detail__readonly-value[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}.role-detail__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;padding-top:8px}.role-detail__info-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;padding-top:16px;border-top:1px solid var(--mat-sys-outline-variant)}@media(max-width:600px){.role-detail__info-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}}.role-detail__info-item[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.role-detail__info-item--full[_ngcontent-%COMP%]{grid-column:1/-1}.role-detail__info-label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--mat-sys-on-surface-variant);text-transform:uppercase;letter-spacing:.5px}.role-detail__info-value[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}.role-detail__info-value--mono[_ngcontent-%COMP%]{font-family:monospace;font-size:12px}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}"],changeDetection:0})}return t})();var _G=(()=>{class t{controllerService;roleService;constructor(e,n){this.controllerService=e,this.roleService=n}resolve(e,n){let o=e.paramMap.get("controller_id"),r=e.paramMap.get("role_id");return or(this.controllerService.get(+o)).pipe(fn(a=>this.roleService.getById(a,r)),hi(a=>zi(()=>a)))}static \u0275fac=function(n){return new(n||t)(ge(We),ge(Wl))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var r5=class{dataNodes;expansionModel=new ha(!0);trackBy;getLevel;isExpandable;getChildren;toggle(i){this.expansionModel.toggle(this._trackByValue(i))}expand(i){this.expansionModel.select(this._trackByValue(i))}collapse(i){this.expansionModel.deselect(this._trackByValue(i))}isExpanded(i){return this.expansionModel.isSelected(this._trackByValue(i))}toggleDescendants(i){this.expansionModel.isSelected(this._trackByValue(i))?this.collapseDescendants(i):this.expandDescendants(i)}collapseAll(){this.expansionModel.clear()}expandDescendants(i){let e=[i];e.push(...this.getDescendants(i)),this.expansionModel.select(...e.map(n=>this._trackByValue(n)))}collapseDescendants(i){let e=[i];e.push(...this.getDescendants(i)),this.expansionModel.deselect(...e.map(n=>this._trackByValue(n)))}_trackByValue(i){return this.trackBy?this.trackBy(i):i}};var YT=class extends r5{getChildren;options;constructor(i,e){super(),this.getChildren=i,this.options=e,this.options&&(this.trackBy=this.options.trackBy),this.options?.isExpandable&&(this.isExpandable=this.options.isExpandable)}expandAll(){this.expansionModel.clear();let i=this.dataNodes.reduce((e,n)=>[...e,...this.getDescendants(n),n],[]);this.expansionModel.select(...i.map(e=>this._trackByValue(e)))}getDescendants(i){let e=[];return this._getDescendants(e,i),e.splice(1)}_getDescendants(i,e){i.push(e);let n=this.getChildren(e);Array.isArray(n)?n.forEach(o=>this._getDescendants(i,o)):cm(n)&&n.pipe(wi(1),Pn(Boolean)).subscribe(o=>{for(let r of o)this._getDescendants(i,r)})}},s5=new kt("CDK_TREE_NODE_OUTLET_NODE"),P_=(()=>{class t{viewContainer=f(co);_node=f(s5,{optional:!0});constructor(){}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkTreeNodeOutlet",""]]})}return t})(),a5=class{$implicit;level;index;count;constructor(i){this.$implicit=i}},KT=(()=>{class t{template=f(So);when;constructor(){}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkTreeNodeDef",""]],inputs:{when:[0,"cdkTreeNodeDefWhen","when"]}})}return t})();function vG(){return Error("Could not find a tree control, levelAccessor, or childrenAccessor for the tree.")}var uC=(()=>{class t{_differs=f(Sd);_changeDetectorRef=f(K);_elementRef=f(Lt);_dir=f(Hr);_onDestroy=new Le;_dataDiffer;_defaultNodeDef=null;_dataSubscription;_levels=new Map;_parents=new Map;_ariaSets=new Map;get dataSource(){return this._dataSource}set dataSource(e){this._dataSource!==e&&this._switchDataSource(e)}_dataSource;treeControl;levelAccessor;childrenAccessor;trackBy;expansionKey;_nodeOutlet;_nodeDefs;viewChange=new qt({start:0,end:Number.MAX_VALUE});_expansionModel;_flattenedNodes=new qt([]);_nodeType=new qt(null);_nodes=new qt(new Map);_keyManagerNodes=new qt([]);_keyManagerFactory=f(vR);_keyManager;_viewInit=!1;constructor(){}ngAfterContentInit(){this._initializeKeyManager()}ngAfterContentChecked(){this._updateDefaultNodeDefinition(),this._subscribeToDataChanges()}ngOnDestroy(){this._nodeOutlet.viewContainer.clear(),this._nodes.complete(),this._keyManagerNodes.complete(),this._nodeType.complete(),this._flattenedNodes.complete(),this.viewChange.complete(),this._onDestroy.next(),this._onDestroy.complete(),this._dataSource&&typeof this._dataSource.disconnect=="function"&&this.dataSource.disconnect(this),this._dataSubscription?.unsubscribe(),this._dataSubscription=void 0,this._keyManager?.destroy()}ngOnInit(){this._checkTreeControlUsage(),this._initializeDataDiffer()}ngAfterViewInit(){this._viewInit=!0}_updateDefaultNodeDefinition(){let e=this._nodeDefs.filter(n=>!n.when);e.length>1,this._defaultNodeDef=e[0]}_setNodeTypeIfUnset(e){this._nodeType.value===null&&this._nodeType.next(e)}_switchDataSource(e){this._dataSource&&typeof this._dataSource.disconnect=="function"&&this.dataSource.disconnect(this),this._dataSubscription?.unsubscribe(),this._dataSubscription=void 0,e||this._nodeOutlet.viewContainer.clear(),this._dataSource=e,this._nodeDefs&&this._subscribeToDataChanges()}_getExpansionModel(){return this.treeControl?this.treeControl.expansionModel:(this._expansionModel??=new ha(!0),this._expansionModel)}_subscribeToDataChanges(){if(this._dataSubscription)return;let e;Ih(this._dataSource)?e=this._dataSource.connect(this):cm(this._dataSource)?e=this._dataSource:Array.isArray(this._dataSource)&&(e=xt(this._dataSource)),e&&(this._dataSubscription=this._getRenderData(e).pipe(rt(this._onDestroy)).subscribe(n=>{this._renderDataChanges(n)}))}_getRenderData(e){let n=this._getExpansionModel();return rr([e,this._nodeType,n.changed.pipe(li(null),vi(o=>{this._emitExpansionChanges(o)}))]).pipe(fn(([o,r])=>r===null?xt({renderNodes:o,flattenedNodes:null,nodeType:r}):this._computeRenderingData(o,r).pipe(yt(a=>tt(H({},a),{nodeType:r})))))}_renderDataChanges(e){if(e.nodeType===null){this.renderNodeChanges(e.renderNodes);return}this._updateCachedData(e.flattenedNodes),this.renderNodeChanges(e.renderNodes),this._updateKeyManagerItems(e.flattenedNodes)}_emitExpansionChanges(e){if(!e)return;let n=this._nodes.value;for(let o of e.added)n.get(o)?._emitExpansionState(!0);for(let o of e.removed)n.get(o)?._emitExpansionState(!1)}_initializeKeyManager(){let e=rr([this._keyManagerNodes,this._nodes]).pipe(yt(([o,r])=>o.reduce((a,c)=>{let m=r.get(this._getExpansionKey(c));return m&&a.push(m),a},[]))),n={trackBy:o=>this._getExpansionKey(o.data),skipPredicate:o=>!!o.isDisabled,typeAheadDebounceInterval:!0,horizontalOrientation:this._dir.value};this._keyManager=this._keyManagerFactory(e,n)}_initializeDataDiffer(){let e=this.trackBy??((n,o)=>this._getExpansionKey(o));this._dataDiffer=this._differs.find([]).create(e)}_checkTreeControlUsage(){}renderNodeChanges(e,n=this._dataDiffer,o=this._nodeOutlet.viewContainer,r){let a=n.diff(e);!a&&!this._viewInit||(a?.forEachOperation((c,m,p)=>{if(c.previousIndex==null)this.insertNode(e[p],p,o,r);else if(p==null)o.remove(m);else{let h=o.get(m);o.move(h,p)}}),a?.forEachIdentityChange(c=>{let m=c.item;if(c.currentIndex!=null){let p=o.get(c.currentIndex);p.context.$implicit=m}}),r?this._changeDetectorRef.markForCheck():this._changeDetectorRef.detectChanges())}_getNodeDef(e,n){if(this._nodeDefs.length===1)return this._nodeDefs.first;let o=this._nodeDefs.find(r=>r.when&&r.when(n,e))||this._defaultNodeDef;return o}insertNode(e,n,o,r){let a=this._getLevelAccessor(),c=this._getNodeDef(e,n),m=this._getExpansionKey(e),p=new a5(e);p.index=n,r??=this._parents.get(m)??void 0,a?p.level=a(e):r!==void 0&&this._levels.has(this._getExpansionKey(r))?p.level=this._levels.get(this._getExpansionKey(r))+1:p.level=0,this._levels.set(m,p.level),(o||this._nodeOutlet.viewContainer).createEmbeddedView(c.template,p,n),I_.mostRecentTreeNode&&(I_.mostRecentTreeNode.data=e)}isExpanded(e){return!!(this.treeControl?.isExpanded(e)||this._expansionModel?.isSelected(this._getExpansionKey(e)))}toggle(e){this.treeControl?this.treeControl.toggle(e):this._expansionModel&&this._expansionModel.toggle(this._getExpansionKey(e))}expand(e){this.treeControl?this.treeControl.expand(e):this._expansionModel&&this._expansionModel.select(this._getExpansionKey(e))}collapse(e){this.treeControl?this.treeControl.collapse(e):this._expansionModel&&this._expansionModel.deselect(this._getExpansionKey(e))}toggleDescendants(e){this.treeControl?this.treeControl.toggleDescendants(e):this._expansionModel&&(this.isExpanded(e)?this.collapseDescendants(e):this.expandDescendants(e))}expandDescendants(e){if(this.treeControl)this.treeControl.expandDescendants(e);else if(this._expansionModel){let n=this._expansionModel;n.select(this._getExpansionKey(e)),this._getDescendants(e).pipe(wi(1),rt(this._onDestroy)).subscribe(o=>{n.select(...o.map(r=>this._getExpansionKey(r)))})}}collapseDescendants(e){if(this.treeControl)this.treeControl.collapseDescendants(e);else if(this._expansionModel){let n=this._expansionModel;n.deselect(this._getExpansionKey(e)),this._getDescendants(e).pipe(wi(1),rt(this._onDestroy)).subscribe(o=>{n.deselect(...o.map(r=>this._getExpansionKey(r)))})}}expandAll(){this.treeControl?this.treeControl.expandAll():this._expansionModel&&this._forEachExpansionKey(e=>this._expansionModel?.select(...e))}collapseAll(){this.treeControl?this.treeControl.collapseAll():this._expansionModel&&this._forEachExpansionKey(e=>this._expansionModel?.deselect(...e))}_getLevelAccessor(){return this.treeControl?.getLevel?.bind(this.treeControl)??this.levelAccessor}_getChildrenAccessor(){return this.treeControl?.getChildren?.bind(this.treeControl)??this.childrenAccessor}_getDirectChildren(e){let n=this._getLevelAccessor(),o=this._expansionModel??this.treeControl?.expansionModel;if(!o)return xt([]);let r=this._getExpansionKey(e),a=o.changed.pipe(fn(m=>m.added.includes(r)?xt(!0):m.removed.includes(r)?xt(!1):Zr),li(this.isExpanded(e)));if(n)return rr([a,this._flattenedNodes]).pipe(yt(([m,p])=>m?this._findChildrenByLevel(n,p,e,1):[]));let c=this._getChildrenAccessor();if(c)return $C(c(e)??[]);throw vG()}_findChildrenByLevel(e,n,o,r){let a=this._getExpansionKey(o),c=n.findIndex(g=>this._getExpansionKey(g)===a),m=e(o),p=m+r,h=[];for(let g=c+1;g<n.length;g++){let M=e(n[g]);if(M<=m)break;M<=p&&h.push(n[g])}return h}_registerNode(e){this._nodes.value.set(this._getExpansionKey(e.data),e),this._nodes.next(this._nodes.value)}_unregisterNode(e){this._nodes.value.delete(this._getExpansionKey(e.data)),this._nodes.next(this._nodes.value)}_getLevel(e){return this._levels.get(this._getExpansionKey(e))}_getSetSize(e){return this._getAriaSet(e).length}_getPositionInSet(e){let n=this._getAriaSet(e),o=this._getExpansionKey(e);return n.findIndex(r=>this._getExpansionKey(r)===o)+1}_getNodeParent(e){let n=this._parents.get(this._getExpansionKey(e.data));return n&&this._nodes.value.get(this._getExpansionKey(n))}_getNodeChildren(e){return this._getDirectChildren(e.data).pipe(yt(n=>n.reduce((o,r)=>{let a=this._nodes.value.get(this._getExpansionKey(r));return a&&o.push(a),o},[])))}_sendKeydownToKeyManager(e){if(e.target===this._elementRef.nativeElement)this._keyManager.onKeydown(e);else{let n=this._nodes.getValue();for(let[,o]of n)if(e.target===o._elementRef.nativeElement){this._keyManager.onKeydown(e);break}}}_getDescendants(e){if(this.treeControl)return xt(this.treeControl.getDescendants(e));if(this.levelAccessor){let n=this._findChildrenByLevel(this.levelAccessor,this._flattenedNodes.value,e,1/0);return xt(n)}if(this.childrenAccessor)return this._getAllChildrenRecursively(e).pipe(_E((n,o)=>(n.push(...o),n),[]));throw vG()}_getAllChildrenRecursively(e){return this.childrenAccessor?$C(this.childrenAccessor(e)).pipe(wi(1),fn(n=>{for(let o of n)this._parents.set(this._getExpansionKey(o),e);return xt(...n).pipe(dm(o=>B_(xt([o]),this._getAllChildrenRecursively(o))))})):xt([])}_getExpansionKey(e){return this.expansionKey?.(e)??e}_getAriaSet(e){let n=this._getExpansionKey(e),o=this._parents.get(n),r=o?this._getExpansionKey(o):null;return this._ariaSets.get(r)??[e]}_findParentForNode(e,n,o){if(!o.length)return null;let r=this._levels.get(this._getExpansionKey(e))??0;for(let a=n-1;a>=0;a--){let c=o[a];if((this._levels.get(this._getExpansionKey(c))??0)<r)return c}return null}_flattenNestedNodesWithExpansion(e,n=0){let o=this._getChildrenAccessor();return o?xt(...e).pipe(dm(r=>{let a=this._getExpansionKey(r);this._parents.has(a)||this._parents.set(a,null),this._levels.set(a,n);let c=$C(o(r));return B_(xt([r]),c.pipe(wi(1),vi(m=>{this._ariaSets.set(a,[...m??[]]);for(let p of m??[]){let h=this._getExpansionKey(p);this._parents.set(h,r),this._levels.set(h,n+1)}}),fn(m=>m?this._flattenNestedNodesWithExpansion(m,n+1).pipe(yt(p=>this.isExpanded(r)?p:[])):xt([]))))}),_E((r,a)=>(r.push(...a),r),[])):xt([...e])}_computeRenderingData(e,n){if(this.childrenAccessor&&n==="flat")return this._clearPreviousCache(),this._ariaSets.set(null,[...e]),this._flattenNestedNodesWithExpansion(e).pipe(yt(o=>({renderNodes:o,flattenedNodes:o})));if(this.levelAccessor&&n==="nested"){let o=this.levelAccessor;return xt(e.filter(r=>o(r)===0)).pipe(yt(r=>({renderNodes:r,flattenedNodes:e})),vi(({flattenedNodes:r})=>{this._calculateParents(r)}))}else return n==="flat"?xt({renderNodes:e,flattenedNodes:e}).pipe(vi(({flattenedNodes:o})=>{this._calculateParents(o)})):(this._clearPreviousCache(),this._ariaSets.set(null,[...e]),this._flattenNestedNodesWithExpansion(e).pipe(yt(o=>({renderNodes:e,flattenedNodes:o}))))}_updateCachedData(e){this._flattenedNodes.next(e)}_updateKeyManagerItems(e){this._keyManagerNodes.next(e)}_calculateParents(e){let n=this._getLevelAccessor();if(n){this._clearPreviousCache();for(let o=0;o<e.length;o++){let r=e[o],a=this._getExpansionKey(r);this._levels.set(a,n(r));let c=this._findParentForNode(r,o,e);this._parents.set(a,c);let m=c?this._getExpansionKey(c):null,p=this._ariaSets.get(m)??[];p.splice(o,0,r),this._ariaSets.set(m,p)}}}_forEachExpansionKey(e){let n=[],o=[];this._nodes.value.forEach(r=>{n.push(this._getExpansionKey(r.data)),o.push(this._getDescendants(r.data))}),o.length>0?rr(o).pipe(wi(1),rt(this._onDestroy)).subscribe(r=>{r.forEach(a=>a.forEach(c=>n.push(this._getExpansionKey(c)))),e(n)}):e(n)}_clearPreviousCache(){this._parents.clear(),this._levels.clear(),this._ariaSets.clear()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["cdk-tree"]],contentQueries:function(n,o,r){if(n&1&&$i(r,KT,5),n&2){let a;gt(a=_t())&&(o._nodeDefs=a)}},viewQuery:function(n,o){if(n&1&&gn(P_,7),n&2){let r;gt(r=_t())&&(o._nodeOutlet=r.first)}},hostAttrs:["role","tree",1,"cdk-tree"],hostBindings:function(n,o){n&1&&v("keydown",function(a){return o._sendKeydownToKeyManager(a)})},inputs:{dataSource:"dataSource",treeControl:"treeControl",levelAccessor:"levelAccessor",childrenAccessor:"childrenAccessor",trackBy:"trackBy",expansionKey:"expansionKey"},exportAs:["cdkTree"],decls:1,vars:0,consts:[["cdkTreeNodeOutlet",""]],template:function(n,o){n&1&&Xi(0,0)},dependencies:[P_],encapsulation:2})}return t})(),I_=(()=>{class t{_elementRef=f(Lt);_tree=f(uC);_tabindex=-1;_type="flat";get role(){return"treeitem"}set role(e){}get isExpandable(){return this._isExpandable()}set isExpandable(e){this._inputIsExpandable=e,!(this.data&&!this._isExpandable||!this._inputIsExpandable)&&(this._inputIsExpanded?this.expand():this._inputIsExpanded===!1&&this.collapse())}get isExpanded(){return this._tree.isExpanded(this._data)}set isExpanded(e){this._inputIsExpanded=e,e?this.expand():this.collapse()}isDisabled=!1;typeaheadLabel=null;getLabel(){return this.typeaheadLabel||this._elementRef.nativeElement.textContent?.trim()||""}activation=new ve;expandedChange=new ve;static mostRecentTreeNode=null;_destroyed=new Le;_dataChanges=new Le;_inputIsExpandable=!1;_inputIsExpanded=void 0;_shouldFocus=!0;_parentNodeAriaLevel;get data(){return this._data}set data(e){e!==this._data&&(this._data=e,this._dataChanges.next())}_data;get isLeafNode(){return this._tree.treeControl?.isExpandable!==void 0&&!this._tree.treeControl.isExpandable(this._data)?!0:this._tree.treeControl?.isExpandable===void 0&&this._tree.treeControl?.getDescendants(this._data).length===0}get level(){return this._tree._getLevel(this._data)??this._parentNodeAriaLevel}_isExpandable(){return this._tree.treeControl?!this.isLeafNode:this._inputIsExpandable}_getAriaExpanded(){return this._isExpandable()?String(this.isExpanded):null}_getSetSize(){return this._tree._getSetSize(this._data)}_getPositionInSet(){return this._tree._getPositionInSet(this._data)}_changeDetectorRef=f(K);constructor(){t.mostRecentTreeNode=this}ngOnInit(){this._parentNodeAriaLevel=d5e(this._elementRef.nativeElement),this._tree._getExpansionModel().changed.pipe(yt(()=>this.isExpanded),V_(),rt(this._destroyed)).pipe(rt(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck()),this._tree._setNodeTypeIfUnset(this._type),this._tree._registerNode(this)}ngOnDestroy(){t.mostRecentTreeNode===this&&(t.mostRecentTreeNode=null),this._dataChanges.complete(),this._destroyed.next(),this._destroyed.complete()}getParent(){return this._tree._getNodeParent(this)??null}getChildren(){return this._tree._getNodeChildren(this)}focus(){this._tabindex=0,this._shouldFocus&&this._elementRef.nativeElement.focus(),this._changeDetectorRef.markForCheck()}unfocus(){this._tabindex=-1,this._changeDetectorRef.markForCheck()}activate(){this.isDisabled||this.activation.next(this._data)}collapse(){this.isExpandable&&this._tree.collapse(this._data)}expand(){this.isExpandable&&this._tree.expand(this._data)}makeFocusable(){this._tabindex=0,this._changeDetectorRef.markForCheck()}_focusItem(){this.isDisabled||this._tree._keyManager.focusItem(this)}_setActiveItem(){this.isDisabled||(this._shouldFocus=!1,this._tree._keyManager.focusItem(this),this._shouldFocus=!0)}_emitExpansionState(e){this.expandedChange.emit(e)}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["cdk-tree-node"]],hostAttrs:["role","treeitem",1,"cdk-tree-node"],hostVars:5,hostBindings:function(n,o){n&1&&v("click",function(){return o._setActiveItem()})("focus",function(){return o._focusItem()}),n&2&&(No("tabIndex",o._tabindex),It("aria-expanded",o._getAriaExpanded())("aria-level",o.level+1)("aria-posinset",o._getPositionInSet())("aria-setsize",o._getSetSize()))},inputs:{role:"role",isExpandable:[2,"isExpandable","isExpandable",dt],isExpanded:"isExpanded",isDisabled:[2,"isDisabled","isDisabled",dt],typeaheadLabel:[0,"cdkTreeNodeTypeaheadLabel","typeaheadLabel"]},outputs:{activation:"activation",expandedChange:"expandedChange"},exportAs:["cdkTreeNode"]})}return t})();function d5e(t){let i=t.parentElement;for(;i&&!m5e(i);)i=i.parentElement;return i?i.classList.contains("cdk-nested-tree-node")?io(i.getAttribute("aria-level")):0:-1}function m5e(t){let i=t.classList;return!!(i?.contains("cdk-nested-tree-node")||i?.contains("cdk-tree"))}var l5=(()=>{class t extends I_{_type="nested";_differs=f(Sd);_dataDiffer;_children;nodeOutlet;constructor(){super()}ngAfterContentInit(){this._dataDiffer=this._differs.find([]).create(this._tree.trackBy),this._tree._getDirectChildren(this.data).pipe(rt(this._destroyed)).subscribe(e=>this.updateChildrenNodes(e)),this.nodeOutlet.changes.pipe(rt(this._destroyed)).subscribe(()=>this.updateChildrenNodes())}ngOnDestroy(){this._clear(),super.ngOnDestroy()}updateChildrenNodes(e){let n=this._getNodeOutlet();if(e&&(this._children=e),n&&this._children){let o=n.viewContainer;this._tree.renderNodeChanges(this._children,this._dataDiffer,o,this._data)}else this._dataDiffer.diff([])}_clear(){let e=this._getNodeOutlet();e&&(e.viewContainer.clear(),this._dataDiffer.diff([]))}_getNodeOutlet(){let e=this.nodeOutlet;return e&&e.find(n=>!n._node||n._node===this)}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["cdk-nested-tree-node"]],contentQueries:function(n,o,r){if(n&1&&$i(r,P_,5),n&2){let a;gt(a=_t())&&(o.nodeOutlet=a)}},hostAttrs:[1,"cdk-nested-tree-node"],exportAs:["cdkNestedTreeNode"],features:[hn([{provide:I_,useExisting:t},{provide:s5,useExisting:t}]),xn]})}return t})();var c5=(()=>{class t{_tree=f(uC);_treeNode=f(I_);recursive=!1;constructor(){}_toggle(){this.recursive?this._tree.toggleDescendants(this._treeNode.data):this._tree.toggle(this._treeNode.data),this._tree._keyManager.focusItem(this._treeNode)}static \u0275fac=function(n){return new(n||t)};static \u0275dir=ft({type:t,selectors:[["","cdkTreeNodeToggle",""]],hostAttrs:["tabindex","-1"],hostBindings:function(n,o){n&1&&v("click",function(a){return o._toggle(),a.stopPropagation()})("keydown.Enter",function(a){return o._toggle(),a.preventDefault()})("keydown.Space",function(a){return o._toggle(),a.preventDefault()})},inputs:{recursive:[2,"cdkTreeNodeToggleRecursive","recursive",dt]}})}return t})();var A_=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({})}return t})();var ZT=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[A_,wn]})}return t})();var O_=(function(t){return t.group="group",t.user="user",t})(O_||{});var JT=class{endpoints;constructor(i){this.endpoints=i}buildTreeFromEndpoints(){let i=[],e=[];return this.endpoints.forEach(n=>{let o=this.extractParent(n);e.push(o)}),e.forEach(n=>{n.depth>0&&e.filter(r=>r.splitEndp.join("/")==n.splitEndp.slice(0,n.depth-1).join("/"))[0].children.push(n)}),i.push(e.find(n=>n.depth===0)),i}extractParent(i){let e=i.endpoint.split("/");e=e.filter(r=>r!==""&&r!=="access");let n=[];return e.length>0&&(n=e.slice(0,e.length-1)),{children:[],depth:e.length,splitEndp:e,endpoint:i.endpoint,endpoint_type:i.endpoint_type,name:i.name,parent:n}}};function u5e(t,i){if(t&1&&(s(0,"mat-option",4),d(1),l()),t&2){let e=i.$implicit,n=b();x("value",e),u(),X(" ",n.displayFn()(e)," ")}}var eE=(()=>{class t{data=oe(void 0);filteredData;typeName;autocompleteControl=new re;eltType=oe(void 0);displayFn=oe(void 0);filterFn=oe(void 0);selectionChange=new ve;constructor(){}ngOnChanges(){this.filteredData=this.autocompleteControl.valueChanges.pipe(li(""),yt(e=>this.filterFn()(e,this.data())))}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-autocomplete"]],inputs:{data:[1,"data"],eltType:[1,"eltType"],displayFn:[1,"displayFn"],filterFn:[1,"filterFn"]},outputs:{selectionChange:"selectionChange"},features:[un],decls:9,vars:6,consts:[["auto","matAutocomplete"],[1,"input-field"],["type","text","matInput","",3,"matAutocomplete","formControl"],[3,"optionSelected","displayWith"],[3,"value"]],template:function(n,o){if(n&1&&(s(0,"mat-form-field",1)(1,"mat-label"),d(2),l(),F(3,"input",2),s(4,"mat-autocomplete",3,0),v("optionSelected",function(a){return o.selectionChange.emit(a.option.value)}),J(6,u5e,2,2,"mat-option",4,Fe),on(8,"async"),l()()),n&2){let r=Re(5);u(2),U(o.eltType()),u(),x("matAutocomplete",r)("formControl",o.autocompleteControl),u(),x("displayWith",o.displayFn()),u(2),ee(oi(8,4,o.filteredData))}},dependencies:[Z,nt,vt,mt,ct,bm,Me,ke,lt,we,Te,Ds,Ul,St,el,Jr],styles:[".input-field[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();function h5e(t,i){t&1&&(s(0,"mat-icon",25),d(1,"panorama_fish_eye"),l())}function f5e(t,i){t&1&&(s(0,"mat-icon",26),d(1,"check_circle"),l())}function g5e(t,i){if(t&1){let e=j();s(0,"cdk-nested-tree-node",22)(1,"div"),F(2,"button",23),d(3),s(4,"button",24),v("click",function(){let o=D(e).$implicit,r=b();return P(r.endpointSelection(o))}),A(5,h5e,2,0,"mat-icon",25),A(6,f5e,2,0,"mat-icon",26),l()()()}if(t&2){let e=i.$implicit,n=b();u(),je("selected",n.selectedEndpoint&&e.endpoint===n.selectedEndpoint.endpoint),u(2),X(" ",e.name," "),u(2),O(!n.selectedEndpoint||e.endpoint!==n.selectedEndpoint.endpoint?5:-1),u(),O(n.selectedEndpoint&&e.endpoint===n.selectedEndpoint.endpoint?6:-1)}}function _5e(t,i){t&1&&(s(0,"mat-icon",25),d(1,"panorama_fish_eye"),l())}function v5e(t,i){t&1&&(s(0,"mat-icon",26),d(1,"check_circle"),l())}function b5e(t,i){if(t&1){let e=j();s(0,"cdk-nested-tree-node",22)(1,"div")(2,"button",27)(3,"mat-icon",28),d(4),l()(),d(5),s(6,"button",24),v("click",function(){let o=D(e).$implicit,r=b();return P(r.endpointSelection(o))}),A(7,_5e,2,0,"mat-icon",25),A(8,v5e,2,0,"mat-icon",26),l()(),s(9,"div"),Xi(10,29),l()()}if(t&2){let e=i.$implicit,n=b();u(),je("selected",n.selectedEndpoint&&e.endpoint===n.selectedEndpoint.endpoint),u(),It("aria-label","Toggle "+e.name),u(2),X(" ",n.treeControl.isExpanded(e)?"expand_more":"chevron_right"," "),u(),X(" ",e.name," "),u(2),O(!n.selectedEndpoint||e.endpoint!==n.selectedEndpoint.endpoint?7:-1),u(),O(n.selectedEndpoint&&e.endpoint===n.selectedEndpoint.endpoint?8:-1),u(),je("example-tree-invisible",!n.treeControl.isExpanded(e))}}function C5e(t,i){if(t&1&&(s(0,"mat-option",10),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),U(e.charAt(0).toUpperCase()+e.slice(1))}}function x5e(t,i){if(t&1){let e=j();s(0,"app-autocomplete",12),v("selectionChange",function(o){D(e);let r=b();return P(r.userSelection(o))}),l()}if(t&2){let e=b();x("data",e.users)("eltType","Users")("displayFn",e.displayFnUser)("filterFn",e._filterUser)}}function y5e(t,i){if(t&1){let e=j();s(0,"app-autocomplete",12),v("selectionChange",function(o){D(e);let r=b();return P(r.groupSelection(o))}),l()}if(t&2){let e=b();x("data",e.groups)("eltType","Groups")("displayFn",e.displayFn)("filterFn",e._filter)}}var tE=(()=>{class t{data;dialogRef=f(Pe);aclService=f(Xp);userService=f(pa);groupService=f(Gl);roleService=f(Wl);toasterService=f(fe);cd=f(K);controller;addAceForm;allowed=!0;types=Object.values(O_);endpoints;selectedEndpoint;filteredEndpoint=[];endpointTypes;groups=[];selectedGroup;users=[];selectedUser;roles=[];selectedRole;TREE_DATA=[];treeControl=new YT(e=>e.children);treeDataSource;constructor(e){this.data=e,this.endpoints=e.endpoints;let o=new JT(this.endpoints).buildTreeFromEndpoints();this.treeDataSource=new eR(o),console.log(o)}ngOnInit(){this.addAceForm=new Dr({type:new re(O_.user),role_id:new re,propagate:new re(!0)}),this.groupService.getGroups(this.controller).subscribe(e=>{this.groups=e,this.cd.markForCheck()}),this.userService.list(this.controller).subscribe(e=>{this.users=e,this.cd.markForCheck()}),this.roleService.get(this.controller).subscribe(e=>{this.roles=e,this.cd.markForCheck()})}get form(){return this.addAceForm.controls}onCancelClick(){this.dialogRef.close()}onAddClick(){if(!this.selectedEndpoint||!this.selectedRole||!this.selectedUser&&!this.selectedGroup)return;let e={ace_type:this.form.type.value,allowed:this.allowed,group_id:this.form.type.value===O_.group?this.selectedGroup.user_group_id:null,path:this.selectedEndpoint.endpoint,propagate:this.form.propagate.value,role_id:this.selectedRole.role_id,user_id:this.form.type.value===O_.user?this.selectedUser.user_id:null};e.path&&e.role_id&&(e.user_id||e.group_id)&&(this.aclService.add(this.controller,e).subscribe(n=>{this.toasterService.success(`ACE was added for path ${e.path}`)},n=>{this.toasterService.error(`Cannot create ACE: ${n.error?.message||n.message}`)}),this.dialogRef.close())}changeAllowed(){this.allowed=!this.allowed}displayFn(e){return e&&e.name?e.name:""}displayFnUser(e){return!e||!e.username?"":e.full_name?e.username.concat(" - ",e.full_name):e.username}_filter(e,n){if(typeof e=="string"&&n){let o=e.toLowerCase();return n.filter(r=>r.name.toLowerCase().includes(o))}return[]}_filterUser(e,n){if(typeof e=="string"&&n){let o=e.toLowerCase();return n.filter(r=>(r.full_name?.toLowerCase().includes(o)??!1)||r.username.toLowerCase().includes(o))}}_filterRole(e,n){if(typeof e=="string"&&n){let o=e.toLowerCase();return n.filter(r=>r.name.toLowerCase().includes(o))}}userSelection(e){this.selectedUser=e}groupSelection(e){this.selectedGroup=e}roleSelection(e){this.selectedRole=e}endpointSelection(e){let n={endpoint:e.endpoint,endpoint_type:e.endpoint_type,name:e.name};this.selectedEndpoint=n}hasChild=(e,n)=>!!n.children&&n.children.length>0;static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-add-ace-dialog"]],decls:29,vars:18,consts:[["mat-dialog-title",""],[1,"ace-form",3,"formGroup"],[1,"ace-form__tree-panel"],[3,"dataSource","treeControl"],["class","ace-form__tree-node",4,"cdkTreeNodeDef"],["class","ace-form__tree-node",4,"cdkTreeNodeDef","cdkTreeNodeDefWhen"],[1,"ace-form__divider",3,"vertical"],[1,"ace-form__selection-panel"],[1,"typeSelect"],["placeholder","User/Group","formControlName","type"],[3,"value"],[3,"data","eltType","displayFn","filterFn"],[3,"selectionChange","data","eltType","displayFn","filterFn"],[1,"ace-form__checkbox-row"],[1,"ace-form__checkbox-left"],["formControlName","propagate"],[1,"ace-form__divider-vertical",3,"vertical"],[1,"ace-form__checkbox-right"],["mat-button","",1,"ace-form__action-btn",3,"click"],["mat-dialog-actions","",1,"ace-form__actions"],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click","disabled"],[1,"ace-form__tree-node"],["mat-icon-button","","disabled",""],["mat-icon-button","",3,"click"],[1,"align-middle",2,"color","var(--mat-sys-outline)"],[1,"align-middle"],["mat-icon-button","","cdkTreeNodeToggle",""],[1,"mat-icon-rtl-mirror"],["cdkTreeNodeOutlet",""]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Create new ACE"),l(),s(2,"form",1)(3,"div",2)(4,"cdk-tree",3),Ae(5,g5e,7,5,"cdk-nested-tree-node",4)(6,b5e,11,9,"cdk-nested-tree-node",5),l()(),F(7,"mat-divider",6),s(8,"div",7)(9,"div",8)(10,"mat-select",9),J(11,C5e,2,2,"mat-option",10,Fe),l()(),A(13,x5e,1,4,"app-autocomplete",11),A(14,y5e,1,4,"app-autocomplete",11),s(15,"app-autocomplete",12),v("selectionChange",function(a){return o.roleSelection(a)}),l(),s(16,"div",13)(17,"div",14)(18,"mat-checkbox",15),d(19,"Propagate"),l()(),F(20,"mat-divider",16),s(21,"div",17)(22,"button",18),v("click",function(){return o.changeAllowed()}),d(23),l()()(),s(24,"div",19)(25,"button",20),v("click",function(){return o.onCancelClick()}),d(26,"Cancel"),l(),s(27,"button",21),v("click",function(){return o.onAddClick()}),d(28," Add ACE "),l()()()()),n&2&&(u(2),x("formGroup",o.addAceForm),u(2),x("dataSource",o.treeDataSource)("treeControl",o.treeControl),u(2),x("cdkTreeNodeDefWhen",o.hasChild),u(),x("vertical",!0),u(4),ee(o.types),u(2),O(o.form.type.value==="user"?13:-1),u(),O(o.form.type.value==="group"?14:-1),u(),x("data",o.roles)("eltType","Roles")("displayFn",o.displayFn)("filterFn",o._filter),u(5),x("vertical",!0),u(2),je("ace-form__action-btn--allow",o.allowed)("ace-form__action-btn--deny",!o.allowed),u(),X(" ",o.allowed?"ALLOWED":"DENY"," "),u(4),x("disabled",!o.addAceForm.valid))},dependencies:[Z,ct,Ue,mt,He,pt,bt,Ce,Ve,Be,$,le,ze,Ot,Ht,Ea,ls,Me,te,se,we,Mt,At,St,ZT,A_,l5,KT,c5,uC,P_,eE],styles:[".ace-form[_ngcontent-%COMP%]{display:flex;width:100%;height:400px;overflow-x:hidden;padding:0 16px}.ace-form__tree-panel[_ngcontent-%COMP%]{flex:1;overflow-y:auto;min-width:0;max-height:400px;color:var(--mat-sys-on-surface)}.ace-form__divider[_ngcontent-%COMP%]{flex-shrink:0;margin:0 16px;height:auto;align-self:stretch}.ace-form__selection-panel[_ngcontent-%COMP%]{flex:0 0 280px;display:flex;flex-direction:column;gap:12px;overflow-x:hidden}.typeSelect[_ngcontent-%COMP%]{height:25px;margin-left:5px;margin-right:5px}.example-tree-invisible[_ngcontent-%COMP%]{display:none}.ace-form__tree-node[_ngcontent-%COMP%]{display:block}.ace-form__tree-node[_ngcontent-%COMP%] .ace-form__tree-node[_ngcontent-%COMP%]{padding-left:40px}.ace-form__checkbox-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:8px}.ace-form__checkbox-left[_ngcontent-%COMP%]{flex:1}.ace-form__divider-vertical[_ngcontent-%COMP%]{height:auto;align-self:stretch}.ace-form__checkbox-right[_ngcontent-%COMP%]{flex:1;text-align:right}.ace-form__action-btn[_ngcontent-%COMP%]{min-width:80px}.ace-form__action-btn--allow[_ngcontent-%COMP%]{background-color:green;color:#fff}.ace-form__action-btn--deny[_ngcontent-%COMP%]{background-color:#8b0000;color:#fff}.ace-form__actions[_ngcontent-%COMP%]{margin-top:auto;padding-top:16px;display:flex;justify-content:flex-end;gap:8px}"],changeDetection:0})}return t})();var S5e=(t,i)=>i.path;function w5e(t,i){if(t&1&&(s(0,"li"),d(1),l()),t&2){let e=i.$implicit;u(),U(e.path)}}var hC=(()=>{class t{data;dialogRef=f(Pe);constructor(e){this.data=e}onCancel(){this.dialogRef.close()}onDelete(){this.dialogRef.close(!0)}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-delete-ace-dialog"]],decls:10,vars:0,consts:[["mat-dialog-title",""],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",1,"add-project-button",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Are you sure you want to delete the following ACEs ?"),l(),s(2,"ul"),J(3,w5e,2,1,"li",null,S5e),l(),s(5,"div",1)(6,"button",2),v("click",function(){return o.onCancel()}),d(7,"No, cancel"),l(),s(8,"button",3),v("click",function(){return o.onDelete()}),d(9," Yes, delete! "),l()()),n&2&&(u(3),ee(o.data.aces))},dependencies:[Z,Ce,Ve,Be,$,le],encapsulation:2,changeDetection:0})}return t})();var bG=(()=>{class t{transform(e,n,o){if(!e)return[];if(!n)return e;n=n.toLowerCase();let r=o.filter(a=>a.name.toLowerCase().includes(n));return e.data.filter(a=>{let c=this.getEndpoint(a.user_id,o),m=this.getEndpoint(a.group_id,o),p=this.getEndpoint(a.path,o),h=this.getEndpoint(a.role_id,o);return r.some(g=>[c,m,p,h].includes(g.endpoint))})}getEndpoint(e,n){let o=n.filter(r=>r.endpoint.includes(e));return o.length>0?o[0].endpoint.toLowerCase():""}static \u0275fac=function(n){return new(n||t)};static \u0275pipe=Cr({name:"aceFilter",type:t,pure:!0})}return t})();var M5e=["acesPaginator"],k5e=["acesSort"],T5e=()=>[5,10,20];function E5e(t,i){if(t&1){let e=j();s(0,"th",28)(1,"mat-checkbox",29),v("change",function(o){D(e);let r=b(2);return P(o?r.masterToggle():null)}),l()()}if(t&2){let e=b(2);u(),x("checked",e.selection.hasValue()&&e.isAllSelected())("indeterminate",e.selection.hasValue()&&!e.isAllSelected())}}function D5e(t,i){if(t&1){let e=j();s(0,"td",30)(1,"mat-checkbox",31),v("click",function(o){return o.stopPropagation()})("change",function(o){let r=D(e).$implicit,a=b(2);return P(o?a.selection.toggle(r):null)}),l()()}if(t&2){let e=i.$implicit,n=b(2);u(),x("checked",n.selection.isSelected(e))}}function P5e(t,i){t&1&&(s(0,"th",32),d(1,"Path"),l())}function I5e(t,i){if(t&1&&(s(0,"td",33)(1,"span",34),d(2),l()()),t&2){let e=i.$implicit,n=b(2);u(2),U(n.getNameByUuidFromEndpoint(e.path))}}function A5e(t,i){t&1&&(s(0,"th",32),d(1,"User/Group"),l())}function O5e(t,i){if(t&1&&d(0),t&2){let e=b().$implicit,n=b(2);X(" ",n.getNameByUuidFromEndpoint(e.user_id)," ")}}function N5e(t,i){if(t&1&&d(0),t&2){let e=b().$implicit,n=b(2);X(" ",n.getNameByUuidFromEndpoint(e.group_id)," ")}}function R5e(t,i){if(t&1&&(s(0,"td",33)(1,"span",34),A(2,O5e,1,1)(3,N5e,1,1),l()()),t&2){let e=i.$implicit;u(2),O(e.ace_type==="user"?2:3)}}function F5e(t,i){t&1&&(s(0,"th",32),d(1,"Role"),l())}function L5e(t,i){if(t&1&&(s(0,"td",33)(1,"span",34),d(2),l()()),t&2){let e=i.$implicit,n=b(2);u(2),U(n.getNameByUuidFromEndpoint(e.role_id))}}function B5e(t,i){t&1&&(s(0,"th",32),d(1,"Propagate"),l())}function V5e(t,i){if(t&1&&(s(0,"td",33),d(1),l()),t&2){let e=i.$implicit;u(),U(e.propagate)}}function z5e(t,i){t&1&&(s(0,"th",32),d(1,"Allowed"),l())}function j5e(t,i){if(t&1&&(s(0,"td",33),d(1),l()),t&2){let e=i.$implicit;u(),U(e.allowed)}}function $5e(t,i){t&1&&(s(0,"th",32),d(1,"Created"),l())}function H5e(t,i){if(t&1&&(s(0,"td",33)(1,"span",34),d(2),l()()),t&2){let e=i.$implicit;u(2),U(e.created_at)}}function U5e(t,i){t&1&&(s(0,"th",32),d(1,"Last update"),l())}function G5e(t,i){if(t&1&&(s(0,"td",33)(1,"span",34),d(2),l()()),t&2){let e=i.$implicit;u(2),U(e.updated_at)}}function W5e(t,i){t&1&&F(0,"tr",35)}function q5e(t,i){t&1&&F(0,"tr",36)}function X5e(t,i){if(t&1){let e=j();s(0,"header",3)(1,"h1",4),d(2,"Access Control List (ACL)"),l(),s(3,"div",5)(4,"button",6),v("click",function(){D(e);let o=b();return P(o.deleteMultiple())}),d(5," Delete Selected "),l(),s(6,"button",7),v("click",function(){D(e);let o=b();return P(o.addACE())}),d(7,"Add ACE"),l()()(),s(8,"form",8)(9,"mat-form-field",9)(10,"input",10),v("input",function(o){D(e);let r=b();return P(r.searchText.set(o.target.value))}),l()()(),s(11,"div",11)(12,"table",12,0),on(14,"aceFilter"),qe(15,13),Ae(16,E5e,2,2,"th",14)(17,D5e,2,1,"td",15),Xe(),qe(18,16),Ae(19,P5e,2,0,"th",17)(20,I5e,3,1,"td",18),Xe(),qe(21,19),Ae(22,A5e,2,0,"th",17)(23,R5e,4,1,"td",18),Xe(),qe(24,20),Ae(25,F5e,2,0,"th",17)(26,L5e,3,1,"td",18),Xe(),qe(27,21),Ae(28,B5e,2,0,"th",17)(29,V5e,2,1,"td",18),Xe(),qe(30,22),Ae(31,z5e,2,0,"th",17)(32,j5e,2,1,"td",18),Xe(),qe(33,23),Ae(34,$5e,2,0,"th",17)(35,H5e,3,1,"td",18),Xe(),qe(36,24),Ae(37,U5e,2,0,"th",17)(38,G5e,3,1,"td",18),Xe(),Ae(39,W5e,1,0,"tr",25)(40,q5e,1,0,"tr",26),l(),F(41,"mat-paginator",27,1),l()}if(t&2){let e=b();u(4),x("disabled",e.selection.selected.length===0),u(6),x("value",e.searchText()),u(2),x("dataSource",A5(14,6,e.dataSource,e.searchText(),e.endpoints())),u(27),x("matHeaderRowDef",e.displayedColumns),u(),x("matRowDefColumns",e.displayedColumns),u(),x("pageSizeOptions",Jt(10,T5e))}}function Q5e(t,i){t&1&&(s(0,"div",2),F(1,"mat-spinner",37),l())}var nE=(()=>{class t{route=f(Ye);controllerService=f(We);toasterService=f(fe);aclService=f(Xp);dialog=f(Je);acesPaginator;acesSort;controller;displayedColumns=["select","path","user/group","role","propagate","allowed","updated_at"];selection=new ha(!0,[]);aces;dataSource=new Nr;isReady=me(!1);searchText=ae("");endpoints=me([]);constructor(){}ngOnInit(){let e=this.route.parent.snapshot.paramMap.get("controller_id");this.controllerService.get(+e).then(n=>{this.controller=n,this.aclService.getEndpoints(this.controller).subscribe(o=>{this.endpoints.set(o),this.refresh()})})}ngAfterViewInit(){this.acesPaginator.changes.subscribe(e=>{this.dataSource.paginator=e.first}),this.acesSort.changes.subscribe(e=>{this.dataSource.sort=e.first}),this.dataSource.sortingDataAccessor=(e,n)=>{switch(n){case"path":case"user/group":case"role":return e[n]?e[n].toLowerCase():"";default:return e[n]}}}refresh(){this.aclService.list(this.controller).subscribe(e=>{this.isReady.set(!0),this.aces=e,this.dataSource.data=e,this.selection.clear()})}addACE(){let e=this.dialog.open(tE,{panelClass:["base-dialog-panel","add-ace-dialog-panel"],autoFocus:!1,disableClose:!0,data:{endpoints:this.endpoints()}}),n=e.componentInstance;n.controller=this.controller,e.afterClosed().subscribe(()=>this.refresh())}onDelete(e){this.dialog.open(hC,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:{aces:[e]}}).afterClosed().subscribe(n=>{n&&this.aclService.delete(this.controller,e.ace_id).subscribe(()=>{this.refresh()},o=>{this.toasterService.error(`An error occur while trying to delete ace ${e.ace_id}`)})})}isAllSelected(){let e=this.selection.selected.length,n=this.aces.length;return e===n}masterToggle(){this.isAllSelected()?this.selection.clear():this.aces.forEach(e=>this.selection.select(e))}deleteMultiple(){this.dialog.open(hC,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:{aces:this.selection.selected}}).afterClosed().subscribe(e=>{e&&(this.selection.selected.forEach(n=>{this.aclService.delete(this.controller,n.ace_id).subscribe(()=>{this.refresh()},o=>{this.toasterService.error(`An error occur while trying to delete ace ${n.ace_id}`)})}),this.selection.clear())})}getNameByUuidFromEndpoint(e){if(this.endpoints()){let n=this.endpoints().filter(o=>o.endpoint.includes(e));if(n.length>=1)return n[0].name}return""}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-acl-management"]],viewQuery:function(n,o){if(n&1&&gn(M5e,5)(k5e,5),n&2){let r;gt(r=_t())&&(o.acesPaginator=r),gt(r=_t())&&(o.acesSort=r)}},inputs:{searchText:[1,"searchText"]},outputs:{searchText:"searchTextChange"},decls:2,vars:1,consts:[["acesSort","matSort"],["acesPaginator","matPaginator"],[1,"acl-management__loader"],[1,"acl-management__header"],[1,"acl-management__title"],[1,"acl-management__actions"],["mat-raised-button","","color","primary",1,"acl-management__button",3,"click","disabled"],["mat-raised-button","","color","primary",1,"acl-management__button",3,"click"],[1,"acl-management__search-form"],[1,"acl-management__search"],["matInput","","placeholder","Search by path, user/group or role",3,"input","value"],[1,"acl-management__table-container"],["mat-table","","matSort","",3,"dataSource"],["matColumnDef","select"],["mat-header-cell","","class","acl-management__small-col",4,"matHeaderCellDef"],["mat-cell","","class","acl-management__small-col",4,"matCellDef"],["matColumnDef","path"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","user/group"],["matColumnDef","role"],["matColumnDef","propagate"],["matColumnDef","allowed"],["matColumnDef","created_at"],["matColumnDef","updated_at"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["showFirstLastButtons","","aria-label","Select page",3,"pageSizeOptions"],["mat-header-cell","",1,"acl-management__small-col"],[3,"change","checked","indeterminate"],["mat-cell","",1,"acl-management__small-col"],[3,"click","change","checked"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],[1,"acl-management__overflow-text"],["mat-header-row",""],["mat-row",""],[1,"acl-management__spinner"]],template:function(n,o){n&1&&A(0,X5e,43,11)(1,Q5e,2,0,"div",2),n&2&&O(o.isReady()?0:1)},dependencies:[Z,nt,Ue,He,Ci,at,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,Tr,zr,Oo,ma,Ot,Ht,$,le,te,Me,ke,we,Te,Ce,Dt,bG],styles:["[_nghost-%COMP%]{display:block;width:100%}.acl-management__header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:20px 0;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.acl-management__title[_ngcontent-%COMP%]{font-size:24px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.acl-management__actions[_ngcontent-%COMP%]{display:flex;gap:12px}.acl-management__button[_ngcontent-%COMP%]{margin:12px 0;height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px;transition:all .2s cubic-bezier(.4,0,.2,1)}.acl-management__button[_ngcontent-%COMP%]:hover:not([disabled]){transform:translateY(-2px);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.acl-management__button[_ngcontent-%COMP%]:active:not([disabled]){transform:translateY(0)}.acl-management__search-form[_ngcontent-%COMP%]{display:flex;justify-content:center;margin:16px auto;width:100%;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .05s both}.acl-management__search[_ngcontent-%COMP%]{width:100%;max-width:1000px}.acl-management__table-container[_ngcontent-%COMP%]{border-radius:16px;overflow:hidden;width:100%;background:var(--mat-sys-surface);box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .15s both}.acl-management__table-container--hidden[_ngcontent-%COMP%]{display:none}mat-row[_ngcontent-%COMP%]{transition:all .2s cubic-bezier(.4,0,.2,1);cursor:default;position:relative}mat-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 3%,transparent);transform:scale(1.002)}mat-row[_ngcontent-%COMP%]:nth-child(2n){background-color:color-mix(in srgb,var(--mat-sys-on-surface) 1%,transparent)}mat-row[_ngcontent-%COMP%]:nth-child(2n):hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 4%,transparent)}.mat-header-row[_ngcontent-%COMP%]{position:sticky;top:0;z-index:10;background:var(--mat-sys-surface)}.mat-header-row[_ngcontent-%COMP%] mat-header-cell[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--mat-sys-on-surface-variant);letter-spacing:.5px;text-transform:uppercase}mat-header-cell[_ngcontent-%COMP%], mat-cell[_ngcontent-%COMP%]{justify-content:center;padding:0 16px}mat-cell[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}.acl-management__overflow-text[_ngcontent-%COMP%]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding-right:5px}mat-cell[mat-column=actions][_ngcontent-%COMP%], mat-header-cell[mat-column=actions][_ngcontent-%COMP%]{justify-content:flex-end;padding:0 16px}mat-cell[mat-column=actions][_ngcontent-%COMP%]{overflow:visible}.acl-management__small-col[_ngcontent-%COMP%]{width:60px;min-width:60px}.acl-management__loader[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-height:200px}.acl-management__spinner[_ngcontent-%COMP%]{width:48px;height:48px}mat-paginator[_ngcontent-%COMP%]{background:var(--mat-sys-surface);color:var(--mat-sys-on-surface)}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.acl-management__header[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:16px;padding:16px 0}.acl-management__actions[_ngcontent-%COMP%]{width:100%;flex-direction:column}.acl-management__button[_ngcontent-%COMP%]{width:100%;height:44px;font-size:15px}.acl-management__actions-cell[_ngcontent-%COMP%]{flex-wrap:wrap;gap:4px}mat-cell[_ngcontent-%COMP%]{padding:0 12px;font-size:13px}}"],changeDetection:0})}return t})();var iE=(()=>{class t{get(e){return new RegExp(/[~`!#$%\^&*+=\[\]\\';,/{}|\\":<>\?]/).test(e.value)?{invalidName:!0}:null}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var Yp=(()=>{class t{httpController;projectService;constructor(e,n){this.httpController=e,this.projectService=n}getAll(e){return this.httpController.get(e,"/pools")}get(e,n){return lo([this.httpController.get(e,`/pools/${n}`),this.httpController.get(e,`/pools/${n}/resources`)]).pipe(yt(o=>(o[0].resources=o[1],o[0])))}delete(e,n){return this.httpController.delete(e,`/pools/${n}`)}add(e,n){return this.httpController.post(e,"/pools",{name:n})}update(e,n){return this.httpController.put(e,`/pools/${n.resource_pool_id}`,{name:n.name})}addResource(e,n,o){return this.httpController.put(e,`/pools/${n.resource_pool_id}/resources/${o.project_id}`,{})}deleteResource(e,n,o){return this.httpController.delete(e,`/pools/${o.resource_pool_id}/resources/${n.resource_id}`)}getFreeResources(e){return this.projectService.list(e).pipe(fn(n=>this.getAllNonFreeResources(e).pipe(yt(o=>o.map(r=>r.resource_id)),yt(o=>n.filter(r=>!o.includes(r.project_id))))))}getAllNonFreeResources(e){return this.getAll(e).pipe(fn(n=>lo(n.map(o=>this.httpController.get(e,`/pools/${o.resource_pool_id}/resources`)))),yt(n=>{let o=[];for(let r of n)for(let a of r)o.push(a);return o}))}static \u0275fac=function(n){return new(n||t)(ge(an),ge(Fi))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var CG=(t,i)=>e=>Ma(500).pipe(fn(()=>i.getAll(t)),yt(n=>n.find(o=>o.name===e.value)?{projectExist:!0}:null));function Z5e(t,i){t&1&&(s(0,"mat-error"),d(1,"Resource pool name is required"),l())}function J5e(t,i){t&1&&(s(0,"mat-error"),d(1,"Resource pool name is incorrect"),l())}function eRe(t,i){t&1&&(s(0,"mat-error"),d(1,"Resource pool with this name exists"),l())}var oE=(()=>{class t{data;poolNameValidator;dialogRef=f(Pe);formBuilder=f(jt);resourcePoolsService=f(Yp);toasterService=f(fe);cd=f(K);poolNameForm;controller;constructor(e,n){this.data=e,this.poolNameValidator=n}ngOnInit(){this.controller=this.data.controller,this.poolNameForm=this.formBuilder.group({poolName:new re(null,[be.required,this.poolNameValidator.get],[CG(this.data.controller,this.resourcePoolsService)])}),this.cd.markForCheck()}onKeyDown(e){e.key==="Enter"&&this.onAddClick()}get form(){return this.poolNameForm.controls}onAddClick(){if(this.poolNameForm.invalid)return;let e=this.poolNameForm.controls.poolName.value;this.resourcePoolsService.add(this.controller,e).subscribe(n=>{this.dialogRef.close(!0)},n=>{this.toasterService.error(`An error occur while trying to create new pool ${e}`),this.dialogRef.close(!1)})}onNoClick(){this.dialogRef.close()}static \u0275fac=function(n){return new(n||t)(st(Nt),st(iE))};static \u0275cmp=L({type:t,selectors:[["app-add-resource-pool-dialog"]],features:[hn([iE])],decls:16,vars:4,consts:[["mat-dialog-title",""],[3,"formGroup"],["mat-dialog-content",""],["appearance","fill",1,"full-width-field"],["matInput","","type","text","formControlName","poolName","placeholder","Please enter a resource pool name",3,"keydown"],["mat-dialog-actions","","align","end"],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Create new resource pool"),l(),s(2,"form",1)(3,"div",2)(4,"mat-form-field",3)(5,"mat-label"),d(6,"Resource pool name"),l(),s(7,"input",4),v("keydown",function(a){return o.onKeyDown(a)}),l(),A(8,Z5e,2,0,"mat-error"),A(9,J5e,2,0,"mat-error"),A(10,eRe,2,0,"mat-error"),l()(),s(11,"div",5)(12,"button",6),v("click",function(){return o.onNoClick()}),d(13,"Cancel"),l(),s(14,"button",7),v("click",function(){return o.onAddClick()}),d(15,"Add resource pool"),l()()()),n&2&&(u(2),x("formGroup",o.poolNameForm),u(6),O(o.form.poolName!=null&&o.form.poolName.touched&&(o.form.poolName!=null&&o.form.poolName.errors)&&(o.form.poolName!=null&&o.form.poolName.errors.required)?8:-1),u(),O(o.form.poolName!=null&&o.form.poolName.errors&&(o.form.poolName!=null&&o.form.poolName.errors.invalidName)?9:-1),u(),O(o.form.poolName!=null&&o.form.poolName.errors&&(o.form.poolName!=null&&o.form.poolName.errors.projectExist)?10:-1))},dependencies:[Z,ct,Ue,vt,mt,He,pt,bt,Ce,Ve,Be,Wt,Me,ke,lt,Ni,we,Te,$,le],styles:[".full-width-field[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();var tRe=(t,i)=>i.name;function nRe(t,i){if(t&1&&(s(0,"li"),d(1),l()),t&2){let e=i.$implicit;u(),U(e.name)}}var rE=(()=>{class t{data;dialogRef=f(Pe);constructor(e){this.data=e}onCancel(){this.dialogRef.close()}onDelete(){this.dialogRef.close(!0)}static \u0275fac=function(n){return new(n||t)(st(Nt))};static \u0275cmp=L({type:t,selectors:[["app-delete-resource-pool"]],decls:10,vars:0,consts:[["mat-dialog-title",""],["mat-dialog-actions",""],["mat-button","","color","accent",3,"click"],["mat-button","","tabindex","2","mat-raised-button","","color","primary",1,"add-project-button",3,"click"]],template:function(n,o){n&1&&(s(0,"h1",0),d(1,"Are you sure you want to delete the following pools?"),l(),s(2,"ul"),J(3,nRe,2,1,"li",null,tRe),l(),s(5,"div",1)(6,"button",2),v("click",function(){return o.onCancel()}),d(7,"No, cancel"),l(),s(8,"button",3),v("click",function(){return o.onDelete()}),d(9," Yes, delete! "),l()()),n&2&&(u(3),ee(o.data.pools))},dependencies:[Z,Ce,Ve,Be,$,le],encapsulation:2,changeDetection:0})}return t})();var xG=(()=>{class t{transform(e,n){return n&&(n=n.trim().toLowerCase(),e.filter=n),e}static \u0275fac=function(n){return new(n||t)};static \u0275pipe=Cr({name:"resourcePoolsFilter",type:t,pure:!0})}return t})();var iRe=["resourcePoolsPaginator"],oRe=["resourcePoolsSort"],rRe=()=>[5,10,20],aRe=(t,i)=>["/controller",t,"management","pools",i];function sRe(t,i){if(t&1){let e=j();s(0,"th",24)(1,"mat-checkbox",25),v("change",function(o){D(e);let r=b(2);return P(o?r.masterToggle():null)}),l()()}if(t&2){let e=b(2);u(),x("checked",e.selection.hasValue()&&e.isAllSelected())("indeterminate",e.selection.hasValue()&&!e.isAllSelected())}}function lRe(t,i){if(t&1){let e=j();s(0,"td",26)(1,"mat-checkbox",27),v("click",function(o){return o.stopPropagation()})("change",function(o){let r=D(e).$implicit,a=b(2);return P(o?a.selection.toggle(r):null)}),l()()}if(t&2){let e=i.$implicit,n=b(2);u(),x("checked",n.selection.isSelected(e))}}function cRe(t,i){t&1&&(s(0,"th",28),d(1,"Name"),l())}function dRe(t,i){if(t&1&&(s(0,"td",29)(1,"a",30),d(2),l()()),t&2){let e=i.$implicit,n=b(2);u(),x("routerLink",il(2,aRe,n.controller.id,e.resource_pool_id)),u(),X(" ",e.name," ")}}function mRe(t,i){t&1&&(s(0,"th",28),d(1,"Creation date"),l())}function pRe(t,i){if(t&1&&(s(0,"td",29),d(1),l()),t&2){let e=i.$implicit;u(),U(e.created_at)}}function uRe(t,i){t&1&&(s(0,"th",28),d(1,"Last update"),l())}function hRe(t,i){if(t&1&&(s(0,"td",29),d(1),l()),t&2){let e=i.$implicit;u(),U(e.updated_at)}}function fRe(t,i){t&1&&F(0,"tr",31)}function gRe(t,i){t&1&&F(0,"tr",32)}function _Re(t,i){if(t&1){let e=j();s(0,"header",3)(1,"h1",4),d(2,"Resource pools"),l(),s(3,"div",5)(4,"button",6),v("click",function(){D(e);let o=b();return P(o.onDelete(o.selection.selected))}),d(5," Delete Selected "),l(),s(6,"button",7),v("click",function(){D(e);let o=b();return P(o.addResourcePool())}),d(7," Add Resource Pool "),l()()(),s(8,"form",8)(9,"mat-form-field",9)(10,"input",10),v("input",function(o){D(e);let r=b();return P(r.searchText.set(o.target.value))}),l()()(),s(11,"div",11)(12,"table",12,0),on(14,"resourcePoolsFilter"),qe(15,13),Ae(16,sRe,2,2,"th",14)(17,lRe,2,1,"td",15),Xe(),qe(18,16),Ae(19,cRe,2,0,"th",17)(20,dRe,3,5,"td",18),Xe(),qe(21,19),Ae(22,mRe,2,0,"th",17)(23,pRe,2,1,"td",18),Xe(),qe(24,20),Ae(25,uRe,2,0,"th",17)(26,hRe,2,1,"td",18),Xe(),Ae(27,fRe,1,0,"tr",21)(28,gRe,1,0,"tr",22),l(),F(29,"mat-paginator",23,1),l()}if(t&2){let e=b();u(4),x("disabled",e.selection.selected.length===0),u(6),x("value",e.searchText()),u(2),x("dataSource",$r(14,6,e.dataSource,e.searchText())),u(15),x("matHeaderRowDef",e.displayedColumns),u(),x("matRowDefColumns",e.displayedColumns),u(),x("pageSizeOptions",Jt(9,rRe))}}function vRe(t,i){t&1&&(s(0,"div",2),F(1,"mat-spinner",33),l())}var aE=(()=>{class t{route=f(Ye);controllerService=f(We);toasterService=f(fe);resourcePoolsService=f(Yp);dialog=f(Je);controller;resourcePoolsPaginator;resourcePoolsSort;displayedColumns=["select","name","created_at","updated_at"];selection=new ha(!0,[]);resourcePools=me([]);dataSource=new Nr;searchText=ae("");isReady=me(!1);constructor(){}ngOnInit(){let e=this.route.parent.snapshot.paramMap.get("controller_id");this.controllerService.get(+e).then(n=>{this.controller=n,this.refresh()})}ngAfterViewInit(){this.resourcePoolsPaginator.changes.subscribe(e=>{this.dataSource.paginator=e.first}),this.resourcePoolsSort.changes.subscribe(e=>{this.dataSource.sort=e.first}),this.dataSource.sortingDataAccessor=(e,n)=>n==="name"?e[n]?e[n].toLowerCase():"":e[n]}isAllSelected(){let e=this.selection.selected.length,n=this.resourcePools().length;return e===n}masterToggle(){this.isAllSelected()?this.selection.clear():this.resourcePools().forEach(e=>this.selection.select(e))}addResourcePool(){this.dialog.open(oE,{width:"400px",autoFocus:!1,disableClose:!0,data:{controller:this.controller}}).afterClosed().subscribe(e=>{e&&this.refresh()})}refresh(){this.resourcePoolsService.getAll(this.controller).subscribe(e=>{this.isReady.set(!0),this.resourcePools.set(e),this.dataSource.data=e,this.selection.clear()})}onDelete(e){this.dialog.open(rE,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:{pools:e}}).afterClosed().subscribe(n=>{if(n){let o=e.map(r=>this.resourcePoolsService.delete(this.controller,r.resource_pool_id));lo(o).subscribe(()=>{this.refresh()},r=>{this.toasterService.error("An error occur while trying to delete resource pool")})}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-resource-pools-management"]],viewQuery:function(n,o){if(n&1&&gn(iRe,5)(oRe,5),n&2){let r;gt(r=_t())&&(o.resourcePoolsPaginator=r),gt(r=_t())&&(o.resourcePoolsSort=r)}},inputs:{searchText:[1,"searchText"]},outputs:{searchText:"searchTextChange"},decls:2,vars:1,consts:[["resourcePoolsSort","matSort"],["resourcePoolsPaginator","matPaginator"],[1,"resource-pools-management__loader"],[1,"resource-pools-management__header"],[1,"resource-pools-management__title"],[1,"resource-pools-management__actions"],["mat-raised-button","","color","primary",1,"resource-pools-management__button",3,"click","disabled"],["mat-raised-button","","color","primary",1,"resource-pools-management__button",3,"click"],[1,"resource-pools-management__search-form"],[1,"resource-pools-management__search"],["matInput","","placeholder","Search resource pool by name",3,"input","value"],[1,"resource-pools-management__table-container"],["mat-table","","matSort","",3,"dataSource"],["matColumnDef","select"],["mat-header-cell","","class","resource-pools-management__small-col",4,"matHeaderCellDef"],["mat-cell","","class","resource-pools-management__small-col",4,"matCellDef"],["matColumnDef","name"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","created_at"],["matColumnDef","updated_at"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["showFirstLastButtons","","aria-label","Select page",3,"pageSizeOptions"],["mat-header-cell","",1,"resource-pools-management__small-col"],[3,"change","checked","indeterminate"],["mat-cell","",1,"resource-pools-management__small-col"],[3,"click","change","checked"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],[1,"resource-pools-management__link",3,"routerLink"],["mat-header-row",""],["mat-row",""],[1,"resource-pools-management__spinner"]],template:function(n,o){n&1&&A(0,_Re,31,10)(1,vRe,2,0,"div",2),n&2&&O(o.isReady()?0:1)},dependencies:[Z,nt,Ue,He,Ci,at,cn,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,Tr,zr,Oo,ma,Ot,Ht,$,le,te,Me,ke,we,Te,Ce,Si,Xo,xG],styles:['[_nghost-%COMP%]{display:block;width:100%}.resource-pools-management__header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:20px 0;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.resource-pools-management__title[_ngcontent-%COMP%]{font-size:24px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.resource-pools-management__actions[_ngcontent-%COMP%]{display:flex;gap:12px}.resource-pools-management__button[_ngcontent-%COMP%]{margin:12px 0;height:48px;border-radius:12px;font-size:16px;font-weight:500;text-transform:none;letter-spacing:.5px;transition:all .2s cubic-bezier(.4,0,.2,1)}.resource-pools-management__button[_ngcontent-%COMP%]:hover:not([disabled]){transform:translateY(-2px);box-shadow:0 4px 12px color-mix(in srgb,var(--mat-sys-primary) 30%,transparent)}.resource-pools-management__button[_ngcontent-%COMP%]:active:not([disabled]){transform:translateY(0)}.resource-pools-management__search-form[_ngcontent-%COMP%]{display:flex;justify-content:center;margin:16px auto;width:100%;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .05s both}.resource-pools-management__search[_ngcontent-%COMP%]{width:100%;max-width:1000px}.resource-pools-management__table-container[_ngcontent-%COMP%]{border-radius:16px;overflow:hidden;width:100%;background:var(--mat-sys-surface);box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .15s both}.resource-pools-management__table-container--hidden[_ngcontent-%COMP%]{display:none}mat-row[_ngcontent-%COMP%]{transition:all .2s cubic-bezier(.4,0,.2,1);cursor:default;position:relative}mat-row[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 3%,transparent);transform:scale(1.002)}mat-row[_ngcontent-%COMP%]:nth-child(2n){background-color:color-mix(in srgb,var(--mat-sys-on-surface) 1%,transparent)}mat-row[_ngcontent-%COMP%]:nth-child(2n):hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 4%,transparent)}.mat-header-row[_ngcontent-%COMP%]{position:sticky;top:0;z-index:10;background:var(--mat-sys-surface)}.mat-header-row[_ngcontent-%COMP%] mat-header-cell[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--mat-sys-on-surface-variant);letter-spacing:.5px;text-transform:uppercase}mat-header-cell[_ngcontent-%COMP%], mat-cell[_ngcontent-%COMP%]{justify-content:center;padding:0 16px}mat-cell[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface)}mat-cell[mat-column=name][_ngcontent-%COMP%]{justify-content:flex-start;font-weight:500}.resource-pools-management__link[_ngcontent-%COMP%]{transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-block;transform-origin:left center;color:var(--mat-sys-primary);text-decoration:none;font-weight:500;position:relative}.resource-pools-management__link[_ngcontent-%COMP%]:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:2px;background-color:currentColor;transition:width .2s cubic-bezier(.4,0,.2,1)}.resource-pools-management__link[_ngcontent-%COMP%]:hover{color:color-mix(in srgb,var(--mat-sys-primary) 80%,black);transform:translateY(-2px)}.resource-pools-management__link[_ngcontent-%COMP%]:hover:after{width:100%}.resource-pools-management__overflow-text[_ngcontent-%COMP%]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding-right:5px}mat-cell[mat-column=actions][_ngcontent-%COMP%], mat-header-cell[mat-column=actions][_ngcontent-%COMP%]{justify-content:flex-end;padding:0 16px}mat-cell[mat-column=actions][_ngcontent-%COMP%]{overflow:visible}.resource-pools-management__small-col[_ngcontent-%COMP%]{width:60px;min-width:60px}.resource-pools-management__loader[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-height:200px}.resource-pools-management__spinner[_ngcontent-%COMP%]{width:48px;height:48px}mat-paginator[_ngcontent-%COMP%]{background:var(--mat-sys-surface);color:var(--mat-sys-on-surface)}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.resource-pools-management__header[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:16px;padding:16px 0}.resource-pools-management__actions[_ngcontent-%COMP%]{width:100%;flex-direction:column}.resource-pools-management__button[_ngcontent-%COMP%]{width:100%;height:44px;font-size:15px}.resource-pools-management__actions-cell[_ngcontent-%COMP%]{flex-wrap:wrap;gap:4px}mat-cell[_ngcontent-%COMP%]{padding:0 12px;font-size:13px}}'],changeDetection:0})}return t})();var sE=(()=>{class t{data;dialogRef=f(Pe);constructor(e){this.data=e}static \u0275fac=function(n){return new(n||t)(st(V3))};static \u0275cmp=L({type:t,selectors:[["app-delete-resource-confirmation-dialog"]],decls:7,vars:2,consts:[["mat-dialog-title",""],["mat-dialog-actions",""],["mat-button","",3,"click"],["mat-button","","mat-raised-button","","color","primary",3,"click"]],template:function(n,o){n&1&&(s(0,"h2",0),d(1),l(),s(2,"div",1)(3,"button",2),v("click",function(){return o.dialogRef.close()}),d(4,"No, cancel"),l(),s(5,"button",3),v("click",function(){return o.dialogRef.close(o.data)}),d(6,"Yes, delete!"),l()()),n&2&&(u(),Hi("Delete resource ",o.data.resource_type,"/",o.data.name,"?"))},dependencies:[Z,Ce,Ve,Be,$,le],encapsulation:2,changeDetection:0})}return t})();var bRe=t=>["/controller",t,"management","pools"],CRe=(t,i)=>i.name;function xRe(t,i){if(t&1&&(s(0,"mat-option",24),d(1),l()),t&2){let e=i.$implicit;x("value",e),u(),X(" ",e," ")}}function yRe(t,i){if(t&1){let e=j();s(0,"div",27)(1,"span",29),d(2),l(),s(3,"div",30)(4,"button",31),v("click",function(){let o=D(e).$implicit,r=b();return P(r.deleteResource(o))}),s(5,"mat-icon"),d(6,"delete"),l()()()()}if(t&2){let e=i.$implicit;u(2),U(e.name)}}function SRe(t,i){t&1&&(s(0,"div",28)(1,"mat-icon"),d(2,"folder_open"),l(),s(3,"span"),d(4,"No resources in this pool"),l()())}var lE=(()=>{class t{toastService=f(fe);route=f(Ye);resourcePoolsService=f(Yp);dialog=f(Je);controller;pool=me(void 0);addResourceFormControl=new Nh("");addResourceFilteredOptions;projects=me([]);editPoolForm=new VC({poolname:new Nh("")});ngOnInit(){this.route.data.subscribe(e=>{this.controller=e.controller,this.pool.set(e.pool),this.editPoolForm.patchValue({poolname:e.pool.name}),this.refresh()})}onUpdate(){let e=this.editPoolForm.get("poolname")?.value;e&&this.pool()&&(this.pool.update(n=>n&&tt(H({},n),{name:e})),this.resourcePoolsService.update(this.controller,this.pool()).subscribe(n=>{this.toastService.success(`Pool ${n.name} updated`)}))}addResource(){let e=this.addResourceFormControl.value,n=this.projects().filter(o=>o.name.includes(e));if(n.length===1){this.resourcePoolsService.addResource(this.controller,this.pool(),n[0]).subscribe(()=>{this.toastService.success(`Project ${n[0].name} added to pool: ${this.pool().name}`),this.refresh(),this.addResourceFormControl.setValue("")});return}if(n.length===0){this.toastService.error(`Cannot find related project with string: ${e}`);return}n.length>1&&this.toastService.error(`${n.length} matches for ${e}, please be more accurate`)}deleteResource(e){this.dialog.open(sE,{panelClass:["base-confirmation-dialog-panel","confirmation-danger-panel"],data:e}).afterClosed().subscribe(n=>{n&&this.resourcePoolsService.deleteResource(this.controller,n,this.pool()).subscribe(()=>{this.refresh(),this.toastService.success(`Resource ${n.name} deleted from pool ${this.pool().name}`)})})}refresh(){this.resourcePoolsService.get(this.controller,this.pool().resource_pool_id).subscribe(e=>{this.pool.set(e)}),this.resourcePoolsService.getFreeResources(this.controller).subscribe(e=>{this.projects.set(e),this.addResourceFilteredOptions=this.addResourceFormControl.valueChanges.pipe(li(""),yt(n=>this.projects().filter(o=>o.name.toLowerCase().includes(n?.toLowerCase()||"")).map(o=>o.name)))})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-resource-pool-details"]],decls:54,vars:20,consts:[["auto","matAutocomplete"],[1,"resource-pool-details"],[1,"resource-pool-details__header"],[1,"resource-pool-details__header-content"],["mat-icon-button","","matTooltip","Back to resource pools management",1,"resource-pool-details__back-btn",3,"routerLink"],[1,"resource-pool-details__title"],[1,"resource-pool-details__content"],[1,"resource-pool-details__details"],[3,"ngSubmit","formGroup"],[1,"resource-pool-details__form-field"],["matInput","","type","text","formControlName","poolname"],[1,"resource-pool-details__info-grid"],[1,"resource-pool-details__info-label"],[1,"resource-pool-details__info-value"],[1,"resource-pool-details__info-value","resource-pool-details__info-value--mono"],[1,"resource-pool-details__actions"],["mat-raised-button","","color","primary","type","submit"],[1,"resource-pool-details__divider",3,"vertical"],[1,"resource-pool-details__resources"],[1,"resource-pool-details__resources-title"],[1,"resource-pool-details__add-form"],["appearance","outline",1,"resource-pool-details__add-input"],["matInput","","type","text","placeholder","Search project...",3,"formControl","matAutocomplete"],["autoActiveFirstOption",""],[3,"value"],["mat-icon-button","","color","primary","matTooltip","Add project",1,"resource-pool-details__add-button",3,"click"],[1,"resource-pool-details__list"],[1,"resource-pool-details__item"],[1,"resource-pool-details__empty"],[1,"resource-pool-details__item-name"],[1,"resource-pool-details__item-actions"],["mat-icon-button","","color","warn","matTooltip","Delete resource",3,"click"]],template:function(n,o){if(n&1&&(s(0,"div",1)(1,"div",2)(2,"div",3)(3,"a",4)(4,"mat-icon"),d(5,"keyboard_arrow_left"),l()(),s(6,"h1",5),d(7),l()()(),s(8,"div",6)(9,"div",7)(10,"form",8),v("ngSubmit",function(){return o.onUpdate()}),s(11,"mat-form-field",9)(12,"mat-label"),d(13,"Resource pool name"),l(),F(14,"input",10),l(),s(15,"div",11)(16,"span",12),d(17,"Creation date:"),l(),s(18,"span",13),d(19),on(20,"date"),l(),s(21,"span",12),d(22,"Last update:"),l(),s(23,"span",13),d(24),on(25,"date"),l(),s(26,"span",12),d(27,"UUID:"),l(),s(28,"span",14),d(29),l()(),s(30,"div",15)(31,"button",16),d(32,"Update resource pool"),l()()()(),F(33,"mat-divider",17),s(34,"div",18)(35,"h3",19),d(36,"Resources"),l(),s(37,"div",20)(38,"mat-form-field",21)(39,"mat-label"),d(40,"Add project to resource pool"),l(),F(41,"input",22),s(42,"mat-autocomplete",23,0),J(44,xRe,2,2,"mat-option",24,Fe),on(46,"async"),l()(),s(47,"button",25),v("click",function(){return o.addResource()}),s(48,"mat-icon"),d(49,"add"),l()()(),s(50,"div",26),J(51,yRe,7,1,"div",27,CRe,!1,SRe,5,0,"div",28),l()()()()),n&2){let r=Re(43);u(3),x("routerLink",ln(18,bRe,o.controller.id)),u(4),X("Resource pool: ",o.pool().name),u(3),x("formGroup",o.editPoolForm),u(9),U($r(20,10,o.pool().created_at,"medium")),u(5),U($r(25,13,o.pool().updated_at,"medium")),u(5),X(" ",o.pool().resource_pool_id," "),u(4),x("vertical",!0),u(8),x("formControl",o.addResourceFormControl)("matAutocomplete",r),u(3),ee(oi(46,16,o.addResourceFilteredOptions)),u(7),ee(o.pool().resources)}},dependencies:[Z,nt,Ue,vt,mt,He,ct,bm,pt,bt,at,cn,Me,ke,lt,we,Te,$,le,ze,te,se,Ea,ls,Ds,Ul,St,el,Ce,Gt,Kt,Jr,DC],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.resource-pool-details[_ngcontent-%COMP%]{padding:20px 24px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out;display:flex;flex-direction:column;align-items:center}.resource-pool-details__header[_ngcontent-%COMP%]{margin-bottom:24px;width:100%;max-width:1000px}.resource-pool-details__header-content[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.resource-pool-details__back-btn[_ngcontent-%COMP%]{flex-shrink:0}.resource-pool-details__title[_ngcontent-%COMP%]{font-size:24px;font-weight:500;color:var(--mat-sys-on-surface);margin:0}.resource-pool-details__content[_ngcontent-%COMP%]{width:100%;max-width:1000px;display:flex;gap:24px}@media(max-width:768px){.resource-pool-details__content[_ngcontent-%COMP%]{flex-direction:column}}.resource-pool-details__details[_ngcontent-%COMP%]{width:350px;flex-shrink:0;display:flex;flex-direction:column;gap:16px;padding:24px;background:var(--mat-sys-surface);border-radius:12px;border:1px solid var(--mat-sys-outline-variant)}.resource-pool-details__form-field[_ngcontent-%COMP%]{width:100%}.resource-pool-details__info-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:auto 1fr;gap:8px 16px}.resource-pool-details__info-label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--mat-sys-on-surface-variant);text-transform:uppercase;letter-spacing:.5px;display:flex;align-items:center}.resource-pool-details__info-value[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface);word-break:break-all}.resource-pool-details__info-value--mono[_ngcontent-%COMP%]{font-family:monospace;font-size:12px}.resource-pool-details__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;padding-top:8px}.resource-pool-details__divider[_ngcontent-%COMP%]{width:1px;background:var(--mat-sys-outline-variant);margin:0 16px}@media(max-width:768px){.resource-pool-details__divider[_ngcontent-%COMP%]{display:none}}.resource-pool-details__resources[_ngcontent-%COMP%]{flex:1;min-width:0;padding:24px;background:var(--mat-sys-surface);border-radius:12px;border:1px solid var(--mat-sys-outline-variant)}.resource-pool-details__resources-title[_ngcontent-%COMP%]{font-size:18px;font-weight:600;color:var(--mat-sys-on-surface);margin:0 0 16px}.resource-pool-details__add-form[_ngcontent-%COMP%]{display:flex;gap:8px;margin-bottom:16px}.resource-pool-details__add-input[_ngcontent-%COMP%]{flex:1}.resource-pool-details__add-button[_ngcontent-%COMP%]{flex-shrink:0}.resource-pool-details__list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.resource-pool-details__item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--mat-sys-surface-container-low);border-radius:8px;transition:background-color .2s ease}.resource-pool-details__item[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-high)}.resource-pool-details__item-name[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.resource-pool-details__item-actions[_ngcontent-%COMP%]{flex-shrink:0}.resource-pool-details__empty[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px;color:var(--mat-sys-on-surface-variant);font-size:14px;text-align:center}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}"],changeDetection:0})}return t})();var yG=(()=>{class t{controllerService;resourcePoolsService;constructor(e,n){this.controllerService=e,this.resourcePoolsService=n}resolve(e,n){let o=e.paramMap.get("controller_id"),r=e.paramMap.get("pool_id");return or(this.controllerService.get(+o)).pipe(fn(a=>this.resourcePoolsService.get(a,r)),hi(a=>zi(()=>a)))}static \u0275fac=function(n){return new(n||t)(ge(We),ge(Yp))};static \u0275prov=Q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var wRe=[{path:"controller/:controller_id/login",component:rS},{path:"",component:CT,children:[{path:"controllers",component:lT},{path:"",redirectTo:"controllers",pathMatch:"full"},{path:"bundled",component:By},{path:"controller/:controller_id/loggeduser",component:IT},{path:"controller/:controller_id/image-manager",component:FT},{path:"controller/:controller_id/projects",component:aT,canActivate:[Nn],resolve:{controller:M_}},{path:"controller/:controller_id/help",component:Ky},{path:"controller/:controller_id/settings",component:hT},{path:"controller/:controller_id/settings/console",component:mT},{path:"controller/:controller_id/management/pools/:pool_id",component:lE,canActivate:[Nn],resolve:{pool:yG,controller:M_}},{path:"installed-software",component:iS},{path:"controller/:controller_id/systemstatus",component:_T,canActivate:[Nn]},{path:"controller/:controller_ip/:controller_port/project/:project_id",component:qy,canActivate:[Nn]},{path:"controller/:controller_id/preferences",component:PS,canActivate:[Nn]},{path:"controller/:controller_id/computes",component:sV,canActivate:[Nn]},{path:"controller/:controller_id/preferences/builtin",component:aS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/builtin/ethernet-hubs",component:uS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/builtin/ethernet-hubs/addtemplate",component:mS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/builtin/ethernet-hubs/:template_id",component:pS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/builtin/ethernet-switches",component:gS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/builtin/ethernet-switches/addtemplate",component:hS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/builtin/ethernet-switches/:template_id",component:fS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/builtin/cloud-nodes",component:dS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/builtin/cloud-nodes/addtemplate",component:lS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/builtin/cloud-nodes/:template_id",component:cS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/dynamips/templates",component:MS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/dynamips/templates/addtemplate",component:yS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/dynamips/templates/:template_id",component:wS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/dynamips/templates/:template_id/copy",component:SS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/qemu/templates",component:NS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/qemu/templates/:template_id/copy",component:AS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/qemu/templates/:template_id",component:OS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/qemu/addtemplate",component:IS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/vpcs/templates",component:HS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/vpcs/templates/:template_id",component:$S,canActivate:[Nn]},{path:"controller/:controller_id/preferences/vpcs/addtemplate",component:jS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/virtualbox/templates",component:LS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/virtualbox/templates/:template_id",component:FS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/virtualbox/addtemplate",component:RS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/vmware/templates",component:zS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/vmware/templates/:template_id",component:VS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/vmware/addtemplate",component:BS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/docker/templates",component:xS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/docker/templates/:template_id",component:CS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/docker/templates/:template_id/copy",component:bS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/docker/addtemplate",component:vS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/iou/templates",component:DS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/iou/templates/:template_id",component:ES,canActivate:[Nn]},{path:"controller/:controller_id/preferences/iou/templates/:template_id/copy",component:TS,canActivate:[Nn]},{path:"controller/:controller_id/preferences/iou/addtemplate",component:kS,canActivate:[Nn]},{path:"controller/:controller_id/management",component:LT,children:[{path:"users",component:PT},{path:"groups",component:UT},{path:"roles",component:qT},{path:"pools",component:aE},{path:"ACL",component:nE}]},{path:"controller/:controller_id/management/roles/:role_id",component:QT,resolve:{role:_G,controller:M_}}]},{path:"controller/:controller_id/project/:project_id",component:iT,canActivate:[Nn],canDeactivate:[vT]},{path:"controller/:controller_id/project/:project_id/nodes/:node_id",component:cC,canActivate:[Nn]},{path:"static/web-ui/controller/:controller_id/project/:project_id/nodes/:node_id",component:cC,canActivate:[Nn]},{path:"**",component:uV}],SG=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[at.forRoot(wRe,{anchorScrolling:"enabled",enableTracing:!1,scrollPositionRestoration:"enabled"}),at]})}return t})();var cE=class{builtin;filename;symbol_id;raw;theme};var wG=(()=>{class t{convert(e){let n=new cE;return n.symbol_id=e.id,n.builtin=e.builtin,n.filename=e.filename,n.raw=e.raw,n}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var MG=(()=>{class t{convert(e){let n={font_family:void 0,font_size:void 0,font_weight:void 0};return Mg(e,{context:"declarationList"}).children.forEach(r=>{r.property==="font-size"&&r.value&&r.value.children&&r.value.children.forEach(a=>{a.type==="Dimension"&&(n.font_size=parseInt(a.value))}),r.property==="font-family"&&r.value&&r.value.children&&r.value.children.forEach(a=>{a.type==="Identifier"&&(n.font_family=a.name)}),r.property==="font-weight"&&r.value&&r.value.children&&r.value.children.forEach(a=>{a.type==="Identifier"&&(n.font_weight=a.name)})}),n}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var kG=[V2,Lp,Fp,zg,Rp,hd,jg,Op,Lg,B2,Gg,w2,pd,F2,O2,R2,N2,A2,L2];var TG=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({providers:[Ll,ca,u_,yk,Sk,wk,Mk,kk,kp,Vp,ud,Ig,Ep,KS,jo,Ko,$l,za,zp,Ps,Mp,Tg,Pg,Bw,H2,fd,Wg,q2,jp,qg,wG,Dg,Eg,zw,Tp,ag,sg,lg,cg,Bg,Vl,rd,MG,Hg,Ug,...kG],imports:[Z,Qe,te]})}return t})();var EG=(()=>{class t extends ym{getItemKey(e){return e.symbol_id}static \u0275fac=(()=>{let e;return function(o){return(e||(e=fi(t)))(o||t)}})();static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var DG=(()=>{class t{injector=f(Di);extractError(e){return e&&e.ngOriginalError&&(e=e.ngOriginalError),typeof e=="string"||e instanceof Error?e:e instanceof Q5?e.error instanceof Error?e.error:e.error instanceof ErrorEvent?e.error.message:typeof e.error=="string"?`Server returned code ${e.status} with body "${e.error}"`:e.message:null}handleError(e){let n=this.extractError(e)||"Handled unknown error";if(e.error&&e.error.status&&!(e.error.status===400||e.error.status===403||e.error.status===404||e.error.status===409)&&console.error(n),!e)return;let o=this.injector.get(fe);e.error?.message?o.error(e.error.message):e.message?o.error(e.message):e.error&&o.error(e.error)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var MRe=(t,i)=>i.value;function kRe(t,i){t&1&&(s(0,"th",11),d(1,"Adapter number"),l())}function TRe(t,i){if(t&1&&(s(0,"td",12),d(1),l()),t&2){let e=i.$implicit;u(),X("Adapter ",e.adapter_number)}}function ERe(t,i){t&1&&(s(0,"th",11),d(1,"Port name"),l())}function DRe(t,i){if(t&1){let e=j();s(0,"td",12)(1,"input",13),v("input",function(o){let r=D(e).$implicit,a=b();return P(a.onPortNameChange(r.adapter_number,o.target.value))}),l()()}if(t&2){let e=i.$implicit;u(),x("value",e.port_name)}}function PRe(t,i){t&1&&(s(0,"th",11),d(1,"Adapter type"),l())}function IRe(t,i){if(t&1&&(s(0,"mat-option",15),d(1),l()),t&2){let e=i.$implicit;x("value",e.value),u(),X(" ",e.name," ")}}function ARe(t,i){if(t&1){let e=j();s(0,"td",12)(1,"mat-select",14),v("selectionChange",function(o){let r=D(e).$implicit,a=b();return P(a.onAdapterTypeChange(r.adapter_number,o.value))}),J(2,IRe,2,2,"mat-option",15,MRe),l()()}if(t&2){let e=i.$implicit,n=b();u(),x("value",e.adapter_type),u(),ee(n.networkTypes())}}function ORe(t,i){t&1&&(s(0,"th",11),d(1,"MAC address"),l())}function NRe(t,i){if(t&1){let e=j();s(0,"td",12)(1,"input",16),v("input",function(o){let r=D(e).$implicit,a=b();return P(a.onMacAddressChange(r.adapter_number,o.target.value))}),l()()}if(t&2){let e=i.$implicit;u(),x("value",e.mac_address)}}function RRe(t,i){t&1&&(s(0,"th",11),d(1,"Actions"),l())}function FRe(t,i){if(t&1){let e=j();s(0,"td",12)(1,"button",17),v("click",function(){let o=D(e).$implicit,r=b();return P(r.delete(o))}),s(2,"mat-icon",18),d(3,"delete"),l()()()}}function LRe(t,i){t&1&&F(0,"tr",19)}function BRe(t,i){t&1&&F(0,"tr",20)}var PG=(()=>{class t{cd=f(K);networkTypes=oe([]);displayedColumns=oe([]);adapters=ae([]);onAdd(){let e=this.adapters(),n={adapter_number:e.length,adapter_type:this.networkTypes()[0]?.value};this.adapters.set([...e,n])}delete(e){this.adapters.set(this.adapters().filter(n=>n!==e))}onPortNameChange(e,n){this.adapters.update(o=>o.map(r=>r.adapter_number===e?tt(H({},r),{port_name:n}):r)),this.cd.markForCheck()}onAdapterTypeChange(e,n){this.adapters.update(o=>o.map(r=>r.adapter_number===e?tt(H({},r),{adapter_type:n}):r)),this.cd.markForCheck()}onMacAddressChange(e,n){this.adapters.update(o=>o.map(r=>r.adapter_number===e?tt(H({},r),{mac_address:n}):r)),this.cd.markForCheck()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-custom-adapters-table"]],inputs:{networkTypes:[1,"networkTypes"],displayedColumns:[1,"displayedColumns"],adapters:[1,"adapters"]},outputs:{adapters:"adaptersChange"},decls:20,vars:3,consts:[["mat-table","",3,"dataSource"],["matColumnDef","adapter_number"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","port_name"],["matColumnDef","adapter_type"],["matColumnDef","mac_address"],["matColumnDef","actions"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-button","",1,"form-field",3,"click"],["mat-header-cell",""],["mat-cell",""],["matInput","","placeholder","Port name",2,"width","120px",3,"input","value"],["placeholder","Type",3,"selectionChange","value"],[3,"value"],["matInput","","placeholder","XX:XX:XX:XX:XX:XX",2,"width","150px",3,"input","value"],["mat-icon-button","","matTooltip","Delete adapter","matTooltipClass","custom-tooltip",3,"click"],["aria-label","Delete adapter"],["mat-header-row",""],["mat-row",""]],template:function(n,o){n&1&&(s(0,"table",0),qe(1,1),Ae(2,kRe,2,0,"th",2)(3,TRe,2,1,"td",3),Xe(),qe(4,4),Ae(5,ERe,2,0,"th",2)(6,DRe,2,1,"td",3),Xe(),qe(7,5),Ae(8,PRe,2,0,"th",2)(9,ARe,4,1,"td",3),Xe(),qe(10,6),Ae(11,ORe,2,0,"th",2)(12,NRe,2,1,"td",3),Xe(),qe(13,7),Ae(14,RRe,2,0,"th",2)(15,FRe,4,0,"td",3),Xe(),Ae(16,LRe,1,0,"tr",8)(17,BRe,1,0,"tr",9),l(),s(18,"button",10),v("click",function(){return o.onAdd()}),d(19,"Add"),l()),n&2&&(x("dataSource",o.adapters()),u(16),x("matHeaderRowDef",o.displayedColumns()),u(),x("matRowDefColumns",o.displayedColumns()))},dependencies:[Z,In,Gn,qn,Kn,Xn,Wn,Zn,Qn,Yn,Jn,ei,Mt,At,St,Jo,$,le,ze,te,se,Gt,Kt,we,Te,Me],styles:["[_nghost-%COMP%]{display:block;width:100%;background:transparent}.preferences__header[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:32px 20px 16px;display:flex;align-items:center;gap:16px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out}.preferences__back-btn[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;color:var(--mat-sys-on-surface);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__back-btn[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 8%,transparent)}.preferences__title[_ngcontent-%COMP%]{font-size:32px;font-weight:500;color:var(--mat-sys-on-surface);margin:0;padding-bottom:8px}.preferences__content[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding:0 20px 20px;animation:_ngcontent-%COMP%_fadeInSlideIn .4s ease-out .1s both}.preferences__nav-list[_ngcontent-%COMP%]{background:var(--mat-sys-surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent),0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 10%,transparent)}.preferences__nav-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;padding:16px 24px;color:var(--mat-sys-on-surface);text-decoration:none;font-size:16px;font-weight:500;border-bottom:1px solid var(--mat-sys-outline-variant);transition:all .2s cubic-bezier(.4,0,.2,1)}.preferences__nav-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.preferences__nav-item[_ngcontent-%COMP%]:hover{background-color:color-mix(in srgb,var(--mat-sys-on-surface) 5%,transparent)}.preferences__nav-item.mdc-list-item--activated[_ngcontent-%COMP%]{background-color:color-mix(in srgb,var(--mat-sys-primary) 12%,transparent);border-left:3px solid var(--mat-sys-primary)}.preferences__nav-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary);margin-right:8px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px 24px 24px}.preferences__usage-field--full[_ngcontent-%COMP%]{width:100%}@keyframes _ngcontent-%COMP%_fadeInSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.preferences__header[_ngcontent-%COMP%]{padding:24px 16px 12px;gap:12px}.preferences__back-btn[_ngcontent-%COMP%]{width:44px;height:44px}.preferences__title[_ngcontent-%COMP%]{font-size:24px}.preferences__content[_ngcontent-%COMP%]{padding:0 16px 16px}.preferences__nav-item[_ngcontent-%COMP%]{padding:14px 16px;font-size:15px}.preferences__usage-form[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var IG=(()=>{class t{controller=oe(void 0);symbol=oe(void 0);symbolChangedEmitter=new ve;chosenSymbol=me("");symbolChanged(e){this.chosenSymbol.set(e)}chooseSymbol(){this.symbolChangedEmitter.emit(this.chosenSymbol())}cancelChooseSymbol(){this.symbolChangedEmitter.emit(this.symbol())}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-symbols-menu"]],inputs:{controller:[1,"controller"],symbol:[1,"symbol"]},outputs:{symbolChangedEmitter:"symbolChangedEmitter"},decls:11,vars:2,consts:[[1,"content","configurator"],[1,"default-header"],[1,"row"],[1,"col"],["mat-button","",1,"top-button","cancel-button",3,"click"],["mat-raised-button","","color","primary",1,"top-button",3,"click"],[1,"default-content"],[3,"symbolChanged","controller","symbol"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1",3),d(4,"Symbol selection"),l(),s(5,"button",4),v("click",function(){return o.cancelChooseSymbol()}),d(6,"Cancel"),l(),s(7,"button",5),v("click",function(){return o.chooseSymbol()}),d(8,"Choose symbol"),l()()(),s(9,"div",6)(10,"app-symbols",7),v("symbolChanged",function(a){return o.symbolChanged(a)}),l()()()),n&2&&(u(10),x("controller",o.controller())("symbol",o.symbol()))},dependencies:[Z,$,le,ap],styles:["[_nghost-%COMP%]{display:block}.configurator[_ngcontent-%COMP%]{position:fixed;inset:0;background-color:color-mix(in srgb,var(--mat-sys-shadow) 50%,transparent);z-index:1000;overflow-y:auto}.content[_ngcontent-%COMP%]{max-width:800px;margin:40px auto;background:var(--mat-sys-surface);border-radius:16px;box-shadow:0 12px 40px color-mix(in srgb,var(--mat-sys-shadow) 25%,transparent),0 4px 12px color-mix(in srgb,var(--mat-sys-shadow) 12%,transparent)}.default-header[_ngcontent-%COMP%]{padding:16px 24px;border-bottom:1px solid color-mix(in srgb,var(--mat-sys-outline) 30%,transparent)}.default-header[_ngcontent-%COMP%] .row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:16px}.default-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:0;font-size:20px;font-weight:500;color:var(--mat-sys-on-surface)}.default-content[_ngcontent-%COMP%]{padding:24px}.top-button[_ngcontent-%COMP%]{text-transform:none;font-size:14px;font-weight:500}.cancel-button[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}@media(max-width:768px){.content[_ngcontent-%COMP%]{margin:16px;max-width:calc(100% - 32px)}.default-header[_ngcontent-%COMP%]{padding:12px 16px}.default-content[_ngcontent-%COMP%]{padding:16px}}"],changeDetection:0})}return t})();var AG=(()=>{class t{route=f(Ye);controllerService=f(We);cd=f(K);controller;dynamipsPath=ae("");ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck()})}restoreDefaults(){this.dynamipsPath.set("")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-dynamips-preferences"]],inputs:{dynamipsPath:[1,"dynamipsPath"]},outputs:{dynamipsPath:"dynamipsPathChange"},decls:8,vars:1,consts:[[1,"content"],[1,"default-header"],[1,"row"],[1,"col"],[1,"default-content"],[1,"form-field"],["matInput","","type","text","placeholder","Path to Dynamips",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1",3),d(4,"Dynamips preferences"),l()()(),s(5,"div",4)(6,"mat-form-field",5)(7,"input",6),v("input",function(a){return o.dynamipsPath.set(a.target.value)}),l()()()()),n&2&&(u(7),x("value",o.dynamipsPath()))},dependencies:[Z,Me,ke,we,Te],styles:[".top-button[_ngcontent-%COMP%]{height:36px;margin-top:22px}.form-field[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();var dE=(()=>{class t{httpController;constructor(e){this.httpController=e}get(e){return this.httpController.get(e,"/settings")}update(e,n){return this.httpController.post(e,"/settings",n)}getSettingsForQemu(e){return this.httpController.get(e,"/settings/qemu")}updateSettingsForQemu(e,n){return this.httpController.put(e,"/settings/qemu",{enable_hardware_acceleration:n.enable_hardware_acceleration,require_hardware_acceleration:n.require_hardware_acceleration})}static \u0275fac=function(n){return new(n||t)(ge(an))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();function VRe(t,i){if(t&1&&(s(0,"button",4),d(1," QEMU VM templates "),l()),t&2){let e=b();x("routerLink",no("/controller/",e.controller.id,"/preferences/qemu/templates"))}}function zRe(t,i){if(t&1){let e=j();s(0,"mat-list-item")(1,"mat-checkbox",10),v("change",function(o){D(e);let r=b(2);return r.settings.require_hardware_acceleration=o.checked,P(r.cd.markForCheck())}),d(2," Require Hardware Acceleration (KVM/HAXM) "),l()()}if(t&2){let e=b(2);u(),x("checked",e.settings.require_hardware_acceleration)}}function jRe(t,i){if(t&1){let e=j();s(0,"mat-nav-list")(1,"mat-list-item")(2,"mat-checkbox",10),v("change",function(o){D(e);let r=b();return r.settings.enable_hardware_acceleration=o.checked,P(r.cd.markForCheck())}),d(3," Enable Hardware Acceleration (KVM/HAXM) "),l()(),A(4,zRe,3,1,"mat-list-item"),l()}if(t&2){let e=b();u(2),x("checked",e.settings.enable_hardware_acceleration),u(2),O(e.settings.enable_hardware_acceleration?4:-1)}}var OG=(()=>{class t{route=f(Ye);controllerService=f(We);controllerSettingsService=f(dE);toasterService=f(fe);cd=f(K);controller;settings;ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck(),this.controllerSettingsService.getSettingsForQemu(this.controller).subscribe(o=>{this.settings=o,this.cd.markForCheck()})})}apply(){this.settings.enable_hardware_acceleration||(this.settings.require_hardware_acceleration=!1),this.controllerSettingsService.updateSettingsForQemu(this.controller,this.settings).subscribe(e=>{this.toasterService.success("Changes applied")})}restoreDefaults(){let e={enable_hardware_acceleration:!0,require_hardware_acceleration:!0};this.controllerSettingsService.updateSettingsForQemu(this.controller,e).subscribe(n=>{this.settings=n,this.toasterService.success("Restored to default settings")})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-qemu-preferences"]],decls:14,vars:2,consts:[[1,"content"],[1,"default-header"],[1,"row"],[1,"col"],["mat-raised-button","","color","primary",1,"top-button",3,"routerLink"],[1,"default-content"],[1,"container","mat-elevation-z8"],[1,"buttons-bar"],["mat-button","","color","accent",3,"click"],["mat-raised-button","","color","primary",3,"click"],[3,"change","checked"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1",3),d(4,"QEMU preferences"),l(),A(5,VRe,2,2,"button",4),l()(),s(6,"div",5)(7,"div",6),A(8,jRe,5,2,"mat-nav-list"),l(),s(9,"div",7)(10,"button",8),v("click",function(){return o.restoreDefaults()}),d(11,"Restore defaults"),l(),s(12,"button",9),v("click",function(){return o.apply()}),d(13,"Apply"),l()()()()),n&2&&(u(5),O(o.controller?5:-1),u(3),O(o.settings?8:-1))},dependencies:[Z,at,cn,$,le,Ot,Ht,Ri,ER,Mc],styles:[".top-button[_ngcontent-%COMP%]{height:36px;margin-top:16px}"],changeDetection:0})}return t})();var NG=(()=>{class t{route=f(Ye);controllerService=f(We);cd=f(K);controller;vboxManagePath=ae("");ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck()})}restoreDefaults(){this.vboxManagePath.set("")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-virtual-box-preferences"]],inputs:{vboxManagePath:[1,"vboxManagePath"]},outputs:{vboxManagePath:"vboxManagePathChange"},decls:8,vars:1,consts:[[1,"content"],[1,"default-header"],[1,"row"],[1,"col"],[1,"default-content"],[1,"form-field"],["matInput","","type","text","placeholder","Path to VirtualBox manage",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1",3),d(4,"VirtualBox preferences"),l()()(),s(5,"div",4)(6,"mat-form-field",5)(7,"input",6),v("input",function(a){return o.vboxManagePath.set(a.target.value)}),l()()()()),n&2&&(u(7),x("value",o.vboxManagePath()))},dependencies:[Z,Me,ke,we,Te],encapsulation:2,changeDetection:0})}return t})();var RG=(()=>{class t{route=f(Ye);controllerService=f(We);cd=f(K);controller;vmrunPath=ae("");ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck()})}restoreDefaults(){this.vmrunPath.set("")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-vmware-preferences"]],inputs:{vmrunPath:[1,"vmrunPath"]},outputs:{vmrunPath:"vmrunPathChange"},decls:8,vars:1,consts:[[1,"content"],[1,"default-header"],[1,"row"],[1,"col"],[1,"default-content"],[1,"form-field"],["matInput","","type","text","placeholder","Path to vmrun:",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1",3),d(4,"VMware preferences"),l()()(),s(5,"div",4)(6,"mat-form-field",5)(7,"input",6),v("input",function(a){return o.vmrunPath.set(a.target.value)}),l()()()()),n&2&&(u(7),x("value",o.vmrunPath()))},dependencies:[Z,Me,ke,we,Te],styles:[".form-field[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();var FG=(()=>{class t{route=f(Ye);controllerService=f(We);cd=f(K);controller;vpcsExecutable=ae("");ngOnInit(){let e=this.route.snapshot.paramMap.get("controller_id");this.controllerService.get(parseInt(e,10)).then(n=>{this.controller=n,this.cd.markForCheck()})}restoreDefaults(){this.vpcsExecutable.set("")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-vpcs-preferences"]],inputs:{vpcsExecutable:[1,"vpcsExecutable"]},outputs:{vpcsExecutable:"vpcsExecutableChange"},decls:8,vars:1,consts:[[1,"content"],[1,"default-header"],[1,"row"],[1,"col"],[1,"default-content"],[1,"form-field"],["matInput","","type","text","placeholder","Path to VPCS executable",3,"input","value"]],template:function(n,o){n&1&&(s(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1",3),d(4,"VPCS preferences"),l()()(),s(5,"div",4)(6,"mat-form-field",5)(7,"input",6),v("input",function(a){return o.vpcsExecutable.set(a.target.value)}),l()()()()),n&2&&(u(7),x("value",o.vpcsExecutable()))},dependencies:[Z,Me,ke,we,Te],styles:[".form-field[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();var $Re=["container"],LG=(()=>{class t{sanitizer=f(lr);changeDetector=f(K);mapSettingsService=f(To);consoleService=f(gr);toasterService=f(fe);router=f(ut);vncConsoleService=f(_d);project=oe(void 0);controller;contextConsoleMenu=Ut(kn);container=Ut("container",{read:co});componentBrowserRef;topPosition=me(void 0);leftPosition=me(void 0);node;constructor(){}ngOnInit(){this.setPosition(0,0)}setPosition(e,n){this.topPosition.set(this.sanitizer.bypassSecurityTrustStyle(e+"px")),this.leftPosition.set(this.sanitizer.bypassSecurityTrustStyle(n+"px")),this.changeDetector.detectChanges()}openMenu(e,n,o){this.node=e;let r=this.mapSettingsService.getConsoleContextMenuAction();r?r==="web console"?this.openWebConsole():r==="web console in new tab"?this.openWebConsoleInNewTab():r==="console"&&this.openConsole():(this.setPosition(n,o),this.contextConsoleMenu().openMenu())}openConsole(){this.mapSettingsService.setConsoleContextMenuAction("console"),this.componentBrowserRef=this.container().createComponent(o_),this.componentBrowserRef.setInput("controller",this.controller),this.componentBrowserRef.setInput("node",this.node),this.componentBrowserRef.changeDetectorRef.detectChanges(),this.componentBrowserRef.instance.openConsole()}openWebConsole(){this.mapSettingsService.setConsoleContextMenuAction("web console"),this.node.status==="started"?this.node.console_type==="vnc"?this.vncConsoleService.openVncConsole(this.controller,this.node):this.node.console_type&&this.node.console_type.startsWith("spice")?this.toasterService.error("SPICE console is not yet supported."):(this.mapSettingsService.logConsoleSubject.next(!0),this.consoleService.openConsoleForNode(this.node)):this.toasterService.error("To open console please start the node")}openWebConsoleInNewTab(){if(this.mapSettingsService.setConsoleContextMenuAction("web console in new tab"),this.node.status==="started")if(this.node.console_type==="vnc")this.vncConsoleService.openVncConsole(this.controller,this.node);else if(this.node.console_type&&this.node.console_type.startsWith("spice"))this.toasterService.error("SPICE console is not yet supported.");else if(this.node.console_type==="telnet"){let e=this.router.url.split("/"),n=`/static/web-ui/${e[1]}/${e[2]}/${e[3]}/${e[4]}/nodes/${this.node.node_id}`;window.open(n)}else this.toasterService.error("Console type not supported in new tab");else this.toasterService.error("To open console please start the node")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-context-console-menu"]],viewQuery:function(n,o){n&1&&tn(o.contextConsoleMenu,kn,5)(o.container,$Re,5,co),n&2&&nn(2)},inputs:{project:[1,"project"],controller:"controller"},decls:23,vars:6,consts:[["contextConsoleMenu","matMenu"],["container",""],[1,"context-menu"],[3,"matMenuTriggerFor"],[1,"context-menu-items"],[1,"title"],["mat-menu-item","",3,"click"],[3,"hidden"]],template:function(n,o){if(n&1&&(s(0,"div",2),F(1,"span",3),s(2,"mat-menu",4,0)(4,"span",5),d(5," Choose default behavior for double click on node "),l(),s(6,"button",6),v("click",function(){return o.openConsole()}),s(7,"mat-icon"),d(8,"web_asset"),l(),s(9,"span"),d(10,"Open console"),l()(),s(11,"button",6),v("click",function(){return o.openWebConsole()}),s(12,"mat-icon"),d(13,"http"),l(),s(14,"span"),d(15,"Open web console"),l()(),s(16,"button",6),v("click",function(){return o.openWebConsoleInNewTab()}),s(17,"mat-icon"),d(18,"http"),l(),s(19,"span"),d(20,"Open web console in new tab"),l()()()(),F(21,"template",7,1)),n&2){let r=Re(3);yn("left",o.leftPosition())("top",o.topPosition()),u(),x("matMenuTriggerFor",r),u(20),x("hidden",!0)}},dependencies:[Z,Qe,Fn,ot,kn,te,se],styles:[".context-menu[_ngcontent-%COMP%]{position:absolute;min-height:0}.title[_ngcontent-%COMP%]{margin:8px}"],changeDetection:0})}return t})();var BG=(()=>{class t{controllerService=f(We);settingsService=f(ea);toasterService=f(fe);nodeService=f(wt);controller=oe(void 0);nodes=oe([]);async console(){this.toasterService.error("Console action is only supported in Electron mode")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-console-device-action"]],inputs:{controller:[1,"controller"],nodes:[1,"nodes"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.console()}),s(1,"mat-icon"),d(2,"web_asset"),l(),s(3,"span"),d(4,"Console"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var VG=(()=>{class t{controller=oe(void 0);node=oe(void 0);open(){console.log("Opening file explorer is only supported in Electron mode")}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-open-file-explorer-action"]],inputs:{controller:[1,"controller"],node:[1,"node"]},decls:5,vars:0,consts:[["mat-menu-item","",3,"click"]],template:function(n,o){n&1&&(s(0,"button",0),v("click",function(){return o.open()}),s(1,"mat-icon"),d(2,"tab"),l(),s(3,"span"),d(4,"Open file explorer"),l()())},dependencies:[$,te,se,Qe,ot],encapsulation:2,changeDetection:0})}return t})();var zG=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[TE,wn,TE]})}return t})();var jG=[d_,$,Qe,Dt,bT,te,Me,we,In,Ce,Pl,Si,Zc,Ot,Ri,wl,zr,Mt,Gt,El,go,zG,mo,ZT,id,ti];var mE=(()=>{class t{settingsService;constructor(e,n){Ai.production&&e.events.subscribe(o=>{n.getStatisticsSettings()&&o instanceof Or&&(gtag("set","page",o.url),gtag("send","pageview"))})}static \u0275fac=function(n){return new(n||t)(ge(ut),ge(ea))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var $G=(()=>{class t{controllerService;loginService;constructor(e,n){this.controllerService=e,this.loginService=n}intercept(e,n){return n.handle(e).pipe(hi(o=>zi(()=>o)))}async call(){let e=JSON.parse(localStorage.getItem("isRememberMe"))??null,n=this.loginService.controller_id,o=await this.controllerService.get(parseInt(n,10));o.tokenExpired=!0,await this.controllerService.update(o);try{if(e&&e.isRememberMe){let r=await this.loginService.getLoggedUserRefToken(o,e);o.authToken=r.access_token,o.tokenExpired=!1,await this.controllerService.update(o),await this.loginService.getLoggedUser(o),this.reloadCurrentRoute()}}catch(r){throw r}}reloadCurrentRoute(){location.reload()}static \u0275fac=function(n){return new(n||t)(ge(We),ge(Ml))};static \u0275prov=Q({token:t,factory:t.\u0275fac})}return t})();var URe=["switch"],GRe=["*"];function WRe(t,i){t&1&&(s(0,"span",11),Vn(),s(1,"svg",13),F(2,"path",14),l(),s(3,"svg",15),F(4,"path",16),l()())}var qRe=new kt("mat-slide-toggle-default-options",{providedIn:"root",factory:()=>({disableToggleValue:!1,hideIcon:!1,disabledInteractive:!1})}),pE=class{source;checked;constructor(i,e){this.source=i,this.checked=e}},XRe=(()=>{class t{_elementRef=f(Lt);_focusMonitor=f(xr);_changeDetectorRef=f(K);defaults=f(qRe);_onChange=e=>{};_onTouched=()=>{};_validatorOnChange=()=>{};_uniqueId;_checked=!1;_createChangeEvent(e){return new pE(this,e)}_labelId;get buttonId(){return`${this.id||this._uniqueId}-button`}_switchElement;focus(){this._switchElement.nativeElement.focus()}_noopAnimations=Qi();_focused=!1;name=null;id;labelPosition="after";ariaLabel=null;ariaLabelledby=null;ariaDescribedby;required=!1;color;disabled=!1;disableRipple=!1;tabIndex=0;get checked(){return this._checked}set checked(e){this._checked=e,this._changeDetectorRef.markForCheck()}hideIcon;disabledInteractive;change=new ve;toggleChange=new ve;get inputId(){return`${this.id||this._uniqueId}-input`}constructor(){f(Go).load(yr);let e=f(new ka("tabindex"),{optional:!0}),n=this.defaults;this.tabIndex=e==null?0:parseInt(e)||0,this.color=n.color||"accent",this.id=this._uniqueId=f(Oi).getId("mat-mdc-slide-toggle-"),this.hideIcon=n.hideIcon??!1,this.disabledInteractive=n.disabledInteractive??!1,this._labelId=this._uniqueId+"-label"}ngAfterContentInit(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{e==="keyboard"||e==="program"?(this._focused=!0,this._changeDetectorRef.markForCheck()):e||Promise.resolve().then(()=>{this._focused=!1,this._onTouched(),this._changeDetectorRef.markForCheck()})})}ngOnChanges(e){e.required&&this._validatorOnChange()}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}writeValue(e){this.checked=!!e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}validate(e){return this.required&&e.value!==!0?{required:!0}:null}registerOnValidatorChange(e){this._validatorOnChange=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck()}toggle(){this.checked=!this.checked,this._onChange(this.checked)}_emitChangeEvent(){this._onChange(this.checked),this.change.emit(this._createChangeEvent(this.checked))}_handleClick(){this.disabled||(this.toggleChange.emit(),this.defaults.disableToggleValue||(this.checked=!this.checked,this._onChange(this.checked),this.change.emit(new pE(this,this.checked))))}_getAriaLabelledBy(){return this.ariaLabelledby?this.ariaLabelledby:this.ariaLabel?null:this._labelId}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["mat-slide-toggle"]],viewQuery:function(n,o){if(n&1&&gn(URe,5),n&2){let r;gt(r=_t())&&(o._switchElement=r.first)}},hostAttrs:[1,"mat-mdc-slide-toggle"],hostVars:13,hostBindings:function(n,o){n&2&&(No("id",o.id),It("tabindex",null)("aria-label",null)("name",null)("aria-labelledby",null),Mo(o.color?"mat-"+o.color:""),je("mat-mdc-slide-toggle-focused",o._focused)("mat-mdc-slide-toggle-checked",o.checked)("_mat-animation-noopable",o._noopAnimations))},inputs:{name:"name",id:"id",labelPosition:"labelPosition",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],required:[2,"required","required",dt],color:"color",disabled:[2,"disabled","disabled",dt],disableRipple:[2,"disableRipple","disableRipple",dt],tabIndex:[2,"tabIndex","tabIndex",e=>e==null?0:io(e)],checked:[2,"checked","checked",dt],hideIcon:[2,"hideIcon","hideIcon",dt],disabledInteractive:[2,"disabledInteractive","disabledInteractive",dt]},outputs:{change:"change",toggleChange:"toggleChange"},exportAs:["matSlideToggle"],features:[hn([{provide:Zl,useExisting:ql(()=>t),multi:!0},{provide:LC,useExisting:t,multi:!0}]),un],ngContentSelectors:GRe,decls:14,vars:27,consts:[["switch",""],["mat-internal-form-field","",3,"labelPosition"],["role","switch","type","button",1,"mdc-switch",3,"click","tabIndex","disabled"],[1,"mat-mdc-slide-toggle-touch-target"],[1,"mdc-switch__track"],[1,"mdc-switch__handle-track"],[1,"mdc-switch__handle"],[1,"mdc-switch__shadow"],[1,"mdc-elevation-overlay"],[1,"mdc-switch__ripple"],["mat-ripple","",1,"mat-mdc-slide-toggle-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-switch__icons"],[1,"mdc-label",3,"click","for"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--on"],["d","M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--off"],["d","M20 13H4v-2h16v2z"]],template:function(n,o){if(n&1&&(En(),s(0,"div",1)(1,"button",2,0),v("click",function(){return o._handleClick()}),F(3,"div",3)(4,"span",4),s(5,"span",5)(6,"span",6)(7,"span",7),F(8,"span",8),l(),s(9,"span",9),F(10,"span",10),l(),A(11,WRe,5,0,"span",11),l()()(),s(12,"label",12),v("click",function(a){return a.stopPropagation()}),Yt(13),l()()),n&2){let r=Re(2);x("labelPosition",o.labelPosition),u(),je("mdc-switch--selected",o.checked)("mdc-switch--unselected",!o.checked)("mdc-switch--checked",o.checked)("mdc-switch--disabled",o.disabled)("mat-mdc-slide-toggle-disabled-interactive",o.disabledInteractive),x("tabIndex",o.disabled&&!o.disabledInteractive?-1:o.tabIndex)("disabled",o.disabled&&!o.disabledInteractive),It("id",o.buttonId)("name",o.name)("aria-label",o.ariaLabel)("aria-labelledby",o._getAriaLabelledBy())("aria-describedby",o.ariaDescribedby)("aria-required",o.required||null)("aria-checked",o.checked)("aria-disabled",o.disabled&&o.disabledInteractive?"true":null),u(9),x("matRippleTrigger",r)("matRippleDisabled",o.disableRipple||o.disabled)("matRippleCentered",!0),u(),O(o.hideIcon?-1:11),u(),x("for",o.buttonId),It("id",o._labelId)}},dependencies:[as,Vh],styles:[`.mdc-switch{align-items:center;background:none;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;margin:0;outline:none;overflow:visible;padding:0;position:relative;width:var(--mat-slide-toggle-track-width, 52px)}.mdc-switch.mdc-switch--disabled{cursor:default;pointer-events:none}.mdc-switch.mat-mdc-slide-toggle-disabled-interactive{pointer-events:auto}.mdc-switch__track{overflow:hidden;position:relative;width:100%;height:var(--mat-slide-toggle-track-height, 32px);border-radius:var(--mat-slide-toggle-track-shape, var(--mat-sys-corner-full))}.mdc-switch--disabled.mdc-switch .mdc-switch__track{opacity:var(--mat-slide-toggle-disabled-track-opacity, 0.12)}.mdc-switch__track::before,.mdc-switch__track::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";height:100%;left:0;position:absolute;width:100%;border-width:var(--mat-slide-toggle-track-outline-width, 2px);border-color:var(--mat-slide-toggle-track-outline-color, var(--mat-sys-outline))}.mdc-switch--selected .mdc-switch__track::before,.mdc-switch--selected .mdc-switch__track::after{border-width:var(--mat-slide-toggle-selected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-selected-track-outline-color, transparent)}.mdc-switch--disabled .mdc-switch__track::before,.mdc-switch--disabled .mdc-switch__track::after{border-width:var(--mat-slide-toggle-disabled-unselected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-disabled-unselected-track-outline-color, var(--mat-sys-on-surface))}@media(forced-colors: active){.mdc-switch__track{border-color:currentColor}}.mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0);background:var(--mat-slide-toggle-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch--selected .mdc-switch__track::before{transform:translateX(-100%)}.mdc-switch--selected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-hover-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-focus-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:active .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-pressed-track-color, var(--mat-sys-surface-variant))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::before,.mdc-switch.mdc-switch--disabled .mdc-switch__track::before{background:var(--mat-slide-toggle-disabled-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch__track::after{transform:translateX(-100%);background:var(--mat-slide-toggle-selected-track-color, var(--mat-sys-primary))}[dir=rtl] .mdc-switch__track::after{transform:translateX(100%)}.mdc-switch--selected .mdc-switch__track::after{transform:translateX(0)}.mdc-switch--selected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-hover-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-focus-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:active .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-pressed-track-color, var(--mat-sys-primary))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::after,.mdc-switch.mdc-switch--disabled .mdc-switch__track::after{background:var(--mat-slide-toggle-disabled-selected-track-color, var(--mat-sys-on-surface))}.mdc-switch__handle-track{height:100%;pointer-events:none;position:absolute;top:0;transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);left:0;right:auto;transform:translateX(0);width:calc(100% - var(--mat-slide-toggle-handle-width))}[dir=rtl] .mdc-switch__handle-track{left:auto;right:0}.mdc-switch--selected .mdc-switch__handle-track{transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__handle-track{transform:translateX(-100%)}.mdc-switch__handle{display:flex;pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);left:0;right:auto;transition:width 75ms cubic-bezier(0.4, 0, 0.2, 1),height 75ms cubic-bezier(0.4, 0, 0.2, 1),margin 75ms cubic-bezier(0.4, 0, 0.2, 1);width:var(--mat-slide-toggle-handle-width);height:var(--mat-slide-toggle-handle-height);border-radius:var(--mat-slide-toggle-handle-shape, var(--mat-sys-corner-full))}[dir=rtl] .mdc-switch__handle{left:auto;right:0}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{width:var(--mat-slide-toggle-unselected-handle-size, 16px);height:var(--mat-slide-toggle-unselected-handle-size, 16px);margin:var(--mat-slide-toggle-unselected-handle-horizontal-margin, 0 8px)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-unselected-with-icon-handle-horizontal-margin, 0 4px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{width:var(--mat-slide-toggle-selected-handle-size, 24px);height:var(--mat-slide-toggle-selected-handle-size, 24px);margin:var(--mat-slide-toggle-selected-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-selected-with-icon-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch__handle:has(.mdc-switch__icons){width:var(--mat-slide-toggle-with-icon-handle-size, 24px);height:var(--mat-slide-toggle-with-icon-handle-size, 24px)}.mat-mdc-slide-toggle .mdc-switch:active:not(.mdc-switch--disabled) .mdc-switch__handle{width:var(--mat-slide-toggle-pressed-handle-size, 28px);height:var(--mat-slide-toggle-pressed-handle-size, 28px)}.mat-mdc-slide-toggle .mdc-switch--selected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-selected-pressed-handle-horizontal-margin, 0 22px)}.mat-mdc-slide-toggle .mdc-switch--unselected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-unselected-pressed-handle-horizontal-margin, 0 2px)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-selected-handle-opacity, 1)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-unselected-handle-opacity, 0.38)}.mdc-switch__handle::before,.mdc-switch__handle::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";width:100%;height:100%;left:0;position:absolute;top:0;transition:background-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1),border-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);z-index:-1}@media(forced-colors: active){.mdc-switch__handle::before,.mdc-switch__handle::after{border-color:currentColor}}.mdc-switch--selected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-handle-color, var(--mat-sys-on-primary))}.mdc-switch--selected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-hover-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-focus-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-pressed-handle-color, var(--mat-sys-primary-container))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:hover:not(:focus):not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:focus:not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:active .mdc-switch__handle::after,.mdc-switch--selected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-selected-handle-color, var(--mat-sys-surface))}.mdc-switch--unselected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-handle-color, var(--mat-sys-outline))}.mdc-switch--unselected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-hover-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-focus-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-pressed-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-unselected-handle-color, var(--mat-sys-on-surface))}.mdc-switch__handle::before{background:var(--mat-slide-toggle-handle-surface-color)}.mdc-switch__shadow{border-radius:inherit;bottom:0;left:0;position:absolute;right:0;top:0}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-handle-elevation-shadow)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__shadow,.mdc-switch.mdc-switch--disabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-disabled-handle-elevation-shadow)}.mdc-switch__ripple{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:-1;width:var(--mat-slide-toggle-state-layer-size, 40px);height:var(--mat-slide-toggle-state-layer-size, 40px)}.mdc-switch__ripple::after{content:"";opacity:0}.mdc-switch--disabled .mdc-switch__ripple::after{display:none}.mat-mdc-slide-toggle-disabled-interactive .mdc-switch__ripple::after{display:block}.mdc-switch:hover .mdc-switch__ripple::after{transition:75ms opacity cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:focus .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:active .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:hover:not(:focus) .mdc-switch__ripple::after,.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-hover-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-focus-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--unselected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-pressed-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-hover-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--selected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-focus-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--selected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-pressed-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch__icons{position:relative;height:100%;width:100%;z-index:1;transform:translateZ(0)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-unselected-icon-opacity, 0.38)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-selected-icon-opacity, 0.38)}.mdc-switch__icon{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;opacity:0;transition:opacity 30ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-switch--unselected .mdc-switch__icon{width:var(--mat-slide-toggle-unselected-icon-size, 16px);height:var(--mat-slide-toggle-unselected-icon-size, 16px);fill:var(--mat-slide-toggle-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__icon{width:var(--mat-slide-toggle-selected-icon-size, 16px);height:var(--mat-slide-toggle-selected-icon-size, 16px);fill:var(--mat-slide-toggle-selected-icon-color, var(--mat-sys-on-primary-container))}.mdc-switch--selected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-selected-icon-color, var(--mat-sys-on-surface))}.mdc-switch--selected .mdc-switch__icon--on,.mdc-switch--unselected .mdc-switch__icon--off{opacity:1;transition:opacity 45ms 30ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle{-webkit-user-select:none;user-select:none;display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,.mat-mdc-slide-toggle .mdc-switch__ripple::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple:not(:empty),.mat-mdc-slide-toggle .mdc-switch__ripple::after:not(:empty){transform:translateZ(0)}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mat-focus-indicator::before{content:""}.mat-mdc-slide-toggle .mat-internal-form-field{color:var(--mat-slide-toggle-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-slide-toggle-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-slide-toggle-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-slide-toggle-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-slide-toggle-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-slide-toggle-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-slide-toggle .mat-ripple-element{opacity:.12}.mat-mdc-slide-toggle .mat-focus-indicator::before{border-radius:50%}.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle-track,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__icon,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::after,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::after{transition:none}.mat-mdc-slide-toggle .mdc-switch:enabled+.mdc-label{cursor:pointer}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:var(--mat-slide-toggle-disabled-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-slide-toggle label:empty{display:none}.mat-mdc-slide-toggle-touch-target{position:absolute;top:50%;left:50%;height:var(--mat-slide-toggle-touch-target-size, 48px);width:100%;transform:translate(-50%, -50%);display:var(--mat-slide-toggle-touch-target-display, block)}[dir=rtl] .mat-mdc-slide-toggle-touch-target{left:auto;right:50%;transform:translate(50%, -50%)}
|
||
`],encapsulation:2,changeDetection:0})}return t})(),HG=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=Bt({type:t});static \u0275inj=Ft({imports:[XRe,wn]})}return t})();var QRe=(t,i,e,n)=>({"status-uploading":t,"status-done":i,"status-error":e,"status-canceled":n});function YRe(t,i){return this.trackByTempId}function KRe(t,i){if(t&1&&(qe(0),d(1),Xe()),t&2){let e=b(2);u(),Hi(" Uploading ",e.activeCount," file",e.activeCount!==1?"s":""," ")}}function ZRe(t,i){t&1&&(qe(0),d(1," Uploads complete "),Xe())}function JRe(t,i){if(t&1&&F(0,"mat-progress-bar",6),t&2){let e=b(2);x("value",e.overallProgress)}}function eFe(t,i){t&1&&(qe(0),d(1,"check_circle"),Xe())}function tFe(t,i){t&1&&(qe(0),d(1,"error"),Xe())}function nFe(t,i){t&1&&(qe(0),d(1,"cancel"),Xe())}function iFe(t,i){t&1&&(qe(0),d(1,"insert_drive_file"),Xe())}function oFe(t,i){t&1&&(s(0,"span",15),d(1,"Queued"),l())}function rFe(t,i){if(t&1&&(s(0,"span",15),d(1),l()),t&2){let e=b().$implicit;u(),X("",e.progress,"%")}}function aFe(t,i){t&1&&(s(0,"span",16),d(1,"Done"),l())}function sFe(t,i){if(t&1&&(s(0,"span",17),d(1),l()),t&2){let e=b().$implicit;u(),U(e.errorMessage||"Failed")}}function lFe(t,i){t&1&&(s(0,"span",18),d(1,"Canceled"),l())}function cFe(t,i){if(t&1){let e=j();s(0,"button",21),v("click",function(){D(e);let o=b().$implicit,r=b(3);return P(r.cancelUpload(o.tempId))}),s(1,"mat-icon"),d(2,"close"),l()()}}function dFe(t,i){if(t&1&&F(0,"mat-progress-bar",20),t&2){let e=b().$implicit;x("value",e.progress)}}function mFe(t,i){if(t&1){let e=j();s(0,"div",10)(1,"div",11)(2,"mat-icon",12),A(3,eFe,2,0,"ng-container"),A(4,tFe,2,0,"ng-container"),A(5,nFe,2,0,"ng-container"),A(6,iFe,2,0,"ng-container"),l(),s(7,"div",13),v("click",function(o){let r=D(e).$implicit,a=b(3);return P(a.navigateToFile(r,o))}),s(8,"span",14),d(9),l(),A(10,oFe,2,0,"span",15),A(11,rFe,2,1,"span",15),A(12,aFe,2,0,"span",16),A(13,sFe,2,1,"span",17),A(14,lFe,2,0,"span",18),l(),A(15,cFe,3,0,"button",19),l(),A(16,dFe,1,1,"mat-progress-bar",20),l()}if(t&2){let e=i.$implicit;je("dismissing",e.dismissing),u(2),x("ngClass",EC(16,QRe,e.status==="uploading"||e.status==="queued",e.status==="uploaded",e.status==="error",e.status==="canceled")),u(),O(e.status==="uploaded"?3:-1),u(),O(e.status==="error"?4:-1),u(),O(e.status==="canceled"?5:-1),u(),O(e.status==="uploading"||e.status==="queued"?6:-1),u(2),x("title",e.filename),u(),U(e.filename),u(),O(e.status==="queued"?10:-1),u(),O(e.status==="uploading"?11:-1),u(),O(e.status==="uploaded"?12:-1),u(),O(e.status==="error"?13:-1),u(),O(e.status==="canceled"?14:-1),u(),O(e.status==="uploading"||e.status==="queued"?15:-1),u(),O(e.status==="uploading"||e.status==="queued"?16:-1)}}function pFe(t,i){if(t&1&&(s(0,"div",8),J(1,mFe,17,21,"div",9,YRe,!0),l()),t&2){let e=b(2);u(),ee(e.uploadList)}}function uFe(t,i){if(t&1){let e=j();s(0,"div",0)(1,"div",1),v("click",function(){D(e);let o=b();return P(o.toggleExpanded())}),s(2,"div",2)(3,"mat-icon",3),d(4,"cloud_upload"),l(),s(5,"span",4),A(6,KRe,2,2,"ng-container"),A(7,ZRe,2,0,"ng-container"),l()(),s(8,"div",5),A(9,JRe,1,1,"mat-progress-bar",6),s(10,"mat-icon",7),d(11),l()()(),A(12,pFe,3,0,"div",8),l()}if(t&2){let e=b();u(6),O(e.activeCount>0?6:-1),u(),O(e.activeCount===0?7:-1),u(2),O(e.activeCount>0?9:-1),u(2),U(e.isExpanded()?"expand_more":"expand_less"),u(),O(e.isExpanded()?12:-1)}}var uE=(()=>{class t{imageUploadSessionService=f(D_);router=f(ut);uploads=new Map;isExpanded=me(!0);subscription;ngOnInit(){this.subscription=this.imageUploadSessionService.events$.subscribe(e=>{this.onUploadEvent(e)})}get uploadList(){return Array.from(this.uploads.values())}get hasUploads(){return this.uploads.size>0}get activeCount(){return this.uploadList.filter(e=>e.status==="uploading"||e.status==="queued").length}get overallProgress(){let e=this.uploadList.filter(n=>n.status==="uploading"||n.status==="queued");return e.length?Math.round(e.reduce((n,o)=>n+(o.progress||0),0)/e.length):100}cancelUpload(e){this.imageUploadSessionService.requestCancel(e)}navigateToFile(e,n){n.stopPropagation(),e.controller_id&&this.router.navigate(["/controller",e.controller_id,"image-manager"],{queryParams:{highlight:e.filename}})}toggleExpanded(){this.isExpanded.set(!this.isExpanded())}trackByTempId(e,n){return n.tempId}onUploadEvent(e){let n=this.uploads.get(e.tempId);n?.dismissTimer&&clearTimeout(n.dismissTimer);let o=H(H({},n||{}),e);e.status==="uploaded"||e.status==="error"||e.status==="canceled"?(o.dismissing=!1,o.dismissTimer=setTimeout(()=>{let r=this.uploads.get(e.tempId);r&&(r.dismissing=!0),setTimeout(()=>{this.uploads.delete(e.tempId)},400)},3e3)):o.dismissing=!1,this.uploads.set(e.tempId,o),!n&&e.status==="queued"&&this.isExpanded.set(!0)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe(),this.uploadList.forEach(e=>{e.dismissTimer&&clearTimeout(e.dismissTimer)})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-global-upload-indicator"]],decls:1,vars:1,consts:[[1,"upload-indicator-container"],[1,"upload-indicator-header",3,"click"],[1,"header-left"],[1,"upload-icon"],[1,"header-title"],[1,"header-right"],["mode","determinate",1,"header-progress",3,"value"],[1,"toggle-icon"],[1,"upload-list"],[1,"upload-item",3,"dismissing"],[1,"upload-item"],[1,"upload-item-info"],[1,"file-icon",3,"ngClass"],[1,"upload-item-text",3,"click"],[1,"filename",3,"title"],[1,"status-text"],[1,"status-text","status-done"],[1,"status-text","status-error"],[1,"status-text","status-canceled"],["mat-icon-button","","title","Cancel upload",1,"cancel-btn"],["mode","determinate",1,"item-progress",3,"value"],["mat-icon-button","","title","Cancel upload",1,"cancel-btn",3,"click"]],template:function(n,o){n&1&&A(0,uFe,13,5,"div",0),n&2&&O(o.hasUploads?0:-1)},dependencies:[Z,Zi,te,se,Pl,nd,$,ze],styles:[".upload-indicator-container[_ngcontent-%COMP%]{position:fixed;bottom:16px;right:16px;width:320px;background:var(--mat-sys-surface);border-radius:4px;box-shadow:0 2px 8px color-mix(in srgb,var(--mat-sys-shadow) 20%,transparent);z-index:2000;overflow:hidden;font-size:12px}.upload-indicator-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:8px;cursor:pointer;background:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container);user-select:none}.upload-indicator-header[_ngcontent-%COMP%]:hover{background:var(--mat-sys-primary-fixed-dim)}.header-left[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.upload-icon[_ngcontent-%COMP%]{font-size:14px;height:14px;width:14px;flex-shrink:0}.header-title[_ngcontent-%COMP%]{font-weight:500;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-right[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-shrink:0}.header-progress[_ngcontent-%COMP%]{width:60px}.toggle-icon[_ngcontent-%COMP%]{font-size:14px;height:14px;width:14px}.upload-list[_ngcontent-%COMP%]{max-height:280px;overflow-y:auto;padding:8px 0}.upload-item[_ngcontent-%COMP%]{padding:8px;transition:opacity .4s ease,max-height .4s ease;opacity:1}.upload-item.dismissing[_ngcontent-%COMP%]{opacity:0}.upload-item-info[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.file-icon[_ngcontent-%COMP%]{font-size:14px;height:14px;width:14px;flex-shrink:0}.file-icon.status-uploading[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.file-icon.status-done[_ngcontent-%COMP%]{color:var(--custom-mat-sys-success)}.file-icon.status-error[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.file-icon.status-canceled[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.upload-item-text[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;cursor:pointer}.upload-item-text[_ngcontent-%COMP%]:hover .filename[_ngcontent-%COMP%]{text-decoration:underline}.filename[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;font-weight:500}.status-text[_ngcontent-%COMP%]{font-size:12px;color:var(--mat-sys-on-surface-variant)}.status-text.status-done[_ngcontent-%COMP%]{color:var(--custom-mat-sys-success)}.status-text.status-error[_ngcontent-%COMP%]{color:var(--mat-sys-error);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-text.status-canceled[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.cancel-btn[_ngcontent-%COMP%]{width:10px;height:10px;line-height:10px;flex-shrink:0}.cancel-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:12px;height:12px;width:12px}.item-progress[_ngcontent-%COMP%]{margin-top:8px;height:2px;border-radius:2px}"],changeDetection:0})}return t})();var UG=(()=>{class t{_googleAnalyticsService;constructor(e){this._googleAnalyticsService=e}static \u0275fac=function(n){return new(n||t)(ge(mE))};static \u0275mod=Bt({type:t});static \u0275inj=Ft({providers:[ea,{provide:Sh,useClass:DG},{provide:Y5,useClass:$G,multi:!0},oS,Fi,kl,We,Tl,wt,to,Wi,an,y_,Jk,fe,zo,Xg,dr,ci,EG,Hk,Yo,z2,Vi,xR,np,ja,Al,dE,ra,hp,Fr,pp,Rr,Ss,eS,Jy,Zy,lp,mp,tg,fp,Na,up,ng,ys,td,ws,eg,xm,w_,od,dT,cT,bk,Hl,r_,To,rM,Lo,s_,Gp,wc,rp,yi,mE,gr,_d,l_,M_,Nn,vT,um,Ck,pT,Ml,pa],imports:[PC,K5,SG,CT,p_,iT,LT,qT,PT,lT,Zk,c_,LG,NR,aE,lE,uk,hk,UM,HM,WM,GM,C_,lk,v_,Gk,Lk,Ok,Nk,Rk,nE,UT,DT,Qp,HT,FT,aT,ig,iS,nS,qk,ik,Xk,bM,cC,Fk,nt,ct,OB,Jm,XT,_T,ur,mT,gT,fT,lC,TM,DM,EM,PM,FM,LM,BG,uE,AM,pk,fk,ZM,sM,$M,gk,ok,rk,dk,mk,ek,tk,nk,VG,jM,ck,kM,_k,vk,IM,JM,o_,ak,a_,QM,YM,qM,BM,XM,VM,aM,Tk,KM,aC,om,iM,Kk,oT,e_,tT,xk,By,tS,Ky,sk,ns,rT,Qk,Ek,T_,S_,Il,zM,pr,ap,cM,PG,IG,yM,vM,lM,hM,fM,MM,dM,wM,SM,xM,_M,gM,mM,pM,uM,Ms,OS,jS,$S,RS,FS,mS,pS,lS,cS,hS,fS,BS,VS,yS,vS,CS,kS,ES,AS,SS,TS,bS,Yk,f_,VT,wT,zT,dC,GT,QT,WT,OT,hC,jT,tE,eE,sE,oM,$T,AT,bh,Qg,oE,rE,hT,x_,Jg,nM,Zg,Dk,rS,k_,IT,nT,sT,qy,aS,PS,AG,Wd,FG,RG,NG,OG,NS,tp,ui,HS,LS,zS,xS,DS,MS,wS,IS,gS,uS,dS,B1,TG,xl,N8,Me,Qe,ay,T8,jG,rl,HG,Ot,Ds,ET,Xy,A_,Kg.forRoot()]})}return t})();var GG=(()=>{class t{overlayContainer=f(gm);iconReg=f(Ly);sanitizer=f(lr);settingsService=f(ea);themeService=f(yi);router=f(ut);progressService=f(zo);connectionManager=f(rp);controllerService=f(We);constructor(){this.iconReg.addSvgIcon("gns3",this.sanitizer.bypassSecurityTrustResourceUrl("./assets/gns3_icon.svg")),this.iconReg.addSvgIcon("gns3black",this.sanitizer.bypassSecurityTrustResourceUrl("./assets/gns3_icon_black.svg")),this.iconReg.addSvgIcon("github",this.sanitizer.bypassSecurityTrustResourceUrl("./assets/github-icon.svg")),this.router.events.subscribe(e=>{this.checkEvent(e)})}ngOnInit(){this.themeService.themeChanged.subscribe(e=>{this.applyTheme(e)}),this.router.events.pipe(Pn(e=>e instanceof Or)).subscribe(e=>{this.checkAndEstablishConnection(e.url)})}async checkAndEstablishConnection(e){let n=e.match(/\/controller\/(\d+)/);if(!n)return;let o=parseInt(n[1],10);try{let r=await this.controllerService.get(o);r&&r.authToken&&this.connectionManager.establishConnection(r)}catch(r){console.error("Failed to check controller for auto-login:",r)}}applyTheme(e){let n=this.overlayContainer.getContainerElement().classList;n.remove("theme-deeppurple-amber","theme-indigo-pink","theme-magenta-violet","theme-rose-red","theme-pink-bluegrey","theme-purple-green","theme-azure-blue","theme-cyan-orange"),n.add(`theme-${e}`)}checkEvent(e){e instanceof Xc?this.progressService.activate():(e instanceof Or||e instanceof xs||e instanceof Vd)&&this.progressService.deactivate()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=L({type:t,selectors:[["app-root"]],hostAttrs:[1,"componentCssClass"],decls:2,vars:0,template:function(n,o){n&1&&F(0,"router-outlet")(1,"app-global-upload-indicator")},dependencies:[Z,at,zd,uE],styles:["[_nghost-%COMP%]{display:block;height:100%}mat-menu-panel[_ngcontent-%COMP%]{min-height:0px}"],changeDetection:0})}return t})();Ai.production&&void 0;W5(GG,{providers:[N5(),b5(UG)]}).then(t=>{Z5(t.components[0])}).catch(t=>console.log(t));
|