{"version":3,"file":"assets/chunk.4f08d0f54461d7b48fbf.js","mappings":"oMACA,SAAAA,E,SAAAA,uBAAA,2RAAAC,IAAA,CAAAC,EAAAA,GAAA,kB,iBCE8B,IAaTC,GAAyBC,EAA/B,cAAwCC,EAAAA,EACnD,mBAAIC,GACA,OAAOC,IACH,CACIC,kBAAmB,CACfC,MAAO,CACHC,cAAe,CACXC,SAAS,MAKzB,CACIH,kBAAmBI,KAAKC,KAAKJ,MAAMD,mBAG/C,CAEQM,qBAAAA,GACJ,OAAO,iEAAkEC,MAAMC,IAAW,IAAAC,EAAAC,EAAAC,EACtF,OAA0C,QAAnCF,EAA+B,QAA/BC,GAACC,EAAAP,KAAKC,MAAKO,4BAAoB,IAAAF,OAAA,EAA9BA,EAAAG,KAAAF,UAAkC,IAAAF,EAAAA,EAAIK,QAAQC,WAAWR,MAAK,IAC3DC,EAAOQ,SAChB,GAEV,IACHC,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,yBAPIC,EAAAA,QAAMC,OAAAC,yBAAAzB,EAAAsB,UAAA,yBAAAtB,EAAAsB,WAAAtB,IAlBmC0B,EAAAA,EAAAA,sBAAAC,EAAA5B,E,wMCf9C,SAAAH,EAAAA,EAAAA,uBAAA,otBAAAC,IAAA,CAAA+B,EAAAA,EAAAC,EAAAA,EAAAC,EAAAA,EAAAC,EAAAA,GAAA,kB,eCaA,MAAMC,EAA4BC,MAClC,GAAAP,EAAAA,EAAAA,sBAAAC,EAAeK,G,qICPf,IAOqBE,IAAYC,GA6I5BC,EAAAA,EAAAA,OAAM,yBAAwBC,GAS9BC,EAAAA,EAAAA,UAAS,eAAcC,GAUvBD,EAAAA,EAAAA,UAAS,QAAS,cAAaE,GAU/BF,EAAAA,EAAAA,UAAS,aAAc,uBAAsBG,GAqB7CH,EAAAA,EAAAA,YAAUI,GAUVJ,EAAAA,EAAAA,YAAUK,GAUVL,EAAAA,EAAAA,YAAUM,GAWVN,EAAAA,EAAAA,UAAS,aAAc,0BAAyBO,GAkBhDP,EAAAA,EAAAA,UAAS,eAAcQ,GAUvBR,EAAAA,EAAAA,UAAS,QAAS,0BAAyBS,GAc3CC,EAAAA,EAAAA,KAAI,6BAA8B,mCAAkCC,GAQpEX,EAAAA,EAAAA,UAAS,QAAS,cAAe,wBAAuBY,GAUxDZ,EAAAA,EAAAA,UAAS,QAAS,eAAca,GAUhCb,EAAAA,EAAAA,UAAS,uBAAwB,eAAgB,SAAQc,GAkBzDd,EAAAA,EAAAA,UAAS,aAAYe,GAarBf,EAAAA,EAAAA,UAAS,iBAAgBtC,EAnUf,cAA2BsD,EAAAA,QAsBtCC,WAAAA,CACIC,EAAIC,GAUN,IATE,KACIC,EAAI,WACJC,EAAU,MACVC,EAAK,2BACLC,EAA0B,YAC1BC,EAAW,sBACXC,EAAqB,iCACrBC,GACHP,EAEDQ,MAAMT,IAAMU,EAAAA,EAAAA,GAAA,YAAAC,EAAA,OAAAD,EAAAA,EAAAA,GAAA,sBAAAE,EAAA,OAAAF,EAAAA,EAAAA,GAAA,aAAAG,EAAA,OAAAH,EAAAA,EAAAA,GAAA,kCAAAI,EAAA,OAAAJ,EAAAA,EAAAA,GAAA,mBAAAK,EAAA,OAAAL,EAAAA,EAAAA,GAAA,6BAAAM,EAAA,OAAAN,EAAAA,EAAAA,GAAA,wCAAAO,EAAA,OAmChBC,EAAAA,EAAAA,GAAA,qBAOAA,EAAAA,EAAAA,GAAA,2BAWAA,EAAAA,EAAAA,GAAA,yBAOAA,EAAAA,EAAAA,GAAA,0BAOAA,EAAAA,EAAAA,GAAA,4BAOAA,EAAAA,EAAAA,GAAA,0BAKoB,IAEpBA,EAAAA,EAAAA,GAAA,+BAKyB,IAEzBA,EAAAA,EAAAA,GAAA,wCAKkC,IAElCA,EAAAA,EAAAA,GAAA,qBAKgBC,EAAAA,0CAEhBT,EAAAA,EAAAA,GAAA,iBAAAU,EAAA,OA2HAV,EAAAA,EAAAA,GAAA,4BAAAW,EAAA,OA/NIC,EAAAA,EAAAA,KAAItE,KAAM,OAAQkD,GAClBlD,KAAKmD,WAAaA,EAClBnD,KAAKoD,MAAQA,EACbpD,KAAKqD,2BAA6BA,EAClCrD,KAAKsD,YAAcA,EACnBtD,KAAKuD,sBAAwBA,EAC7BvD,KAAKwD,iCAAmCA,CAC5C,CAQAe,eAAAA,CAAgBC,GACZ,IAAIC,EAAmBD,EAAK,GAAGE,WAE/B,IAAK,IAAIC,EAAI,EAAGA,EAAIH,EAAKI,OAAQD,IAC7BF,EAAmBzE,KAAK6E,KAAKC,EACzB,sFACA,CACIC,MAAON,EACPO,MAAOR,EAAKG,KAKxB,OAAOF,CACX,CAqFA,0BACIQ,GACA,OAAOjF,KAAKkF,WAChB,CAOA,uBACIC,GACA,OAAOnF,KAAKoD,QAAUpD,KAAKoF,UAC/B,CAOA,YACIC,GACA,MAAMC,EAAa,CAAC,QAWpB,OATItF,KAAKoF,YACLE,EAAWC,KAAK,YAGhBvF,KAAKmF,sBACLG,EAAWC,KAAK,gBAChBD,EAAWC,KAAK,gBAGbD,EAAWE,KAAK,IAC3B,CAOA,eACIC,GAEJ,CAOA,kBACIC,GAEJ,CAOA,eACIC,GACA,OAAO3F,KAAK6E,KAAKC,EAAE,gEACvB,CAQA,qBACIc,GACA,OAAK5F,KAAK6F,wBAA2B7F,KAAKkD,KAAK4C,MAIxC9F,KAAKkD,KAAK4C,MAAMC,MAAM,EAAG,GAAGC,MAAM,wBAH9B,EAIf,CAWA,gBACIC,GACA,OAAOjG,KAAK6E,KAAKC,EAAE,+CAADoB,OAAgDlG,KAAKkF,aAC3E,CAOA,uBACIiB,GACA,OAAOnG,KAAK6E,KAAKC,EAAE,wEAADoB,OAEVlG,KAAKiF,uBAAsB,eAAAiB,OACjBlG,KAAKoD,MAAQ,MAAQ,IAE3C,CAeA,cACIgC,GACA,OAAOpF,KAAKoD,SAAWpD,KAAKsD,aAAetD,KAAKoG,qBACpD,CAOA,mBACIC,GACA,OAAOrG,KAAKoD,QAAUpD,KAAKsD,WAC/B,CAOA,oBACIgD,GACA,GAAKtG,KAAKoG,sBAAyBpG,KAAKoD,MAKxC,OAAOpD,KAAK6E,KAAKC,EACb,kGACA,CAAEyB,SAAUvG,KAAKiG,aAAaO,eAEtC,CAOA,eACIC,GACA,OAAOzG,KAAK0G,UACN1G,KAAK2G,eAAeC,sBAAsB,8BAADV,OAA+BlG,KAAK0G,UAAS,cACtFG,CACV,CAQA,WACIC,GAGA,QAAS9G,KAAK2G,eAAeI,aAAa/G,KAAKgH,cACnD,GAGHrD,GAAA9C,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,QA1UImG,EAAAA,QAAO,CAAAC,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAAzD,GAAA/C,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,kBACPmG,EAAAA,QAAO,CAAAC,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAAxD,GAAAhD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,SAEPwG,EAAAA,SAAO,CAAAJ,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAAvD,GAAAjD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,8BACPwG,EAAAA,SAAO,CAAAJ,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAAtD,GAAAlD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,eACPwG,EAAAA,SAAO,CAAAJ,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAArD,GAAAnD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,yBACPwG,EAAAA,SAAO,CAAAJ,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAApD,GAAApD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,oCACPwG,EAAAA,SAAO,CAAAJ,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAAjD,GAAAvD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,aAAAa,GAAA,CAAAuF,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,QAAAxG,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,0BAAAe,GAAAb,OAAAC,yBAAAzB,EAAAsB,UAAA,0BAAAtB,EAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,uBAAAiB,GAAAf,OAAAC,yBAAAzB,EAAAsB,UAAA,uBAAAtB,EAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,YAAAkB,GAAAhB,OAAAC,yBAAAzB,EAAAsB,UAAA,YAAAtB,EAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,eAAAmB,GAAAjB,OAAAC,yBAAAzB,EAAAsB,UAAA,eAAAtB,EAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,kBAAAoB,GAAAlB,OAAAC,yBAAAzB,EAAAsB,UAAA,kBAAAtB,EAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,eAAAqB,GAAAnB,OAAAC,yBAAAzB,EAAAsB,UAAA,eAAAtB,EAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,qBAAAsB,GAAApB,OAAAC,yBAAAzB,EAAAsB,UAAA,qBAAAtB,EAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,gBAAAuB,GAAArB,OAAAC,yBAAAzB,EAAAsB,UAAA,gBAAAtB,EAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,uBAAAwB,GAAAtB,OAAAC,yBAAAzB,EAAAsB,UAAA,uBAAAtB,EAAAsB,WAAAuD,GAAAxD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,wBAAAyB,GAAA,CAAA2E,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,QAAAxG,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,cAAA2B,GAAAzB,OAAAC,yBAAAzB,EAAAsB,UAAA,cAAAtB,EAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,mBAAA4B,GAAA1B,OAAAC,yBAAAzB,EAAAsB,UAAA,mBAAAtB,EAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,oBAAA6B,GAAA3B,OAAAC,yBAAAzB,EAAAsB,UAAA,oBAAAtB,EAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,eAAA8B,GAAA5B,OAAAC,yBAAAzB,EAAAsB,UAAA,eAAAtB,EAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,EAAAsB,UAAA,WAAA+B,GAAA7B,OAAAC,yBAAAzB,EAAAsB,UAAA,WAAAtB,EAAAsB,WAAAtB,G,mBClBZ,IAOqB+H,IAAyB5F,IAiBzCG,EAAAA,EAAAA,UAAS,2BAA0BD,IAMnCC,EAAAA,EAAAA,UAAS,6BAA4BC,IAerCD,EAAAA,EAAAA,UAAS,6BAA4BtC,GAtC3B,cAAwCkC,GAAaqB,WAAAA,GAAA,SAAAyE,YAAA9D,EAAAA,EAAAA,GAAA,YAAAC,GAAA,OAGhEO,EAAAA,EAAAA,GAAA,iBACY,kCAEZA,EAAAA,EAAAA,GAAA,gBACWuD,EAAAA,oBAEXvD,EAAAA,EAAAA,GAAA,mBACc,6BAA4B,CAO1C,6BACIwD,GACA,OAAO1H,KAAKkD,KAAKyE,mBAAmBC,QAAQC,GAAcA,GAC9D,CAGA,eACIpC,GACA,MAAM,0BAAEiC,GAA8B1H,KAEtC,OAAO0H,EAA0B9C,OAC3B,CACI5E,KAAK6E,KAAKC,EAAE,qFAAsF,CAC9FgD,SAAU9H,KAAKuE,gBAAgBmD,GAC/BK,MAAOL,EAA0B9C,eAGzCiC,CACV,CAGA,kBACInB,GACA,MAAM,0BAAEgC,GAA8B1H,KAEtC,OAAO0H,EAA0B9C,OAC3B5E,KAAK6E,KAAKC,EAAE,kFAAmF,CAC3FkD,UAAWhI,KAAKuE,gBAAgBmD,GAChCK,MAAOL,EAA0B9C,cAErCiC,CACV,GACHlD,IAAA9C,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,QAhDImG,EAAAA,QAAO,CAAAC,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,QAAAxG,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,6BAAAa,IAAAX,OAAAC,yBAAAzB,GAAAsB,UAAA,6BAAAtB,GAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,eAAAe,IAAAb,OAAAC,yBAAAzB,GAAAsB,UAAA,eAAAtB,GAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,kBAAAiB,IAAAf,OAAAC,yBAAAzB,GAAAsB,UAAA,kBAAAtB,GAAAsB,WAAAtB,I,UCTZ,IAIqByI,IAA8BtG,IAQ9CG,EAAAA,EAAAA,UAAS,mBAAkBtC,GARjB,cAA6C+H,GAA0BxE,WAAAA,GAAA,SAAAyE,YAClFtD,EAAAA,EAAAA,GAAA,+BACyB,IAEzBA,EAAAA,EAAAA,GAAA,qBACgBgE,EAAAA,6CAA4C,CAG5D,6BACIR,GACA,OAAO1H,KAAKkD,KAAKiF,WAAWP,QAAQI,GAAcA,GACtD,IACHnH,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,6BAAAa,IAAAX,OAAAC,yBAAAzB,GAAAsB,UAAA,6BAAAtB,GAAAsB,WAAAtB,I,mBCfD,IAOqB4I,IAAsBzG,IAiBtCG,EAAAA,EAAAA,UAAS,0BAAyBD,IAMlCC,EAAAA,EAAAA,UAAS,6BAA4BC,IAerCD,EAAAA,EAAAA,UAAS,6BAA4BtC,GAtC3B,cAAqCkC,GAAaqB,WAAAA,GAAA,SAAAyE,YAAA9D,EAAAA,EAAAA,GAAA,YAAAC,GAAA,OAG7DO,EAAAA,EAAAA,GAAA,iBACY,oBAEZA,EAAAA,EAAAA,GAAA,gBACWmE,EAAAA,iBAEXnE,EAAAA,EAAAA,GAAA,mBACc,iBAAgB,CAO9B,6BACIoE,GACA,OAAOtI,KAAKkD,KAAKqF,kBAAkBX,QAAQY,GAAcA,GAC7D,CAGA,eACI/C,GACA,MAAM,0BAAE6C,GAA8BtI,KAEtC,OAAOsI,EAA0B1D,OAC3B,CACI5E,KAAK6E,KAAKC,EAAE,oFAAqF,CAC7FgD,SAAU9H,KAAKuE,gBAAgB+D,GAC/BP,MAAOO,EAA0B1D,eAGzCiC,CACV,CAGA,kBACInB,GACA,MAAM,0BAAE4C,GAA8BtI,KAEtC,OAAOsI,EAA0B1D,OAC3B5E,KAAK6E,KAAKC,EAAE,kFAAmF,CAC3FkD,UAAWhI,KAAKuE,gBAAgB+D,GAChCP,MAAOO,EAA0B1D,cAErCiC,CACV,GACHlD,IAAA9C,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,QAhDImG,EAAAA,QAAO,CAAAC,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,QAAAxG,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,6BAAAa,IAAAX,OAAAC,yBAAAzB,GAAAsB,UAAA,6BAAAtB,GAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,eAAAe,IAAAb,OAAAC,yBAAAzB,GAAAsB,UAAA,eAAAtB,GAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,kBAAAiB,IAAAf,OAAAC,yBAAAzB,GAAAsB,UAAA,kBAAAtB,GAAAsB,WAAAtB,I,sBCTZ,IAOqBiJ,IAAa9G,IAE7BC,EAAAA,EAAAA,OAAM,WAAUC,IAIhB6G,EAAAA,EAAAA,KAAI,WAAU3G,IAIdD,EAAAA,EAAAA,UAAS,aAAc,uBAAsBtC,GAVnC,cAA4BkC,GAAaqB,WAAAA,GAAA,SAAAyE,YACpD9D,EAAAA,EAAAA,GAAA,2BAAAC,GAAA,OAIAD,EAAAA,EAAAA,GAAA,kBAAAE,GAAA,MAKA,YACIyB,GACA,OAAO5B,MAAM4B,SAAW,QAC5B,GACH1B,IAAA9C,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,uBAAAa,IAAA,CAAAuF,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAAzD,IAAA/C,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,cAAAe,IAAA,CAAAqF,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,QAAAxG,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,YAAAiB,IAAAf,OAAAC,yBAAAzB,GAAAsB,UAAA,YAAAtB,GAAAsB,WAAAtB,I,aCpBD,IAIqBmJ,IAAkBhH,IAOlCG,EAAAA,EAAAA,YAAUtC,GAPA,cAAiCiJ,GAAc1F,WAAAA,GAAA,SAAAyE,YAAA9D,EAAAA,EAAAA,GAAA,YAAAC,GAAA,OAG1DO,EAAAA,EAAAA,GAAA,qBACgBgE,EAAAA,6CAA4C,CAG5D,eACIvC,GACA,OAAO3F,KAAK6E,KAAKC,EAAE,qEACvB,GACHnB,IAAA9C,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,QAVImG,EAAAA,QAAO,CAAAC,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,QAAAxG,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,eAAAa,IAAAX,OAAAC,yBAAAzB,GAAAsB,UAAA,eAAAtB,GAAAsB,WAAAtB,I,gBCLZ,IAOqBoJ,IAA2BjH,IAE3CG,EAAAA,EAAAA,UAAS,eAAcD,IAMvBD,EAAAA,EAAAA,OAAM,oCAAmCpC,GAR/B,cAA0CkC,GAAaqB,WAAAA,GAAA,SAAAyE,YAOlE9D,EAAAA,EAAAA,GAAA,iBAAAC,GAAA,OAIAO,EAAAA,EAAAA,GAAA,0BACoB,IAEpBA,EAAAA,EAAAA,GAAA,qBACgB2E,EAAAA,qBAAoB,CAbpC,0BACI5D,GACA,MAAO,iBACX,IAWHpE,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,0BAAAa,IAAAX,OAAAC,yBAAAzB,GAAAsB,UAAA,0BAAAtB,GAAAsB,WAAA6C,IAAA9C,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,aAAAe,IAAA,CAAAqF,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAA7H,IClBc,MAAMsJ,WAA+BpH,GAAaqB,WAAAA,GAAA,SAAAyE,YAC7DtD,EAAAA,EAAAA,GAAA,iBACY,oBAEZA,EAAAA,EAAAA,GAAA,gBACW6E,EAAAA,YAEX7E,EAAAA,EAAAA,GAAA,mBACc,iBAAgB,E,sBCZlC,IAOqB8E,IAAuBrH,IAiBvCG,EAAAA,EAAAA,UAAS,sBAAqBD,IAU9BC,EAAAA,EAAAA,UAAS,qBAAoBC,IAM7BD,EAAAA,EAAAA,UAAS,4BAA6B,4BAA2BE,IA6BjEF,EAAAA,EAAAA,UAAS,4BAA6B,4BAA2BtC,GA9DvD,cAAsCkC,GAAaqB,WAAAA,GAAA,SAAAyE,YAAA9D,EAAAA,EAAAA,GAAA,YAAAC,GAAA,OAG9DO,EAAAA,EAAAA,GAAA,iBACY,qBAEZA,EAAAA,EAAAA,GAAA,gBACW+E,EAAAA,cAEX/E,EAAAA,EAAAA,GAAA,mBACc,kBAAiB,CAO/B,6BACIgF,GACA,OAAOlJ,KAAKkD,KAAKiG,cAAcvB,QAAQwB,GAAcA,GACzD,CAOA,4BACIC,GACA,OAAOrJ,KAAKkD,KAAKoG,aAAa1B,QAAQ2B,GAAaA,GACvD,CAGA,eACI9D,GACA,MAAM,0BAAEyD,EAAyB,yBAAEG,GAA6BrJ,KAE1DwJ,EAAU,GAWhB,GATIN,EAA0BtE,QAC1B4E,EAAQjE,KACJvF,KAAK6E,KAAKC,EAAE,mFAAoF,CAC5F2E,UAAWzJ,KAAKuE,gBAAgB2E,GAChCnB,MAAOmB,EAA0BtE,UAKzCyE,EAAyBzE,OAAQ,CACjC,MAAM8E,EAAUL,EAAyBM,KAAKC,GAAO5J,KAAK6E,KAAKC,EAAE,kBAAmB,CAAE+E,IAAKD,EAAK,OAChGJ,EAAQjE,KACJvF,KAAK6E,KAAKC,EAAE,gFAAiF,CACzFyE,SAAUvJ,KAAKuE,gBAAgBmF,GAC/B3B,MAAOsB,EAAyBzE,SAG5C,CAEA,OAAOkF,EAAAA,EAAAA,SAAQN,QAAW3C,EAAY2C,CAC1C,CAGA,kBACI9D,GACA,MAAM,0BAAEwD,EAAyB,yBAAEG,GAA6BrJ,KAM5D+J,EADgB,CAJG/J,KAAKuE,gBAAgB2E,GACtBlJ,KAAKuE,gBACnB8E,EAAyBM,KAAKC,GAAO5J,KAAK6E,KAAKC,EAAE,uBAAwB,CAAE+E,IAAKD,EAAK,SAErChC,QAAQoC,GAAWA,EAAOpF,SAC1CY,KAAK,MAE7C,OAAOuE,EAAoBnF,OACrB5E,KAAK6E,KAAKC,EAAE,kFAAmF,CAC3FkD,UAAW+B,EACXhC,MAAOmB,EAA0BtE,OAASyE,EAAyBzE,cAEvEiC,CACV,GACHlD,IAAA9C,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,QA9EImG,EAAAA,QAAO,CAAAC,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,QAAAxG,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,6BAAAa,IAAAX,OAAAC,yBAAAzB,GAAAsB,UAAA,6BAAAtB,GAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,4BAAAe,IAAAb,OAAAC,yBAAAzB,GAAAsB,UAAA,4BAAAtB,GAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,eAAAiB,IAAAf,OAAAC,yBAAAzB,GAAAsB,UAAA,eAAAtB,GAAAsB,YAAAD,EAAAA,EAAAA,GAAArB,GAAAsB,UAAA,kBAAAkB,IAAAhB,OAAAC,yBAAAzB,GAAAsB,UAAA,kBAAAtB,GAAAsB,WAAAtB,ICbZ,UAAAJ,EAAAA,EAAAA,uBAAA,uSCUM6K,GAAkBxI,MACxB,IAAAP,EAAAA,EAAAA,sBAAAC,GAAe8I,I,oDCXf,UAAA7K,EAAAA,EAAAA,uBAAA,+OAAAC,IAAA,CAAAgC,EAAAA,GAAA,kBCMM6I,GAAazI,MACnB,IAAAP,EAAAA,EAAAA,sBAAAC,GAAe+I,ICPf,IAAA9K,EAAAA,EAAAA,uBAAA,6xBCkBM+K,GAAwC1I,MAC9C,IAAAP,EAAAA,EAAAA,sBAAAC,GAAegJ,ICnBf,IAAA/K,EAAAA,EAAAA,uBAAA,mnBAAAC,IAAA,CAAAkC,EAAAA,EAAA6I,GAAAA,GAAAC,GAAAA,IAAA,kBCiBMC,GAAuB7I,MAC7B,IAAAP,EAAAA,EAAAA,sBAAAC,GAAemJ,I,4BClBf,UAAAlL,EAAAA,EAAAA,uBAAA,+uJAAAC,IAAA,CAAAkL,GAAAC,GAAAA,EAAAlJ,EAAAA,EAAAD,EAAAA,EAAAoJ,GAAAA,EAAAL,GAAAA,GAAAC,GAAAA,GAAAK,GAAAC,GAAAC,GAAArJ,EAAAA,EAAAsJ,GAAAA,EAAAC,GAAAA,EAAAC,EAAAA,EAAAC,GAAAA,GAAA,kB,6DCqCO,MAAMC,GAAuB,CAChC,CAAChC,EAAAA,aAAcD,GACf,CAACD,EAAAA,WAAYD,GACb,CAACoC,EAAAA,SC/BU,cAA8BxJ,GAAaqB,WAAAA,GAAA,SAAAyE,YACtDtD,EAAAA,EAAAA,GAAA,iBACY,iBAEZA,EAAAA,EAAAA,GAAA,gBACWgH,EAAAA,UAEXhH,EAAAA,EAAAA,GAAA,mBACc,gBAEdA,EAAAA,EAAAA,GAAA,wCACkC,EAAI,GDqBtC,CAACuD,EAAAA,mBAAoBF,GACrB,CAACc,EAAAA,gBAAiBD,GAClB,CAAC+C,EAAAA,YElCU,cAAgDvC,GAA4B7F,WAAAA,GAAA,SAAAyE,YACvFtD,EAAAA,EAAAA,GAAA,iBACY,gBAEZA,EAAAA,EAAAA,GAAA,gBACWiH,EAAAA,aAEXjH,EAAAA,EAAAA,GAAA,mBACc,4BAA2B,GF2BzC,CAACkH,EAAAA,UGnCU,cAA8CxC,GAA4B7F,WAAAA,GAAA,SAAAyE,YACrFtD,EAAAA,EAAAA,GAAA,iBACY,cAEZA,EAAAA,EAAAA,GAAA,gBACWkH,EAAAA,WAEXlH,EAAAA,EAAAA,GAAA,mBACc,0BAAyB,IHmC9BmH,GAA4B,CACrC,CAAC5D,EAAAA,mBAAoBQ,GACrB,CAACc,EAAAA,WIhDU,cAA0CD,GAAuB/F,WAAAA,GAAA,SAAAyE,YAC5EtD,EAAAA,EAAAA,GAAA,+BACyB,IAEzBA,EAAAA,EAAAA,GAAA,qBACgBgE,EAAAA,6CAA4C,IJqD1DoD,GAA+B,CACjC,CAAEC,MAAO,cAAeC,UAAW,CAACN,EAAAA,UACpC,CAAEK,MAAO,6BAA8BC,UAAW,CAAC/D,EAAAA,kBAAmBsB,EAAAA,YACtE,CAAEwC,MAAO,0BAA2BC,UAAW,CAACvC,EAAAA,YAAaZ,EAAAA,kBAajEoD,eAAeC,KAEX1L,KAAK8F,MAAM6F,SAASzI,GAASA,EAAK0I,UAAU,YAAYC,WAExD,MAAM/F,QAAc9F,KAAK8F,MACrBvC,QAA8BvD,KAAKC,KAAKsD,sBACxCC,QAAyCxD,KAAKC,KAAKuD,iCAEvD,MAAO,CACH,CACI+H,MAAO,GACPO,MAAO,CAAC,EAAG,EAAG,GACTnC,KAAKxG,IACF,MAAMD,EAAO4C,EAAMiG,MAAM7I,GAASA,EAAK8I,GAAGC,SAAS,IAAD/F,OAAK/C,MAOvD,OAAO,KAJH2G,EAAAA,EAAAA,SAAQ5G,SAA2B2D,IAAlB3D,EAAKqD,SAChBkC,GACAwC,GAAqB/H,EAAKqD,WAAa7E,IAEzB1B,KAAM,CAC1BkD,OACAC,aACAI,wBACAC,oCACF,IAEL0I,MAAK,CAACC,EAAGC,IACFD,EAAEjJ,OAASkJ,EAAElJ,MACL,GACAiJ,EAAEjJ,MAAQkJ,EAAElJ,KACb,EAGJiJ,EAAEhJ,WAAaiJ,EAAEjJ,cAI5C,CAYAsI,eAAeY,KAEX,MAAMvG,SAAe9F,KAAK8F,OAAOwG,WAE7B,mBAAEC,GAAuBvM,KAAKwM,OAElC,OAAOlB,GAA6B3B,KAAK8C,IAC9B,CACHlB,MAAO,yDAAFrF,OAA2DuG,EAASlB,OACzEO,MAAOW,EAASjB,UAAU7B,KAAKpD,IAC3B,MAAMlD,EAA6ByC,EAAM4G,MAAMxJ,GAASA,EAAKqD,WAAaA,IAI1E,OAAO,IAAIoG,EAHQ1B,GAAqB1E,IAGhBvG,KAAM,CAAEoD,OAXhC,EAWuCC,6BAA4BC,YAFjDiJ,EAAmBN,SAAS1F,IAEmC,OAIjG,CAYAkF,eAAemB,KACX,MAAMC,SAAoB7M,KAAKC,KAAK4M,YAAYC,SAAS,SAAS,GAC9DvJ,QAA8BvD,KAAKC,KAAKsD,sBACxCC,QAAyCxD,KAAKC,KAAKuD,iCAGjDsI,EAAQe,EAAWE,OAAO,QAAQpD,KAAI,CAACqD,EAAW7J,IAM7C,KAJH2G,EAAAA,EAAAA,SAAQkD,SAAqCnG,IAAvBmG,EAAUzG,SAC1BoC,GACA0C,GAA0B2B,EAAUzG,WAAa7E,IAEnC1B,KAAM,CAC1BkD,KAAM8J,EACN7J,aACAI,wBACAC,uCAOR,OAFAsI,EAAMvG,KAAK,IAAIoD,GAAmB3I,KAAM,CAAEmD,WAAY2I,EAAMlH,UAErD,CAAC,CAAE2G,MAAO,GAAIO,SACzB,CAaAL,eAAewB,KACX,YAAa,UACF,CACH,CACI1B,MAAO,mFACPO,MAAO,CACH,IAAIvE,GAA0BvH,KAAM,CAAEoD,OAAO,EAAME,aAAa,IAChE,IAAIwF,GAAuB9I,KAAM,CAAEoD,OAAO,EAAME,aAAa,OANhE,EAWjB,CAEA,IASqB4J,IAAevL,IADnCwL,EAAAA,EAAAA,GAAS,CAAEC,KAAM,+CAA+CvL,IAe5DD,EAAAA,EAAAA,OAAM,eAAcG,IAQpBH,EAAAA,EAAAA,OAAM,wBAAuBI,IAQ7BJ,EAAAA,EAAAA,OAAM,kBAAiBK,IAQvBL,EAAAA,EAAAA,OAAM,gBAAeM,IAQrBN,EAAAA,EAAAA,OAAM,uBAAsBO,IAe5BL,EAAAA,EAAAA,UAAS,+BAAgC,cAAe,kBAAmB,WAAY,sBAAqBH,IAAA0L,GA9DjH,cAC6C5N,EAAAA,EAAUsD,WAAAA,GAAA,SAAAyE,YAAA9D,EAAAA,EAAAA,GAAA,YAAAC,GAAA,OAAAD,EAAAA,EAAAA,GAAA,sBAAAE,GAAA,OAAAF,EAAAA,EAAAA,GAAA,cAAAG,GAAA,OAAAH,EAAAA,EAAAA,GAAA,cAAAI,GAAA,OAAAJ,EAAAA,EAAAA,GAAA,aAAAK,GAAA,OASnDL,EAAAA,EAAAA,GAAA,cAAAM,GAAA,OAQAN,EAAAA,EAAAA,GAAA,uBAAAO,GAAA,OAQAP,EAAAA,EAAAA,GAAA,aAAAU,GAAA,OAQAV,EAAAA,EAAAA,GAAA,eAAAW,GAAA,OAQAX,EAAAA,EAAAA,GAAA,mBAAA4J,GAAA,MAoBA,kBACIC,GACA,OAAIvN,KAAKwN,iBACGxN,KAAKyN,YAAcR,GAAuBL,IAA2BnM,KAAKT,OAG9EA,KAAKyN,YAAcpB,GAAkBX,IAAsBjL,KAAKT,KAC5E,CAYA0N,QAAAA,CAASC,EAAMC,GACX,GAAIA,EAAkB,CAElB,GAAI5N,KAAKyN,YAQL,OAPAzN,KAAK6N,QAAQtH,SAAWoH,EAAKpH,cAGzBoH,EAAKpH,WAAakB,EAAAA,oBAClBzH,KAAK6N,QAAQC,UAAYC,EAAAA,eAOjC,MAAMC,EAAUL,EAAK3G,cACjB9D,EAAOyK,EAAKzK,KACZ+K,EAAS/K,EAAOA,EAAK8I,GAAKhM,KAAKwN,gBAAkB,MAAQ,GAAHtH,OAAMlG,KAAKwM,OAAOR,GAAE,KAAA9F,OAAIyH,EAAKxK,YAIvFnD,KAAK2G,eAAeuH,oBAAoBF,OAASnH,OAAWA,EAAWoH,EAC3E,CACJ,CAQAE,UAAAA,CAAWjL,GACPlD,KAAKoO,OAAOC,gBAAgB,CACxBC,QAAStO,KAAK6E,KAAK0J,GAAGvO,KAAM,aAAFkG,OAAelG,KAAKwN,gBAAkB,QAAU,KAC1EgB,OAAQ/C,eAAkBvI,EAAKuL,iBAEvC,CAQAC,mBAAAA,CAAoBC,GAChB3O,KAAKoO,OAAOQ,UAAUC,EAAsB,CAAEF,YAClD,CAQA,8BACMG,CAAyB9B,EAAW+B,GACtC,MAAMJ,QAAiB3B,EAAUlH,MAAME,MAAM,YAAY+I,GACzD/O,KAAK0O,oBAAoBC,EAC7B,GAGHhL,IAAA9C,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,QA5IImG,EAAAA,QAAO,CAAAC,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAAzD,IAAA/C,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,kBACPmG,EAAAA,QAAO,CAAAC,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAAxD,IAAAhD,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,UACPmG,EAAAA,QAAO,CAAAC,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAAvD,IAAAjD,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,UACPmG,EAAAA,QAAO,CAAAC,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAAtD,IAAAlD,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,SACPmG,EAAAA,QAAO,CAAAC,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAArD,IAAAnD,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,UAAAe,IAAA,CAAAqF,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAApD,IAAApD,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,mBAAAiB,IAAA,CAAAmF,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAAjD,IAAAvD,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,SAAAkB,IAAA,CAAAkF,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAAhD,IAAAxD,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,WAAAmB,IAAA,CAAAiF,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,OAAAiG,IAAAzM,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,eAAAoB,IAAA,CAAAgF,cAAA,EAAAC,YAAA,EAAAC,UAAA,EAAAC,YAAA,QAAAxG,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,kBAAAqB,IAAAnB,OAAAC,yBAAAoM,GAAAvM,UAAA,kBAAAuM,GAAAvM,YAAAD,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,YA0EPC,EAAAA,QAAMC,OAAAC,yBAAAoM,GAAAvM,UAAA,YAAAuM,GAAAvM,YAAAD,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,cA+BNC,EAAAA,QAAMC,OAAAC,yBAAAoM,GAAAvM,UAAA,cAAAuM,GAAAvM,YAAAD,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,uBAaNC,EAAAA,QAAMC,OAAAC,yBAAAoM,GAAAvM,UAAA,uBAAAuM,GAAAvM,YAAAD,EAAAA,EAAAA,GAAAwM,GAAAvM,UAAA,4BAWNC,EAAAA,QAAMC,OAAAC,yBAAAoM,GAAAvM,UAAA,4BAAAuM,GAAAvM,WAzEsGtB,GAyEtG6N,MAAA7N,KAtIyB0B,EAAAA,EAAAA,sBAAAC,GAAA+L,G,wEK5NpC,SAAA9N,E,SAAAA,uBAAA,6eAAAC,IAAA,CAAA2L,EAAAA,GAAA,kB,eCmBe,MAAMgE,UAA2BvP,EAAAA,EAC5C,sBAAIwP,GACA,OAAOjP,KAAKC,KAAKiP,iBAAmBC,EAAAA,UAAYnP,KAAKC,KAAKiP,iBAAmBE,EAAAA,OACjF,CAEA,QAAIC,GACA,OAAQrP,KAAKC,KAAKiP,gBACd,KAAKI,EAAAA,KACD,MAAO,YACX,KAAKC,EAAAA,KACD,MAAO,YACX,KAAKC,EAAAA,UACD,MAAO,OACX,QACI,MAAO,WAEnB,CAEA,SAAIC,GACA,OAAQzP,KAAKC,KAAKiP,gBACd,KAAKI,EAAAA,KACD,MAAO,MACX,KAAKC,EAAAA,KACL,KAAKC,EAAAA,UACD,MAAO,QACX,QACI,MAAO,UAEnB,GACHtO,EAAAA,EAAAA,sBAAAC,EA7BoB6N,E","sources":["./components/highcharts/accessible-chart/index.hbs","./components/highcharts/accessible-chart/index.ts","./components/modals/video/camera-snapshot-detail/index.hbs","./components/modals/video/camera-snapshot-detail/index.ts","./components/video/advanced-analytics/device-rule-slots/helper-objects/base-rule-slot.js","./components/video/advanced-analytics/device-rule-slots/helper-objects/business-occupancy-rule-slot.js","./components/video/advanced-analytics/device-rule-slots/helper-objects/business-occupancy-rule-group-slot.js","./components/video/advanced-analytics/device-rule-slots/helper-objects/crowd-gathering-rule-slot.js","./components/video/advanced-analytics/device-rule-slots/helper-objects/empty-rule-slot.js","./components/video/advanced-analytics/device-rule-slots/helper-objects/empty-rule-group-slot.js","./components/video/advanced-analytics/device-rule-slots/helper-objects/base-object-detection-rule-slot.js","./components/video/advanced-analytics/device-rule-slots/helper-objects/people-counting-rule-slot.js","./components/video/advanced-analytics/device-rule-slots/helper-objects/queue-monitoring-rule-slot.js","./components/ui/separator-text/index.hbs","./components/ui/separator-text/index.ts","./components/ui/coming-soon/index.hbs","./components/ui/coming-soon/index.ts","./components/video/advanced-analytics/rule-description/index.hbs","./components/video/advanced-analytics/rule-description/index.ts","./components/ui/images/state-image-collection/index.hbs","./components/ui/images/state-image-collection/index.ts","./components/video/advanced-analytics/device-rule-slots/index.hbs","./components/video/advanced-analytics/device-rule-slots/index.js","./components/video/advanced-analytics/device-rule-slots/helper-objects/heat-map-rule-slot.js","./components/video/advanced-analytics/device-rule-slots/helper-objects/object-detection-ground-zone-rule-slot.js","./components/video/advanced-analytics/device-rule-slots/helper-objects/object-detection-tripwire-rule-slot.js","./components/video/advanced-analytics/device-rule-slots/helper-objects/people-counting-rule-group-slot.js","./components/wifi/signal-strength-icon/index.hbs","./components/wifi/signal-strength-icon/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\",{ moduleName: \"customer-site/components/highcharts/accessible-chart/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport merge from 'deepmerge';\n\nimport type { Chart } from 'customer-site/components/highcharts/simple-chart/index';\nimport type HighchartsAccessibility from 'highcharts/es-modules/masters/modules/accessibility.src';\n\ninterface HighchartsAccessibleChartSignature {\n Args: {\n chart: Chart;\n onHighchartsImported?: () => Promise;\n useAdcBranding?: boolean;\n };\n}\n\nexport default class HighchartsAccessibleChart extends Component {\n get accessibleChart(): Chart {\n return merge(\n {\n highchartsOptions: {\n chart: {\n accessibility: {\n enabled: true\n }\n }\n }\n },\n {\n highchartsOptions: this.args.chart.highchartsOptions\n }\n );\n }\n\n @action loadAdditionalModules(): Promise {\n return import('highcharts/es-modules/masters/modules/accessibility.src').then((module) => {\n return (this.args.onHighchartsImported?.() ?? Promise.resolve()).then(() => {\n return module.default;\n });\n });\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Highcharts::AccessibleChart': typeof HighchartsAccessibleChart;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n
\\n {{#if (await @model.snapshot)}}\\n \\n {{/if}}\\n
\\n\\n\",{ moduleName: \"customer-site/components/modals/video/camera-snapshot-detail/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport templateOnlyComponent from '@ember/component/template-only';\n\nimport './_style.scss';\nimport type OvRuleSnapshot from 'customer-site/models/video/ov-rule-snapshot';\n\nexport interface CameraSnapshotDetailModalSignature {\n Args: {\n model: {\n snapshot: OvRuleSnapshot;\n };\n };\n}\n\nconst CameraSnapshotDetailModal = templateOnlyComponent();\nexport default CameraSnapshotDetailModal;\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n CameraSnapshotDetailModal: typeof CameraSnapshotDetailModal;\n }\n}\n","import { tracked } from '@glimmer/tracking';\nimport { set } from '@ember/object';\nimport { computed } from '@ember/object';\nimport { and, alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { EmberVideoBusinessActivityAnalyticsRule } from 'customer-site/enums/CustomerPageUrl';\nimport ContainerObject from '../../../../../utils/container-object';\n\n/**\n * @classdesc\n * An object containing all the base information for a single rule slot on an OVReady device.\n *\n * @class components.video.advanced-analytics.device-rule-slots.helper-objects.BaseRuleSlot\n * @extends Ember.Object\n */\nexport default class BaseRuleSlot extends ContainerObject {\n @service intl;\n @service contextManager;\n\n @tracked isNew;\n @tracked cameraAlreadyHasRuleOfType;\n @tracked isSupported;\n @tracked hasBAAWritePermission;\n @tracked hasRecordingRulesWritePermission;\n\n /**\n * @param {Object} host The host object (controller, route, component, etc) that is instantiating this instance.\n * @param {models.video.OvRule} [rule] The rule that belongs in this slot. Undefined if creating a new rule.\n * @param {number} slotNumber The number of the slot on the camera that this rule belongs in. Always required.\n * @param {boolean} [isNew=false] Whether or not we are creating a new rule.\n * @param {boolean} [cameraAlreadyHasRuleOfType=false] Whether or not a rule of this type already exists on the camera.\n * @param {boolean} [isSupported=true] Whether or not the user has the right permissions to view this rule type.\n * @param {boolean} [hasBAAWritePermission=false] Whether the user can save/delete BAA rules.\n * @param {boolean} [hasRecordingRulesWritePermission=false] Whether the user can save/delete recording rules.\n *\n * @constructor\n */\n constructor(\n host,\n {\n rule,\n slotNumber,\n isNew,\n cameraAlreadyHasRuleOfType,\n isSupported,\n hasBAAWritePermission,\n hasRecordingRulesWritePermission\n }\n ) {\n super(host);\n\n set(this, 'rule', rule);\n this.slotNumber = slotNumber;\n this.isNew = isNew;\n this.cameraAlreadyHasRuleOfType = cameraAlreadyHasRuleOfType;\n this.isSupported = isSupported;\n this.hasBAAWritePermission = hasBAAWritePermission;\n this.hasRecordingRulesWritePermission = hasRecordingRulesWritePermission;\n }\n\n /**\n * Custom join method to combine a list's elements using the translated list separator resource.\n *\n * @param {Array} list\n * @returns {string}\n */\n concatenateList(list) {\n let concatenatedList = list[0].toString();\n\n for (let i = 1; i < list.length; i++) {\n concatenatedList = this.intl.t(\n 'components.video.advanced-analytics.device-rule-slots.helper-objects.listSeparation',\n {\n item1: concatenatedList,\n item2: list[i]\n }\n );\n }\n\n return concatenatedList;\n }\n\n // region Passed properties\n\n /**\n * The rule that belongs in this slot. Undefined if creating a new rule.\n *\n * @type {models.video.OvRule|undefined}\n */\n rule;\n\n /**\n * The number of the slot on the camera that this rule belongs in. Always required.\n *\n * @type {number}\n */\n slotNumber;\n\n // endregion\n\n // region Abstract and virtual properties\n\n /**\n * The enum representing this rule's type.\n *\n * @type {number}\n */\n ruleType;\n\n /**\n * The generic image to display for this type of rule.\n *\n * @type {string}\n */\n imageName;\n\n /**\n * The translation key for this type of rule.\n *\n * @type {string}\n */\n ruleTypeKey;\n\n /**\n * Whether or not this rule type should show its snapshot.\n *\n * @type {boolean}\n */\n supportsSnapshots = true;\n\n /**\n * Whether or not this rule type should show a cluster of snapshots.\n *\n * @type {boolean}\n */\n supportsSnapshotGroups = false;\n\n /**\n * Whether or not the camera only supports a single rule of the given type.\n *\n * @type {boolean}\n */\n cameraOnlySupportsOneRuleOfType = false;\n\n /**\n * The route enum for the edit/create page of this rule.\n *\n * @type {number}\n */\n ruleEditRoute = EmberVideoBusinessActivityAnalyticsRule;\n\n /**\n * Whether or not we can show the delete the button for this rule.\n *\n * @type {boolean}\n */\n @alias('hasBAAWritePermission')\n canDelete;\n\n /**\n * The translation key for the description of this type of rule.\n * Note: This should usually be the same as the ruleTypeKey.\n *\n * @type {string}\n */\n @computed('ruleTypeKey')\n get ruleTypeDescriptionKey() {\n return this.ruleTypeKey;\n }\n\n /**\n * Whether or not the whole slot should be clickable to link to the edit page.\n *\n * @returns {boolean}\n */\n @computed('isNew', 'isDisabled')\n get slotLinksToEditPage() {\n return this.isNew && !this.isDisabled;\n }\n\n /**\n * The css class for this slot row.\n *\n * @returns {string}\n */\n @computed('isDisabled', 'slotLinksToEditPage')\n get cssClass() {\n const cssClasses = ['slot'];\n\n if (this.isDisabled) {\n cssClasses.push('disabled');\n }\n\n if (this.slotLinksToEditPage) {\n cssClasses.push('hover-shadow');\n cssClasses.push('edit-button');\n }\n\n return cssClasses.join(' ');\n }\n\n /**\n * List of strings representing the user-defined metrics for this rule, if any.\n *\n * @returns {Array|undefined}\n */\n @computed()\n get ruleMetrics() {\n return undefined;\n }\n\n /**\n * A single, compact string containing all thresholds of both types.\n *\n * @returns {string|undefined}\n */\n @computed()\n get compactMetrics() {\n return undefined;\n }\n\n /**\n * Gets the text to display in an empty rule slot.\n *\n * @returns {*}\n */\n @computed()\n get addRuleText() {\n return this.intl.t('components.video.advanced-analytics.device-rule-slots.addRule');\n }\n\n /**\n * Returns an array of snapshot urls for the rules in this rule group.\n * If this is not a rule group or if there are no rules in the group, then it returns an empty array instead.\n *\n * @returns {Array}\n */\n @computed('rule.rules', 'supportsSnapshotGroups')\n get groupSnapshotUrls() {\n if (!this.supportsSnapshotGroups || !this.rule.rules) {\n return [];\n }\n\n return this.rule.rules.slice(0, 4).mapBy('snapshot.snapshotUrl');\n }\n\n // endregion\n\n // region Computed properties\n\n /**\n * The name of this type of rule.\n *\n * @returns {string}\n */\n @computed('ruleTypeKey')\n get ruleTypeText() {\n return this.intl.t(`video.business-activity-analytics.rule-list.${this.ruleTypeKey}`);\n }\n\n /**\n * The description of this type of rule.\n *\n * @type {string}\n */\n @computed('isNew', 'ruleTypeDescriptionKey')\n get ruleTypeDescription() {\n return this.intl.t(\n `components.video.advanced-analytics.device-rule-slots.helper-objects.${\n this.ruleTypeDescriptionKey\n }Description${this.isNew ? 'New' : ''}`\n );\n }\n\n /**\n * Whether or not this rule slot should be disabled because the max ammount of rules of this type have already been made.\n *\n * @type {boolean}\n */\n @and('cameraAlreadyHasRuleOfType', 'cameraOnlySupportsOneRuleOfType')\n ruleTypeLimitReached;\n\n /**\n * Whether or not this rule slot should be disabled.\n *\n * @returns {boolean}\n */\n @computed('isNew', 'isSupported', 'ruleTypeLimitReached')\n get isDisabled() {\n return this.isNew && (!this.isSupported || this.ruleTypeLimitReached);\n }\n\n /**\n * Whether or not the rule type represented by this slot is still in development.\n *\n * @returns {boolean}\n */\n @computed('isNew', 'isSupported')\n get isInDevelopment() {\n return this.isNew && !this.isSupported;\n }\n\n /**\n * The text to display if the max count of this rule type has already been exceeded.\n *\n * @returns {string|undefined}\n */\n @computed('ruleTypeLimitReached', 'ruleTypeText', 'isNew')\n get maxRuleCountText() {\n if (!this.ruleTypeLimitReached || !this.isNew) {\n return undefined;\n }\n\n // If cameras only support one of this rule type (currently only applies to heat maps), then give that message.\n return this.intl.t(\n 'components.video.advanced-analytics.device-rule-slots.helper-objects.onlyOneRuleOfTypeSupported',\n { ruleType: this.ruleTypeText.toLowerCase() }\n );\n }\n\n /**\n * The path to the appropriate image for this slot type.\n *\n * @returns {string|undefined}\n */\n @computed('imageName')\n get imageSource() {\n return this.imageName\n ? this.contextManager.getStaticResourcePath(`images/video/rules/ovready/${this.imageName}.svg`)\n : undefined;\n }\n\n /**\n * Whether or not the current login context has permission to transition to the edit page\n * for this rule.\n *\n * @returns {boolean}\n */\n @computed('ruleEditRoute')\n get canEdit() {\n // Do not copy this deprecated usage. If you see this, please fix it\n // eslint-disable-next-line @adc/ember/no-context-manager-get-route\n return !!this.contextManager.getRouteItem(this.ruleEditRoute);\n }\n\n // endregion\n}\n","import { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { BusinessOccupancy } from 'customer-site/enums/OvlRuleType';\nimport BaseRuleSlot from './base-rule-slot';\n\n/**\n * @classdesc\n * An object containing all the information for a single business occupancy rule slot on an OVReady device.\n *\n * @class components.video.advanced-analytics.device-rule-slots.helper-objects.BusinessOccupancyRuleSlot\n * @extends components.video.advanced-analytics.device-rule-slots.helper-objects.BaseRuleSlot\n */\nexport default class BusinessOccupancyRuleSlot extends BaseRuleSlot {\n @service intl;\n\n /** @override */\n imageName = 'occupancy-and-people-counting';\n\n /** @override */\n ruleType = BusinessOccupancy;\n\n /** @override */\n ruleTypeKey = 'occupancyAndPeopleCounting';\n\n /**\n * All the non-zero Occupancy thresholds on the rule.\n *\n * @returns {number[]}\n */\n @computed('rule.maximumOccupancies')\n get activeOccupancyThresholds() {\n return this.rule.maximumOccupancies.filter((occupancy) => occupancy);\n }\n\n /** @override */\n @computed('activeOccupancyThresholds')\n get ruleMetrics() {\n const { activeOccupancyThresholds } = this;\n\n return activeOccupancyThresholds.length\n ? [\n this.intl.t('components.video.advanced-analytics.device-rule-slots.helper-objects.storeCapacity', {\n capacity: this.concatenateList(activeOccupancyThresholds),\n count: activeOccupancyThresholds.length\n })\n ]\n : undefined;\n }\n\n /** @override */\n @computed('activeOccupancyThresholds')\n get compactMetrics() {\n const { activeOccupancyThresholds } = this;\n\n return activeOccupancyThresholds.length\n ? this.intl.t('components.video.advanced-analytics.device-rule-slots.helper-objects.thresholds', {\n threshold: this.concatenateList(activeOccupancyThresholds),\n count: activeOccupancyThresholds.length\n })\n : undefined;\n }\n}\n","import { computed } from '@ember/object';\nimport { EmberVideoBusinessActivityAnalyticsRuleGroup } from 'customer-site/enums/CustomerPageUrl';\nimport BusinessOccupancyRuleSlot from './business-occupancy-rule-slot';\n\n/**\n * @classdesc\n * An object containing all the information for a business occupancy rule group slot.\n */\nexport default class BusinessOccupancyRuleGroupSlot extends BusinessOccupancyRuleSlot {\n /** @override */\n supportsSnapshotGroups = true;\n\n /** @override */\n ruleEditRoute = EmberVideoBusinessActivityAnalyticsRuleGroup;\n\n /** @override */\n @computed('rule.thresholds')\n get activeOccupancyThresholds() {\n return this.rule.thresholds.filter((threshold) => threshold);\n }\n}\n","import { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { CrowdGathering } from 'customer-site/enums/OvlRuleType';\nimport BaseRuleSlot from './base-rule-slot';\n\n/**\n * @classdesc\n * An object containing all the information for a single crowd gathering rule slot on an OVReady device.\n *\n * @class components.video.advanced-analytics.device-rule-slots.helper-objects.CrowdGatheringRuleSlot\n * @extends components.video.advanced-analytics.device-rule-slots.helper-objects.BaseRuleSlot\n */\nexport default class CrowdGatheringRuleSlot extends BaseRuleSlot {\n @service intl;\n\n /** @override */\n imageName = 'crowd-gathering';\n\n /** @override */\n ruleType = CrowdGathering;\n\n /** @override */\n ruleTypeKey = 'crowdGathering';\n\n /**\n * All the non-zero Crowd Size thresholds on the rule.\n *\n * @returns {number[]}\n */\n @computed('rule.maximumCrowdSizes')\n get activeCrowdSizeThresholds() {\n return this.rule.maximumCrowdSizes.filter((crowdSize) => crowdSize);\n }\n\n /** @override */\n @computed('activeCrowdSizeThresholds')\n get ruleMetrics() {\n const { activeCrowdSizeThresholds } = this;\n\n return activeCrowdSizeThresholds.length\n ? [\n this.intl.t('components.video.advanced-analytics.device-rule-slots.helper-objects.maxCrowdSize', {\n capacity: this.concatenateList(activeCrowdSizeThresholds),\n count: activeCrowdSizeThresholds.length\n })\n ]\n : undefined;\n }\n\n /** @override */\n @computed('activeCrowdSizeThresholds')\n get compactMetrics() {\n const { activeCrowdSizeThresholds } = this;\n\n return activeCrowdSizeThresholds.length\n ? this.intl.t('components.video.advanced-analytics.device-rule-slots.helper-objects.thresholds', {\n threshold: this.concatenateList(activeCrowdSizeThresholds),\n count: activeCrowdSizeThresholds.length\n })\n : undefined;\n }\n}\n","import { computed } from '@ember/object';\nimport { alias, not } from '@ember/object/computed';\nimport BaseRuleSlot from './base-rule-slot';\n\n/**\n * @classdesc\n * An object representing an empty rule slot on an OVReady device.\n *\n * @class components.video.advanced-analytics.device-rule-slots.helper-objects.EmptyRuleSlot\n * @extends components.video.advanced-analytics.device-rule-slots.helper-objects.BaseRuleSlot\n */\nexport default class EmptyRuleSlot extends BaseRuleSlot {\n /** @override */\n @alias('canEdit')\n slotLinksToEditPage;\n\n /** @override */\n @not('canEdit')\n isDisabled;\n\n /** @override */\n @computed('isDisabled', 'slotLinksToEditPage')\n get cssClass() {\n return super.cssClass + ' empty';\n }\n}\n","import { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { EmberVideoBusinessActivityAnalyticsRuleGroup } from 'customer-site/enums/CustomerPageUrl';\nimport EmptyRuleSlot from './empty-rule-slot';\n\n/**\n * @classdesc\n * An object representing an empty rule group slot.\n */\nexport default class EmptyRuleGroupSlot extends EmptyRuleSlot {\n @service intl;\n\n /** @override */\n ruleEditRoute = EmberVideoBusinessActivityAnalyticsRuleGroup;\n\n /** @override */\n @computed()\n get addRuleText() {\n return this.intl.t('components.video.advanced-analytics.device-rule-slots.addRuleGroup');\n }\n}\n","import { computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { EmberOvReadyRuleDraw } from 'customer-site/enums/CustomerPageUrl';\nimport BaseRuleSlot from './base-rule-slot';\n\n/**\n * @classdesc\n * Base class for a single Object Detection rule slot on an OVReady device.\n *\n * @class components.video.advanced-analytics.device-rule-slots.helper-objects.BaseObjectDetectionRuleSlot\n * @extends components.video.advanced-analytics.device-rule-slots.helper-objects.BaseRuleSlot\n */\nexport default class BaseObjectDetectionRuleSlot extends BaseRuleSlot {\n /** @override */\n @computed('ruleTypeKey')\n get ruleTypeDescriptionKey() {\n return 'objectDetection';\n }\n\n /** @override */\n @alias('hasRecordingRulesWritePermission')\n canDelete;\n\n /** @override */\n supportsSnapshots = false;\n\n /** @override */\n ruleEditRoute = EmberOvReadyRuleDraw;\n}\n","import { LineCount } from 'customer-site/enums/OvlRuleType';\nimport BaseRuleSlot from './base-rule-slot';\n\n/**\n * @classdesc\n * An object containing all the information for a single people counting rule slot on an OVReady device.\n *\n * @class components.video.advanced-analytics.device-rule-slots.helper-objects.PeopleCountingRuleSlot\n * @extends components.video.advanced-analytics.device-rule-slots.helper-objects.BaseRuleSlot\n */\nexport default class PeopleCountingRuleSlot extends BaseRuleSlot {\n /** @override */\n imageName = 'people-counting';\n\n /** @override */\n ruleType = LineCount;\n\n /** @override */\n ruleTypeKey = 'peopleCounting';\n}\n","import { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\nimport { LineMonitor } from 'customer-site/enums/OvlRuleType';\nimport BaseRuleSlot from './base-rule-slot';\n\n/**\n * @classdesc\n * An object containing all the information for a single queue monitoring rule slot on an OVReady device.\n *\n * @class components.video.advanced-analytics.device-rule-slots.helper-objects.QueueMonitoringRuleSlot\n * @extends components.video.advanced-analytics.device-rule-slots.helper-objects.BaseRuleSlot\n */\nexport default class QueueMonitoringRuleSlot extends BaseRuleSlot {\n @service intl;\n\n /** @override */\n imageName = 'queue-monitoring';\n\n /** @override */\n ruleType = LineMonitor;\n\n /** @override */\n ruleTypeKey = 'queueMonitoring';\n\n /**\n * All the non-zero Queue Size thresholds on the rule.\n *\n * @returns {number[]}\n */\n @computed('rule.maxQueueSizes')\n get activeQueueSizeThresholds() {\n return this.rule.maxQueueSizes.filter((queueSize) => queueSize);\n }\n\n /**\n * All the non-zero Wait Time thresholds on the rule.\n *\n * @returns {number[]}\n */\n @computed('rule.maxWaitTimes')\n get activeWaitTimeThresholds() {\n return this.rule.maxWaitTimes.filter((waitTime) => waitTime);\n }\n\n /** @override */\n @computed('activeQueueSizeThresholds', 'activeWaitTimeThresholds')\n get ruleMetrics() {\n const { activeQueueSizeThresholds, activeWaitTimeThresholds } = this;\n\n const metrics = [];\n\n if (activeQueueSizeThresholds.length) {\n metrics.push(\n this.intl.t('components.video.advanced-analytics.device-rule-slots.helper-objects.peopleCount', {\n numPeople: this.concatenateList(activeQueueSizeThresholds),\n count: activeQueueSizeThresholds.length\n })\n );\n }\n\n if (activeWaitTimeThresholds.length) {\n const minutes = activeWaitTimeThresholds.map((ms) => this.intl.t('generic.minutes', { num: ms / 60 }));\n metrics.push(\n this.intl.t('components.video.advanced-analytics.device-rule-slots.helper-objects.waitTime', {\n waitTime: this.concatenateList(minutes),\n count: activeWaitTimeThresholds.length\n })\n );\n }\n\n return isEmpty(metrics) ? undefined : metrics;\n }\n\n /** @override */\n @computed('activeCrowdSizeThresholds', 'activeWaitTimeThresholds')\n get compactMetrics() {\n const { activeQueueSizeThresholds, activeWaitTimeThresholds } = this,\n queueSizesString = this.concatenateList(activeQueueSizeThresholds),\n waitTimesString = this.concatenateList(\n activeWaitTimeThresholds.map((ms) => this.intl.t('generic.minutesShort', { num: ms / 60 }))\n ),\n allThresholds = [queueSizesString, waitTimesString].filter((string) => string.length),\n allThresholdsString = allThresholds.join(', ');\n\n return allThresholdsString.length\n ? this.intl.t('components.video.advanced-analytics.device-rule-slots.helper-objects.thresholds', {\n threshold: allThresholdsString,\n count: activeQueueSizeThresholds.length + activeWaitTimeThresholds.length\n })\n : undefined;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n

{{@separatorText}}

\\n
\\n
\",{ moduleName: \"customer-site/components/ui/separator-text/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport templateOnlyComponent from '@ember/component/template-only';\n\nimport './_style.scss';\n\nexport interface UiSeparatorTextSignature {\n Args: {\n separatorText: string;\n };\n}\n\nconst UiSeparatorText = templateOnlyComponent();\nexport default UiSeparatorText;\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Ui::SeparatorText': typeof UiSeparatorText;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n

{{t \\'generic.comingSoon\\'}}

\\n
\",{ moduleName: \"customer-site/components/ui/coming-soon/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport templateOnlyComponent from '@ember/component/template-only';\n\nimport './_style.scss';\n\nexport interface ComingSoonSignature {}\n\nconst ComingSoon = templateOnlyComponent();\nexport default ComingSoon;\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Ui::ComingSoon': typeof ComingSoon;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n

{{@slot.rule.name}}

\\n
\\n

{{@slot.ruleTypeText}}

\\n {{#each @slot.ruleMetrics as |metric|}}\\n

{{metric}}

\\n {{/each}}\\n
\\n

\\n {{@slot.ruleTypeDescription}}\\n

\\n
\\n\",{ moduleName: \"customer-site/components/video/advanced-analytics/rule-description/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport templateOnlyComponent from '@ember/component/template-only';\n\nimport './_style.scss';\n\nexport interface VideoAdvancedAnalyticsRuleDescriptionSignature {\n Element: HTMLDivElement;\n Args: {\n slot: {\n rule: {\n name: string;\n };\n ruleTypeText: string;\n ruleTypeDescription: string;\n ruleMetrics: string[];\n };\n };\n}\n\nconst VideoAdvancedAnalyticsRuleDescription = templateOnlyComponent();\nexport default VideoAdvancedAnalyticsRuleDescription;\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Video::AdvancedAnalytics::RuleDescription': typeof VideoAdvancedAnalyticsRuleDescription;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n {{#each @imageSources as |snapshotUrl idx|}}\\n \\n {{/each}}\\n
\\n\",{ moduleName: \"customer-site/components/ui/images/state-image-collection/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport templateOnlyComponent from '@ember/component/template-only';\n\nimport './_style.scss';\n\nexport interface StateImageCollectionSignature {\n Element: HTMLDivElement;\n Args: {\n altText: string;\n imageSources: string[];\n isSelected?: boolean;\n isSelectable: boolean;\n showEntireImage: boolean;\n onClickFn: (idx: number) => void;\n snapshotCssClass?: string;\n };\n}\n\nconst StateImageCollection = templateOnlyComponent();\nexport default StateImageCollection;\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Ui::Images::StateImageCollection': typeof StateImageCollection;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n {{#unless this.creatingNew}}\\n {{#if this.isRuleGroupPage}}\\n \\n {{else}}\\n \\n {{/if}}\\n {{/unless}}\\n\\n {{#each (await this.slotCategories) as |slotCategory|}}\\n
\\n {{#if slotCategory.title}}\\n

{{t slotCategory.title}}

\\n {{/if}}\\n\\n {{#each slotCategory.slots as |slot|}}\\n \\n {{#if slot.maxRuleCountText}}\\n
\\n

{{slot.maxRuleCountText}}

\\n
\\n {{/if}}\\n\\n
\\n {{#if this.creatingNew}}\\n
\\n {{slot.ruleTypeText}}\\n
\\n
\\n

{{slot.ruleTypeText}}

\\n

{{slot.ruleTypeDescription}}

\\n {{#if slot.isInDevelopment}}\\n \\n {{/if}}\\n
\\n {{else}}\\n {{#if slot.rule}}\\n
\\n {{slot.ruleTypeText}}\\n
\\n \\n {{#if slot.supportsSnapshots}}\\n
\\n {{#if slot.supportsSnapshotGroups}}\\n \\n {{else}}\\n \\n {{/if}}\\n

{{tc this \\'currentRuleSnapshot\\'}}

\\n
\\n {{/if}}\\n {{#if slot.canEdit}}\\n \\n {{/if}}\\n {{#if slot.canDelete}}\\n \\n {{/if}}\\n {{else}}\\n \\n

{{slot.addRuleText}}

\\n {{/if}}\\n {{/if}}\\n
\\n \\n {{/each}}\\n
\\n {{/each}}\\n
\\n\",{ moduleName: \"customer-site/components/video/advanced-analytics/device-rule-slots/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { computed, action } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\nimport CameraSnapshotDetail from 'customer-site/components/modals/video/camera-snapshot-detail/index';\nimport { AnyDirection } from 'customer-site/enums/TripwireDirection';\nimport { intlPath } from '@adc/i18n/path';\nimport {\n LineMonitor,\n LineCount,\n Heatmap,\n BusinessOccupancy,\n GroundZone,\n Tripwire,\n CrowdGathering\n} from '../../../../enums/OvlRuleType';\nimport BaseRuleSlot from './helper-objects/base-rule-slot';\nimport BusinessOccupancyRuleGroupSlot from './helper-objects/business-occupancy-rule-group-slot';\nimport BusinessOccupancyRuleSlot from './helper-objects/business-occupancy-rule-slot';\nimport CrowdGatheringRuleSlot from './helper-objects/crowd-gathering-rule-slot';\nimport EmptyRuleGroupSlot from './helper-objects/empty-rule-group-slot';\nimport EmptyRuleSlot from './helper-objects/empty-rule-slot';\nimport HeatMapRuleSlot from './helper-objects/heat-map-rule-slot';\nimport ObjectDetectionGroundZoneRuleSlot from './helper-objects/object-detection-ground-zone-rule-slot';\nimport ObjectDetectionTripwireRuleSlot from './helper-objects/object-detection-tripwire-rule-slot';\nimport PeopleCountingRuleGroupSlot from './helper-objects/people-counting-rule-group-slot';\nimport PeopleCountingRuleSlot from './helper-objects/people-counting-rule-slot';\nimport QueueMonitoringRuleSlot from './helper-objects/queue-monitoring-rule-slot';\n\nimport './_style.scss';\n\n/**\n * Maps rule type enums to rule slot classes.\n *\n * @type {object}\n */\nexport const ruleTypesToSlotTypes = {\n [LineMonitor]: QueueMonitoringRuleSlot,\n [LineCount]: PeopleCountingRuleSlot,\n [Heatmap]: HeatMapRuleSlot,\n [BusinessOccupancy]: BusinessOccupancyRuleSlot,\n [CrowdGathering]: CrowdGatheringRuleSlot,\n [GroundZone]: ObjectDetectionGroundZoneRuleSlot,\n [Tripwire]: ObjectDetectionTripwireRuleSlot\n};\n\n/**\n * Maps rule type enums to rule group slot classes.\n *\n * @type {object}\n */\nexport const ruleGroupTypesToSlotTypes = {\n [BusinessOccupancy]: BusinessOccupancyRuleGroupSlot,\n [LineCount]: PeopleCountingRuleGroupSlot\n};\n\n/**\n * Maps the rule types to the categories they are displayed in when creating new rules.\n *\n * @type {object}\n * @private\n * @memberOf components.video.advanced-analytics.DeviceRuleSlots\n */\nconst newRuleCategoriesToRuleTypes = [\n { title: 'heatMapping', ruleTypes: [Heatmap] },\n { title: 'occupancyAndPeopleCounting', ruleTypes: [BusinessOccupancy, LineCount] },\n { title: 'queueAndCrowdMonitoring', ruleTypes: [LineMonitor, CrowdGathering] }\n];\n\n/**\n * Loads a promise list of the rule slots that already exist on the camera (including empty slots).\n *\n * @returns { Promise\n * }>> }\n *\n * @memberOf components.video.advanced-analytics.DeviceRuleSlots\n */\nasync function getExistingRuleSlots() {\n // Force reload all of the snapshots.\n this.rules.forEach((rule) => rule.belongsTo('snapshot').reload());\n\n const rules = await this.rules,\n hasBAAWritePermission = await this.args.hasBAAWritePermission,\n hasRecordingRulesWritePermission = await this.args.hasRecordingRulesWritePermission;\n\n return [\n {\n title: '',\n slots: [1, 2, 3]\n .map((slotNumber) => {\n const rule = rules.find((rule) => rule.id.includes(`_${slotNumber}`));\n\n const ruleSlotType =\n isEmpty(rule) || rule.ruleType === undefined\n ? EmptyRuleSlot\n : ruleTypesToSlotTypes[rule.ruleType] || BaseRuleSlot;\n\n return new ruleSlotType(this, {\n rule,\n slotNumber,\n hasBAAWritePermission,\n hasRecordingRulesWritePermission\n });\n })\n .sort((a, b) => {\n if (a.rule && !b.rule) {\n return -1;\n } else if (!a.rule && b.rule) {\n return 1;\n }\n\n return a.slotNumber - b.slotNumber;\n })\n }\n ];\n}\n\n/**\n * Loads a promise list of the possible rule slots that can be created on the camera.\n *\n * @returns { Promise\n * }>> }\n *\n * @memberOf components.video.advanced-analytics.DeviceRuleSlots\n */\nasync function getNewRuleSlots() {\n // Get the rules.\n const rules = (await this.rules).toArray(),\n isNew = true,\n { supportedRuleTypes } = this.camera;\n\n return newRuleCategoriesToRuleTypes.map((category) => {\n return {\n title: `components.video.advanced-analytics.device-rule-slots.${category.title}`,\n slots: category.ruleTypes.map((ruleType) => {\n const cameraAlreadyHasRuleOfType = rules.some((rule) => rule.ruleType === ruleType),\n ruleSlotType = ruleTypesToSlotTypes[ruleType],\n isSupported = supportedRuleTypes.includes(ruleType);\n\n return new ruleSlotType(this, { isNew, cameraAlreadyHasRuleOfType, isSupported });\n })\n };\n });\n}\n\n/**\n * Loads a promise list of the rule groups that already exist on the unit (including empty slots).\n *\n * @returns {Promise<[{\n * title: string,\n * slots: Array\n * }]>}\n *\n * @memberOf components.video.advanced-analytics.DeviceRuleSlots\n */\nasync function getExistingRuleGroupSlots() {\n const ruleGroups = (await this.args.ruleGroups).filterBy('isNew', false),\n hasBAAWritePermission = await this.args.hasBAAWritePermission,\n hasRecordingRulesWritePermission = await this.args.hasRecordingRulesWritePermission;\n\n // Sort the groups and turn them into slot objects.\n const slots = ruleGroups.sortBy('name').map((ruleGroup, slotNumber) => {\n const ruleSlotType =\n isEmpty(ruleGroup) || ruleGroup.ruleType === undefined\n ? EmptyRuleGroupSlot\n : ruleGroupTypesToSlotTypes[ruleGroup.ruleType] || BaseRuleSlot;\n\n return new ruleSlotType(this, {\n rule: ruleGroup,\n slotNumber,\n hasBAAWritePermission,\n hasRecordingRulesWritePermission\n });\n });\n\n // Always show a single new rule group slot.\n slots.push(new EmptyRuleGroupSlot(this, { slotNumber: slots.length }));\n\n return [{ title: '', slots }];\n}\n\n/**\n * Loads a promise list of the possible rule group slots that can be created on the unit.\n *\n *\n * @returns {Promise<[{\n * title: string,\n * slots: Array\n * }]>}\n *\n * @memberOf components.video.advanced-analytics.DeviceRuleSlots\n */\nasync function getNewRuleGroupSlots() {\n return await (async () => {\n return [\n {\n title: 'components.video.advanced-analytics.device-rule-slots.occupancyAndPeopleCounting',\n slots: [\n new BusinessOccupancyRuleSlot(this, { isNew: true, isSupported: true }),\n new PeopleCountingRuleSlot(this, { isNew: true, isSupported: true })\n ]\n }\n ];\n })();\n}\n\n/**\n * @classdesc\n * Loads and displays the OVReady rule slots for the provided device.\n *\n * @param {models.video.OvReadyCamera} camera The camera for which the slots should be displayed.\n * @param {models.video.OvRule} [newRule] The rule to edit if creating a new rule.\n * @param {boolean} [creatingNew=false] Whether or not the component is creating a new rule.\n */\n@intlPath({ path: 'video/advanced-analytics/device-rule-slots' })\nexport default class DeviceRuleSlots extends Component {\n @service intl;\n @service contextManager;\n @service modals;\n @service router;\n @service store;\n\n // region Aliases\n\n /**\n * Alias to the OVReady camera for this slot.\n *\n * @type {Promise>}\n */\n @alias('args.camera')\n camera;\n\n /**\n * Alias to the flag for the rule group page.\n *\n * @type {boolean}\n */\n @alias('args.isRuleGroupPage')\n isRuleGroupPage;\n\n /**\n * Alias to the OVReady Rule models on the camera.\n *\n * @type {Promise>}\n */\n @alias('camera.ovRules')\n rules;\n\n /**\n * Alias to the rule that is being created, if applicable.\n *\n * @type {Promise>}\n */\n @alias('args.newRule')\n newRule;\n\n /**\n * Alias to the flag for creating new slots.\n *\n * @type {boolean}\n */\n @alias('newRule.creatingNew')\n creatingNew;\n\n // endregion\n\n // region Computed Properties\n\n /**\n * Maps all slots to their slot number. If no rule exists in a slot, the value is undefined at that index.\n *\n * @returns { Promise\n * }>> }\n */\n @computed('camera.supportedRuleTypes.[]', 'creatingNew', 'isRuleGroupPage', 'rules.[]', 'args.ruleGroups.[]')\n get slotCategories() {\n if (this.isRuleGroupPage) {\n return (this.creatingNew ? getNewRuleGroupSlots : getExistingRuleGroupSlots).call(this);\n }\n\n return (this.creatingNew ? getNewRuleSlots : getExistingRuleSlots).call(this);\n }\n\n // endregion\n\n // region Actions\n\n /**\n * Transitions the user to the appropriate edit rule page.\n *\n * @param {components.video.advanced-analytics.device-rule-slots.helper-objects.BaseRuleSlot} slot\n */\n @action\n editRule(slot, shouldTransition) {\n if (shouldTransition) {\n // If we're creating a new rule, then just set the rule type and return.\n if (this.creatingNew) {\n this.newRule.ruleType = slot.ruleType;\n\n // For BO rules, we have to specify the tripwire goes in both directions.\n if (slot.ruleType === BusinessOccupancy) {\n this.newRule.direction = AnyDirection;\n }\n\n return;\n }\n\n // Determine the appropriate rule id.\n const routeId = slot.ruleEditRoute,\n rule = slot.rule,\n ruleId = rule ? rule.id : this.isRuleGroupPage ? 'new' : `${this.camera.id}_${slot.slotNumber}`;\n\n // TODO: This ignore is an existing deprecation that must be refactored, do not copy this usage\n // eslint-disable-next-line @adc/ember/no-context-manager-transition\n this.contextManager.transitionToRouteId(routeId, undefined, undefined, ruleId);\n }\n }\n\n /**\n * Opens a confirmation modal, then deletes the given rule.\n *\n * @param {models.video.OvRule} rule\n */\n @action\n deleteRule(rule) {\n this.modals.showDeleteModal({\n message: this.intl.tc(this, `areYouSure${this.isRuleGroupPage ? 'Group' : ''}`),\n delete: async () => await rule.destroyRecord()\n });\n }\n\n /**\n * Opens a modal to view the snapshot in greater detail when clicking the thumbnail.\n *\n * @param {models.video.OvRuleSnapshot} snapshot\n */\n @action\n showThumbnailDetail(snapshot) {\n this.modals.showModal(CameraSnapshotDetail, { snapshot });\n }\n\n /**\n * Opens a modal to view the snapshot in greater detail when clicking the thumbnail.\n *\n * @param {OvRuleGroup} ruleGroup\n * @param {number} idx\n */\n @action\n async showGroupThumbnailDetail(ruleGroup, idx) {\n const snapshot = await ruleGroup.rules.mapBy('snapshot')[idx];\n this.showThumbnailDetail(snapshot);\n }\n\n // endregion\n}\n","import { Heatmap } from 'customer-site/enums/OvlRuleType';\nimport BaseRuleSlot from './base-rule-slot';\n\n/**\n * @classdesc\n * An object containing all the information for a single heat map rule slot on an OVReady device.\n *\n * @class components.video.advanced-analytics.device-rule-slots.helper-objects.HeatMapRuleSlot\n * @extends components.video.advanced-analytics.device-rule-slots.helper-objects.BaseRuleSlot\n */\nexport default class HeatMapRuleSlot extends BaseRuleSlot {\n /** @override */\n imageName = 'heat-mapping';\n\n /** @override */\n ruleType = Heatmap;\n\n /** @override */\n ruleTypeKey = 'heatMapping';\n\n /** @override */\n cameraOnlySupportsOneRuleOfType = true;\n}\n","import { GroundZone } from 'customer-site/enums/OvlRuleType';\nimport BaseObjectDetectionRuleSlot from './base-object-detection-rule-slot';\n\n/**\n * @classdesc\n * An object containing basic information for a single Object Detection (Ground Zone) rule slot on an OVReady device.\n *\n * @class components.video.advanced-analytics.device-rule-slots.helper-objects.ObjectDetectionGroundZoneRuleSlot\n * @extends components.video.advanced-analytics.device-rule-slots.helper-objects.BaseObjectDetectionRuleSlot\n */\nexport default class ObjectDetectionGroundZoneRuleSlot extends BaseObjectDetectionRuleSlot {\n /** @override */\n imageName = 'ground-zone';\n\n /** @override */\n ruleType = GroundZone;\n\n /** @override */\n ruleTypeKey = 'objectDetectionGroundZone';\n}\n","import { Tripwire } from 'customer-site/enums/OvlRuleType';\nimport BaseObjectDetectionRuleSlot from './base-object-detection-rule-slot';\n\n/**\n * @classdesc\n * An object containing basic information for a single Object Detection (Tripwire) rule slot on an OVReady device.\n *\n * @class components.video.advanced-analytics.device-rule-slots.helper-objects.ObjectDetectionTripwireRuleSlot\n * @extends components.video.advanced-analytics.device-rule-slots.helper-objects.BaseObjectDetectionRuleSlot\n */\nexport default class ObjectDetectionTripwireRuleSlot extends BaseObjectDetectionRuleSlot {\n /** @override */\n imageName = 'trip-wire';\n\n /** @override */\n ruleType = Tripwire;\n\n /** @override */\n ruleTypeKey = 'objectDetectionTripwire';\n}\n","import { EmberVideoBusinessActivityAnalyticsRuleGroup } from 'customer-site/enums/CustomerPageUrl';\nimport PeopleCountingRuleSlot from './people-counting-rule-slot';\n\n/**\n * @classdesc\n * An object containing all the information for a people counting rule group slot.\n */\nexport default class PeopleCountingRuleGroupSlot extends PeopleCountingRuleSlot {\n /** @override */\n supportsSnapshotGroups = true;\n\n /** @override */\n ruleEditRoute = EmberVideoBusinessActivityAnalyticsRuleGroup;\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n {{#if this.showBackgroundIcon}}\\n \\n {{/if}}\\n \\n
\\n\",{ moduleName: \"customer-site/components/wifi/signal-strength-icon/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { NoSignal, Poor, Good, Excellent, Unknown } from '../../../enums/SignalStrength';\n\nimport type { SignalStrength } from '../../../enums/SignalStrength';\nimport './_style.scss';\nimport type { SvgSymbolSignature } from '@adc/svg-system/components/svg-symbol';\n\ntype Color = SvgSymbolSignature['Args']['fillColor'];\ninterface SignalStrengthIconSignature {\n Element: HTMLDivElement;\n Args: {\n signalStrength: SignalStrength;\n };\n}\n\n/**\n * @classdesc\n * Component to display an icon representing wireless signal strength\n */\nexport default class SignalStrengthIcon extends Component {\n get showBackgroundIcon(): boolean {\n return this.args.signalStrength !== NoSignal && this.args.signalStrength !== Unknown;\n }\n\n get icon(): string {\n switch (this.args.signalStrength) {\n case Poor:\n return 'wifi-weak';\n case Good:\n return 'wifi-good';\n case Excellent:\n return 'wifi';\n default:\n return 'wifi-off';\n }\n }\n\n get color(): Color {\n switch (this.args.signalStrength) {\n case Poor:\n return 'red';\n case Good:\n case Excellent:\n return 'green';\n default:\n return 'gray-60';\n }\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Wifi::SignalStrengthIcon': typeof SignalStrengthIcon;\n }\n}\n"],"names":["createTemplateFactory","scope","highchartsSimpleChart_","HighchartsAccessibleChart","_class","Component","accessibleChart","merge","highchartsOptions","chart","accessibility","enabled","this","args","loadAdditionalModules","then","module","_this$args$onHighchar","_this$args$onHighchar2","_this$args","onHighchartsImported","call","Promise","resolve","default","_applyDecoratedDescriptor","prototype","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE","modalsDialogModalsSimpleSimpleDialog_","t_","await_","uiImagesStateImage_","CameraSnapshotDetailModal","templateOnlyComponent","BaseRuleSlot","_dec","alias","_dec2","computed","_dec3","_dec4","_dec5","_dec6","_dec7","_dec8","_dec9","_dec10","_dec11","and","_dec12","_dec13","_dec14","_dec15","_dec16","ContainerObject","constructor","host","_ref","rule","slotNumber","isNew","cameraAlreadyHasRuleOfType","isSupported","hasBAAWritePermission","hasRecordingRulesWritePermission","super","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","_descriptor4","_descriptor5","_descriptor6","_descriptor7","_defineProperty","EmberVideoBusinessActivityAnalyticsRule","_descriptor8","_descriptor9","set","concatenateList","list","concatenatedList","toString","i","length","intl","t","item1","item2","ruleTypeDescriptionKey","ruleTypeKey","slotLinksToEditPage","isDisabled","cssClass","cssClasses","push","join","ruleMetrics","compactMetrics","addRuleText","groupSnapshotUrls","supportsSnapshotGroups","rules","slice","mapBy","ruleTypeText","concat","ruleTypeDescription","ruleTypeLimitReached","isInDevelopment","maxRuleCountText","ruleType","toLowerCase","imageSource","imageName","contextManager","getStaticResourcePath","undefined","canEdit","getRouteItem","ruleEditRoute","service","configurable","enumerable","writable","initializer","tracked","BusinessOccupancyRuleSlot","arguments","BusinessOccupancy","activeOccupancyThresholds","maximumOccupancies","filter","occupancy","capacity","count","threshold","BusinessOccupancyRuleGroupSlot","EmberVideoBusinessActivityAnalyticsRuleGroup","thresholds","CrowdGatheringRuleSlot","CrowdGathering","activeCrowdSizeThresholds","maximumCrowdSizes","crowdSize","EmptyRuleSlot","not","EmptyRuleGroupSlot","BaseObjectDetectionRuleSlot","EmberOvReadyRuleDraw","PeopleCountingRuleSlot","LineCount","QueueMonitoringRuleSlot","LineMonitor","activeQueueSizeThresholds","maxQueueSizes","queueSize","activeWaitTimeThresholds","maxWaitTimes","waitTime","metrics","numPeople","minutes","map","ms","num","isEmpty","allThresholdsString","string","UiSeparatorText","ComingSoon","VideoAdvancedAnalyticsRuleDescription","on","fn","StateImageCollection","uiSeparatorText_","tc_","listRowItem_","uiComingSoon_","videoAdvancedAnalyticsRuleDescription_","uiImagesStateImageCollection_","tc_0","buttonIcon_","t_0","svgSymbol_","ruleTypesToSlotTypes","Heatmap","GroundZone","Tripwire","ruleGroupTypesToSlotTypes","newRuleCategoriesToRuleTypes","title","ruleTypes","async","getExistingRuleSlots","forEach","belongsTo","reload","slots","find","id","includes","sort","a","b","getNewRuleSlots","toArray","supportedRuleTypes","camera","category","some","ruleSlotType","getExistingRuleGroupSlots","ruleGroups","filterBy","sortBy","ruleGroup","getNewRuleGroupSlots","DeviceRuleSlots","intlPath","path","_class2","_descriptor10","slotCategories","isRuleGroupPage","creatingNew","editRule","slot","shouldTransition","newRule","direction","AnyDirection","routeId","ruleId","transitionToRouteId","deleteRule","modals","showDeleteModal","message","tc","delete","destroyRecord","showThumbnailDetail","snapshot","showModal","CameraSnapshotDetail","showGroupThumbnailDetail","idx","SignalStrengthIcon","showBackgroundIcon","signalStrength","NoSignal","Unknown","icon","Poor","Good","Excellent","color"],"sourceRoot":""}